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

Se citește un vector cu n numere naturale nenule (n<100).
Să se insereze după fiecare număr a cărui sumă a cifrelor este pară valoarea 0.

Răspunsuri la întrebare

Răspuns de andriesboss92
1

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.

Alte întrebări interesante