Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int n, cifra1 = 0, cifra2 = 0;
cin >> n; // citesc n
if ( n < 10)
cout << "Numarul citit are o singura cifra";
else
if ( (n < 100) && (n % 10) > (n % 100) )
cout << "Cea mai mare cifra este " << n % 10 << ". Urmatoarea cea mai mare este " << n % 100;
else
{
cifra1 = n % 10;
n = n / 10;
while ( n != 0 )
{
if ( n % 10 > cifra1 )
{
cifra2 = cifra1;
cifra1 = n % 10;
}
else
if ( n % 10 > cifra2 )
cifra2 = n % 10;
n = n / 10;
}
cout << "Cea mai mare cifra este " << cifra1 << ". Urmatoarea cea mai mare este " << cifra2;
}
}
Explicație:
Daca nu stii cum functioneaza "/10" sau "%10" *** mod *** si *** div *** uita-te peste acest raspuns: https://brainly.ro/tema/5236863
Prima data citesti numarul n.
Verifici daca are doar o cifra. ---|
| -----> pentru a afisa mesaj corespunzator
Verifici daca are doua cifre. -----|
Daca numarul citit are minim 3 cifre executi blocul de instructiuni din a doua ramura " else ".
Prima data am ales o variabila cifra1 care imi va memora ultima cifra si va trunchia numarul n eliminand ultima cifra din el. ( cifra1 = n % 10; n = n / 10; )
Pe baza ultimei cifre memorate in variabila anterioara vom executa in interiorul instructiunii while operatii pana cand nu vom mai avea cifre in numarul n. ( while ( n != 0 ) )
Daca ultima cifra din n ( amintim ca n a fost trunchiat odata si ultima sa cifra este alta decat initial citit ) este mai mare decat valoarea variabilei cifra1 atunci inseamna ca am gasit o cifra mai mare decat cea memorata anterior moment in care prin blocul:
if ( n % 10 > cifra1 )
{
cifra2 = cifra1;
cifra1 = n % 10;
}
cifra2 va primi valoarea variabilei cifra1, iar cifra1 va avea o cifra mai mare decat cea dinainte.
Daca ultima cifra a numarului n nu este mai mare decat cifra1 verificam daca poate este mai mare decat cifra2, astfel ca:
if ( n % 10 > cifra2 )
cifra2 = n % 10
va atribui variabilei cifra2 ultima cifra a lui n daca este mai mare decat cifra anterioara a variabilei.
Luam exemplul:
357581
cifra 1 = 1
n = 35758
while ( 35758 != 0 )
{
if ( 8 > 1 ) -- Adevarat
{ cifra 2 = 1;
cifra 1 = 8; }
n = n / 10 -> n = 3575
}
reiau while deoarece n nu este egal cu 0
while ( 3575 != 0 )
{
if ( 5 > 8 ) --- Fals
executam ramura else
else
if ( n%10 > cifra2 ) adica if ( 5 > 1 ) --- Adevarat
cifra2 = 5
n = 3575 / 10 = 357
}
while ( 357 != 0 )
{
if ( 7 > 8 ) - fals
else
if 7 > 5 ) -- adevarat
cifra2 = 7
n = 357 / 10 = 35
}
while ( 35 != 0 )
{
if ( 5 > 8 ) --- fals
else
if ( 5 > 7 ) --- fals
nu se executa nimic
n = 35 / 10 = 3
}
while ( 3 != 0 )
{
if ( 3 > 8 ) --- fals
else
if ( 3 > 7 ) --- fals
n = 3 / 10 = 0
}
while ( 0 != 0 ) --- fals, nu se mai executa while
paraseste instructiunea while si va afisa:
Cea mai mare cifra este 8. Urmatoarea cea mai mare este 7
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că ați găsit conținutul oferit util și inspirațional. Dacă aveți întrebări suplimentare sau doriți asistență, vă încurajăm să ne contactați. Ne-ar face plăcere să reveniți și nu uitați să ne adăugați în lista dumneavoastră de favorite!