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