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

Se citeste un numar natural x de la tastatura. Sa se afiseze pe ecran si in fisierul rez. Out, pe prima linie toate cifrele pare separate prin spatiu, pe a doua linie toate cifrele impare separate prin spatiu, pe a treia linie suma numerelor pare, iar pe a patra linie produsul cifrelor divizibile cu 3.

Răspunsuri la întrebare

Răspuns de Apollyon
0

#include <fstream>

#include <iostream>

int main() {

/* numarCitit va conține numărul citit de la tastatură, cifrePare este un vector ce va conține cifrele pare ale numărului citit, la fel și cifreImpare doar că el va conține cifrele impare, avem și câte un contor pentru fiecare tip de cifră ( ca să știm câte elemente avem în vectori când parcurgem vectorii ). */

 int numarCitit, cifrePare[25], cifreImpare[25], sumaCifrePare = 0, produsCifreDiv3 = 1, contorNrPare = 0, contorNrImpare = 0;

/* deschidem un std::ofstream pentru a scrie-n fișierul rez.out */

 std::ofstream fout("rez.out", std::ios::out);

 /* dacă nu am putut deschide fișierul / ceva nu a mers bine ieșim din program  */

 if (!fout.good()) {

   std::cerr << "Eroare la deschiderea fisierului!\n";

   exit(EXIT_FAILURE);

 }

 /* dacă totul a mers bine până aici citim numărul */

 std::cout << "Introdu numarul >> ";

 std::cin >> numarCitit;

 /* i și j sunt doi indexi de care ne vom folosi pentru a adăuga cifrele în vectori */

 int i = 0, j = 0;

 /* atâta timp cât numărCitit e diferit de 0 */

 while (numarCitit != 0) {

  /* luăm ultima cifră a numărului */

   int ultimaCifra = numarCitit % 10;

   /* dacă ea este pară o adăugăm în vectorul cu cifre pare și la sumă, creștem și contorul */

   if (ultimaCifra % 2 == 0) {

     cifrePare[i++] = ultimaCifra;

     sumaCifrePare += ultimaCifra;

     contorNrPare++;

     /* dacă nu e pară înseamnă că e impară, o adăugăm în vectorul cu cifre impare și creștem contorul */

   } else {

     cifreImpare[j++] = ultimaCifra;

     contorNrImpare++;

   }

   /* dacă cifra se imparte la 3 o adăugăm la produsul cifrelor divizibile cu 3 */

   if (ultimaCifra % 3 == 0) {

     produsCifreDiv3 *= ultimaCifra;

   }

  /* împărțim numărul la 10 pentru a nu merge la nesfârșit cu while-ul */

   numarCitit /= 10;

 }

 /* resetăm indexii pentru a putea citi din vector ( eu am decis să-i refolosesc ) */

 i = 0, j = 0;

 /* pe prima linie afișăm cifrele pare (le scriem și-n fișier) */

 for (i; i < contorNrPare; i++) {

   std::cout << cifrePare[i] << " ";

   fout << cifrePare[i] << " ";

 }

 std::cout << "\n";

 fout << "\n";

 /* pe a doua linie afișăm cifrele impare */

 for (j; j < contorNrImpare; j++) {

   std::cout << cifreImpare[j] << " ";

   fout << cifreImpare[j] << " ";

 }

 /* pe a treia linie afișăm suma cifrelor pare, pe a patra linie afișăm produsul cifrelor divizibile cu 3 */

 std::cout << "\n" << sumaCifrePare << "\n" << produsCifreDiv3 << "\n";

 fout << "\n" << sumaCifrePare << "\n" << produsCifreDiv3 << "\n";

 return 0;

}

Alte întrebări interesante