Răspuns :
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);
}
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!