User
Pass
2FA
 
 

Numar prim

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Freakz Forum Index -> Trash Bin -> Trash -> Programming / Scripting / Database
Author Message1690
MoNNsterFTW

[Mentally Stable]



Status: Offline
(since 23-10-2016 18:32)
Joined: 09 Apr 2015
Posts: 21, Topics: 5
Location: Romania

Reputation: 35.7
Votes: 1

Post Posted: 28-01-2016, 18:56:18 | Translate post to: ... (Click for more languages)

Salut,sunt pe clasa a 9a si am inceput c++ in scoala,am facut pseudocod si schema logica pe semestrul I,m-am mai interesat si am incercat sa fac un program despre aflarea unui numar prin,insa orice numar as introduce imi scrie ca numarul este prim... Am gasit 2 probleme: 1. cica: cannot open output file .......\Program 2.exe Permission denied,inainte sa pun si cout << s << p,a mers,dar a 2. problema este ca orice numar introduceam zicea ca e prim...

Enuntul problemei este: Se ciste un numar natural n. Sa se calculeze si sa se afiseze suma si produsul cifrelor sale impare. Sa se verifice daca aceasta ste numar prim.

#include<iostream>
#include<cmath>

using namespace std;

int main()
{
bool x;
int n, c, a ,s ,i ,p;
cin >> n;
s = 0;
p =1;
while (n!=0)
{

c=n%10;
if (c%2!=0)
{
s = s+n;
p = p*n;
cout << "Suma este: " << s << "Produsul este: " << p;
}
n=n/10;
}
x=1;
i=2;
while (i<=sqrt(s) && x==1)
{
if (s%i==0)
{
x=0;
}
else
{
i=i+1;
}
}
if (x=1)
{
cout << "Numarul este prim";
}
else
{
cout << "Numarul nu este prim";
}

return 0;
}

0 0
  
Back to top
View user's profile Send private message
mayavin

[Future World]



Status: Offline
(since 23-06-2018 15:49)
Joined: 08 Mar 2012
Posts: 3033, Topics: 173
Location: Cluj-Napoca

Reputation: 119.8
Votes: 48

Post Posted: 29-01-2016, 04:58:16 | Translate post to: ... (Click for more languages)

In primul while, dupa if, trebuia sa fie
Code:

s=s+c;
p=p*c;

pentru ca tu aduni/faci produsul cu cifra nu cu numarul initial n (cum ai scris tu) - conform cerintei.

Code:

cout << "Suma este: " << s << "Produsul este: " << p;

Partea asta ar trebui sa o pui dupa while, nu in el, pentru a-ti afisa corect suma/produsul (adica dupa ce termina de calculat).

Vad ca tu faci verificarea de numar prim doar pentru s, nu si pentru p. Iar dupa ce faci verificarea ai scris if(x=1), ar trebui sa fie if(x==1).

Ai o variabila 'a' declarata pe care nu o folosesti (deci poti sa o stergi).

Ai niste paranteze inutile. Daca dupa o conditie urmeaza o singura instructiune, atunci acoladele nu sunt necesare.

In legatura cu problema "cannot open output file... etc", s-ar putea ca programul sa-ti mai ruleze in fundal. Asigura-te ca programul nu ruleaza. Eventual inchizi si redeschizi codeblocks, sau ce IDE folosesti tu.

Un alt lucru pe care il observ este faptul ca exista si caz particulat pentru care algoritmul tau de verificare numar prim nu functioneaza. Daca sa zicem numarul e s=1. Atunci programul iti va afisa ca este numar prim, pentru ca nici nu intra in while si trece direct la if(x==1) unde rezultatul este adevarat, pentru ca tu ai declarat x=1 inainte de while. Trebuie tratat acest caz. Un mod ar fi de a pune un
Code:

if(s<2)
   x=0;

inainte de verificarea pentru numar prim.

Ti-as mai atrage atentia si asupra indentarii. Este foarte important cand scrii cod, sa fie indentat pentru a fi usor de citit si inteles atat de tine cat si de altii.

Nu am rulat programul, cam astea sunt lucurile pe care le vad la prima vedere la 5 dimineata.
Bafta.

0 0
  
Back to top
View user's profile Send private message
MoNNsterFTW

[Mentally Stable]



Status: Offline
(since 23-10-2016 18:32)
Joined: 09 Apr 2015
Posts: 21, Topics: 5
Location: Romania

Reputation: 35.7
Votes: 1

Post Posted: 29-01-2016, 15:37:25 | Translate post to: ... (Click for more languages)

Mersi frumos a mers,stiu ca am facut totul aiurea,dar asa am gandit eu ca ar fi fost bine,cred ca faza asta cu == e la fel ca si in pseudocod = si ia valoarea(<--).
0 0
  
Back to top
View user's profile Send private message
mayavin

[Future World]



Status: Offline
(since 23-06-2018 15:49)
Joined: 08 Mar 2012
Posts: 3033, Topics: 173
Location: Cluj-Napoca

Reputation: 119.8
Votes: 48

Post Posted: 29-01-2016, 16:02:20 | Translate post to: ... (Click for more languages)

In interiorul unei conditii intotdeauna trebuie == (verifici egalitatea), iar la atribuiri doar un singur =.
0 0
  
Back to top
View user's profile Send private message
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Freakz Forum Index -> Trash Bin -> Trash -> Programming / Scripting / Database  


The time now is 29-03-2024, 07:12:35
Copyright info

Based on phpBB ro/com
B

 
 
 







I forgot my password


This message appears only once, so
like us now until it's too late ! :D
x