Informatică, întrebare adresată de cosinusde30, 8 ani în urmă

Îmi puteți spune ce nu este corect la codul dela următoarea problemă? Vă roooooog!

Cerința

Să se scrie un program care citeşte cel mult 1.000.000 de numere naturale din intervalul închis [0,9] şi determină cel mai mare număr prim citit şi numărul său de apariții.


Date de intrare

Fișierul de intrare ciffrecv.in conţine cel mult 1.000.000 numere naturale din intervalul închis [0,9], dispuse pe mai multe linii şi separate prin spaţii.


Date de ieşire

Fişierul de ieşire ciffrecv.out va conţine pe prima linie două numere naturale MAX şi NR_AP, cu semnificaţia din enunţ.


Restricţii şi precizări

fişierul de intrare va conţine cel puţin un număr prim.




#include


#include


using namespace std;


int prim(int n)

{

int d;

if(n<2)

return 0;

for(d=2;d*d<=n;d++)

if(n%d==0)

return 0;

return 1;

}


int main()

{

int fr[10]={},n,i,x;

ifstream in("ciffrecv.in");

ofstream out("ciffrecv.out");

in>>n;

for(i=1;i<=n;i++)

{

in>>x;

fr[x]++;

}

for(i=7;i>=2;i--)

if(fr[i]!=0)

if(prim(i)==1)

{

out< i=2;

}

}


Porecla0987: In mare parte tot. Ce ai scris tu se numeste "spaghetti code". Pe langa ca este ingrozitor de citit (nume de variabile de o litera si complicatii aiurea), mai este si FOARTE ineficient. Problema ta o rezolvi cu un array de 10 initializat cu 0, un while si un switch dupa ce s-a terminat while-ul, fara functii, fara 50 de parcurgeri.
Si care e scopul lui "out< i=2;"? Presupun ca un "<" l-a sters brainly, dar totusi?
Porecla0987: Uite rezolvarea eficienta: folosesti fr (care habar n-am de la ce vine si de ce l-ai numit asa), initializezi cu 0, cu numere random din memorie, cat timp poti citi numere in x le citesti si cresti fr[x] cu 1.
La final verifici care e cel mai mare prim de acolo si pur si simplu il scrii.

Răspunsuri la întrebare

Răspuns de Porecla0987
0

In mare parte tot. Ce ai scris tu se numeste "spaghetti code". Pe langa ca este ingrozitor de citit (nume de variabile de o litera si complicatii aiurea), mai este si FOARTE ineficient. Problema ta o rezolvi cu un array de 10 initializat cu 0, un while si un switch dupa ce s-a terminat while-ul, fara functii, fara 50 de parcurgeri.

Si care e scopul lui "out< i=2;"? Presupun ca un "<" l-a sters brainly, dar totusi?

Uite rezolvarea eficienta: folosesti fr (care habar n-am de la ce vine si de ce l-ai numit asa), initializezi cu 0, cu numere random din memorie, cat timp poti citi numere in x le citesti si cresti fr[x] cu 1.

La final verifici care e cel mai mare prim de acolo si pur si simplu il scrii.


Porecla0987: :))
Porecla0987: Si ce-ai vrea sa fac, daca a intrebat ce este gresit, daca nu sa-l corectez? :))
Alte întrebări interesante
Matematică, 8 ani în urmă