Î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;
}
}
La final verifici care e cel mai mare prim de acolo si pur si simplu il scrii.
Răspunsuri la întrebare
Răspuns de
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.
Alte întrebări interesante
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Chimie,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Si care e scopul lui "out< i=2;"? Presupun ca un "<" l-a sters brainly, dar totusi?