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

Programul citeste un numar natural din 3 cifre [100, 999] si determina daca numarul contine cifre

care se repeta. Daca da – afiseaza cifra si numarul de repetari. Daca nu – afiseaza mesajul, ca toate

cifrele sunt diferite.

Exemplu. In numarul 757 cifra 7 se repeta de 2 ori, iar numarul 589 are toate cifrele diferite.

Sa contina limbaj cu cititorul va rog!

Multumesc!.

Răspunsuri la întrebare

Răspuns de Apollyon
1

Răspuns:

#include <iostream>

using std::cout, std::cin, std::endl;

// Funcția returnează „true” dacă numărul este format din 3 cifre, false altfel.

static bool respectaNrCifre(int numar) {

 int contorCifre{};

 while (numar) {

   ++contorCifre;

   numar /= 10;

 }

 return contorCifre == 3 ? true : false;

}

static void verificaRepetareCifre(int numar) {

 int contorCifre[10]{}, ultimaCifra;

 // Cât timp numărul citit este diferit de 0

 while (numar) {

   // Luăm ultima cifră a numărului

   ultimaCifra = numar % 10;

   /* Și incrementăm cu 1 valoarea de pe indexul ultimei cifre de exemplu avem contorCifre = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] pentru numărul 442 contorCifre ar arăta ceva de genul

                             0  1  2  3  4  5  6  7  8  9

   contorCifre = [0, 0, 1, 0, 2, 0, 0, 0, 0, 0]

   și acuma știm că cifra 4 apare de 2 ori deoarece în vector salvăm numărul de apariții al cifrelor */

   ++contorCifre[ultimaCifra];

   numar /= 10;

 }

 /* după parcurgem vectorul și afișăm doar dacă valoarea de pe poziția cifrei este mai mare decât 1 (dacă apare măcar de 2 ori) */

 for (int i = 0; i < 10; ++i) {

   if (contorCifre[i] > 1) {

     cout << "Cifra " << i << " se repeta de " << contorCifre[i] << " ori!"

          << endl;

     return;  // și returnăm din funcție

   }

 }

 // sau dacă toate cifrele sunt diferite, afișăm asta și returnăm din funcție aici

 cout << "Toate cifrele sunt diferite" << endl;

 return;

}

int main() {

 int numarCitit;

 cout << "Introdu numarul (max 3 cifre) >> ";

 // citim numărul de la tastatură

 cin >> numarCitit;

 // dacă nu respectă condiția ieșim din program

 if (!respectaNrCifre(numarCitit)) {

   cout << "Numarul trebuie sa fie format din 3 cifre!" << endl;

   exit(EXIT_FAILURE);

 }

 // altfel afișăm mesajele

 verificaRepetareCifre(numarCitit);

}

Alte întrebări interesante