Corectati-mi algoritmul pentru : Se dau n numere sa se afiseze cate sunt pare si cate sunt impare.
#include

using namespace std;

int main()
{ int n,k=0,q=0,i,a;
cin>>n;
{ for(i=1;i<=n;i++)
cout<<"Introduceti numar="<endl; 
cin>>a;
if (a%2=0)
k=k+1;
else(a%2=!0)
q=q+1;
}
cout<<"Numarul de numere pare="<<k;
cout<<"Numarul de numere impare="<<q;
 return 0;
}


Răspuns :

#include <iostream>
using namespace std;
int main()
{
 int n,k=0,q=0,i,a;
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"Introduceti numar="<<endl;  
cin>>a;
if (a%2==0)
{
k=k+1;
}
else
{
q=q+1;
}
}
cout<<"Numarul de numere pare="<<k;
cout<<"Numarul de numere impare="<<q; 
system("pause"); 
return 0;}
Semnul egal are inteles de atribuire. Deci atunci cand spui ca a%2=0 programul atribuie restul 0 operatiei respective, conditia este considerata a fi indeplinita, si va merge intotdeauna pe ramura primului if, niciodata pe ramura de else. Programul va produce la sfarsit k=n si q=0
Pentru a face o comparatie intre 2 valori trebuie sa folosesti ==. Pentru a face o comparatie de inegalitate, semnul corect este !=, nu =!
De asemenea, conditia de else nu contine si explicitarea ei.
un numar poate sa fie par sau impar, daca pui conditia sa fie par la prima, else contine implicit pe cea de impar

Deci codul corect ar fi
if(a%2==0)
k=k+1;
else
q=q+1;

sau

if(a%2!=0)
q=q+1;
else
k=k+1;