👤
a fost răspuns

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ăspuns :

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...