Cerinţa
Se dă un şir cu n elemente, numere naturale. Să se verifice dacă în şir există elemente impare.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.
Date de ieşire
Programul afișează pe ecran mesajul DA, dacă şirul conţine elemente impare, respectiv NU în caz contrar.
Restricţii şi precizări
1 ≤ n ≤ 100
elementele şirului vor fi mai mici decât 10000
Exemplu:
Date de intrare
5
2 8 6 10 8
Date de ieșire
#include
using namespace std;
int main()
{
int a[101], n, p, b=0;
cin >> n;
for (p=0;p<=n;p++)
cin >>a[p];
if (a[p]%2==0)
b=0;
else b=1;
if (b=0)
cout << "DA";
else cout <<"NU";
return 0;
}
ce am gresit?
Răspunsuri la întrebare
Răspuns de
0
In primul rand, ai o greseala fatala. Nu ai acolade de nicio culoare. for-ul executa doar prima expresie data, in cazul in care nu are acolade.
Apoi, daca, sa spunem, n = 5, tu vrei sa citeste 5 numere. Pe de alta parte, tu pleci cu for-ul de la 0 la 5, adica 6 numere citite.
Ai 2 variante sa repari:
for(p=0;p<=n; ......
sau
for(p=1;p<=n; .....
In al doilea rand, ai niste greseli de nuanta, nu neaparat de cod, dar e bine sa iti intre in obicei.
1. La Restrictii si precizari, observi ca vectorul tau este de maxim 100 de valori. Foarte bine, tu l-ai luat de 101, dar as propune sa il iei de 105, si in general:
int a[SIZE + 5];
2. Este extraordinar de important sa dai variabilelor un nume adecvat. variabila b este mult prea generala, si te poti incurca, incearca sa denumesti cu ceva ce are sens in codul tau: ex: existaImpar sau exImp sau esteImpar si tot asa...
3. Pentru variabile de tip flag, foloseste tipul de date bool, pt ca este mai usor de inteles.
bool b = false;
...
b = true;
4. Daca gasesti un numar impar, nu mai are rost sa verifici mai incolo, e clar ca exista cel putin unul (tocmI l-ai gasit), asa ca folosesti instructiunea "break", care sparge for-ul si continua
Codul este atasat. Succes!
Apoi, daca, sa spunem, n = 5, tu vrei sa citeste 5 numere. Pe de alta parte, tu pleci cu for-ul de la 0 la 5, adica 6 numere citite.
Ai 2 variante sa repari:
for(p=0;p<=n; ......
sau
for(p=1;p<=n; .....
In al doilea rand, ai niste greseli de nuanta, nu neaparat de cod, dar e bine sa iti intre in obicei.
1. La Restrictii si precizari, observi ca vectorul tau este de maxim 100 de valori. Foarte bine, tu l-ai luat de 101, dar as propune sa il iei de 105, si in general:
int a[SIZE + 5];
2. Este extraordinar de important sa dai variabilelor un nume adecvat. variabila b este mult prea generala, si te poti incurca, incearca sa denumesti cu ceva ce are sens in codul tau: ex: existaImpar sau exImp sau esteImpar si tot asa...
3. Pentru variabile de tip flag, foloseste tipul de date bool, pt ca este mai usor de inteles.
bool b = false;
...
b = true;
4. Daca gasesti un numar impar, nu mai are rost sa verifici mai incolo, e clar ca exista cel putin unul (tocmI l-ai gasit), asa ca folosesti instructiunea "break", care sparge for-ul si continua
Codul este atasat. Succes!
Anexe:
ekasmeringsrl:
iti multumesc frumos sunt incepator si chiar aveam nevoie de putin ajutor
Alte întrebări interesante
Franceza,
8 ani în urmă
Alte limbi străine,
8 ani în urmă
Limba română,
8 ani în urmă
Engleza,
9 ani în urmă
Fizică,
9 ani în urmă
Limba română,
9 ani în urmă