Salut, chiar nu stiu cum ar trb sa procedez
Cerinta :
Se dă un număr natural N. A doua cifră trebuie interschimbată cu penultima.
Date de intrare :
Se citește un singur număr natural, N.
Date de iesire :
Se afișează numărul N.
Restrictii:
N > 9
!!! Doar cu ------- IF ------si ------ WHILE ------ !!!
Am reusit doar sa fac store la penultima si a2a cifra :
int n, a = 0, b = 0, demn = 0;
if (n > 9) {
while (n) {
demn++;
if (demn == 2) {
a = n % 10;
}
if (n > 10) {
b = n % 10;
}
n /= 10;
}
}
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int m=n, p10=1, c1, c2;
while (m>9) {
p10*=10;
m/=10
}
if (n<1000) {
cout << n;
}
else {
m=n;
c2=m%100/10;
c1=(m/(p10/10))%10;
int aux;
aux=m/p10*p10;
p10/=10;
aux=aux+c2*p10;
aux=aux+m%p10;
aux=aux/100*100+c1*10+m%10;
cout << aux;
}
return 0;
}
Explicație:
aflu p10, adică puterile lui 10. de exemplu pentru n=23125, p10=10000.
Asta se face pentru a parcurge cifrele de la stânga la dreapta pentru a afla
a doua cifră.
Apoi urmează niște artificii cu div și mod pentru a forma numărul căutat...
Succese la cercetare...
apropo... c1 e a doua cifră, iar c2 este penultima...
deoarece pt n < 1000 numarul ramane nemodificat...
Deci de aic se începe crearea numărului căutat... deoarece m/p10 ne dă prima cifră