Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int suma_cifre(int x)
{
int copie=x, suma=0;
while(copie!=0)
{
suma=suma+copie%10;
copie=copie/10;
}
return suma;
}
int main()
{
int n, numar, nou[200], i=1, ok=1;
cin>>n;
while(i<=n)
{
cin>>numar;
if( suma_cifre(numar)%2 == 0 )
{
nou[ok]=numar;
ok++;
nou[ok]=0;
i++;
}
else
{
nou[ok]=numar;
i++;
}
ok++; // aici se face un pas in plus pentru ok. Ca sa intelegi sugerez sa rulezi pe o foaie codul
}
for(i=1;i<=ok-1;i++) // mergem pana la ok-1 deoarece in while variabila ok va fi mai mare cu o unitate decat avem nevoie
cout<<nou[i]<<" ";
}
Explicație:
În timpul citirii celor n numere verifici pentru fiecare in parte daca suma cifrelor sale este para si construiesti un nou vector in care, daca respecta conditia ca suma sa fie para, se memoreaza valoarea citita si adaugi dupa ea valoarea 0, altfel, daca suma este impara, memorezi doar numarul.
Am considerat ca nu mai are rost sa citesc in vector elementele, asa cum spune cerinta, atata timp cat rezolvarea se poate face mai rapid si mai eficient din punct de vedere al timpului de executie.
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!