Informatică, întrebare adresată de Vaniok4300, 8 ani în urmă

Salut.Poate cineva sa ma jute cu o rezolvare C++ doar cu if si while?
Cerință
Se dă un număr natural n. Pentru a fi demn de afișat, a doua cifră trebuie interschimbată cu penultima.

Date de intrare
Se citește un singur număr natural, n.

Date de ieșire
Se afișează numărul n, după ce este demn de această operație.

Restricții
10 < n < 1 000 000 000
Exemplu
Date de intrare Date de ieșire
123456 153426

Răspunsuri la întrebare

Răspuns de alxpog
2

Răspuns:

#include <iostream>

using namespace std;

int n, nr=0, d=1;

int penultima, cifra_2;

int main()

{

   cin>>n;

   long long cn=n, cn1=n;

   int penultima_cifra=n/10%10;  //extragem penultima cifra din numar

   while(n)

   {

       int c=n%10;

       nr++;

       n/=10;

   }   //numaram cifrele numarului dat

   int copie=nr;

while(copie>1)

       d=d*10, copie--;   //calculam 10^(numarul de cifre-1); ne va ajuta in definirea expresiei pentru calculul numarului cerut

   cifra_2=cn/ (d/10) %10;  //extragem a doua cifra a numarului dat

   cn=(((cn/d)*10+penultima_cifra)*(d/1000)+(cn/100%(d/1000)))*100+cifra_2*10+cn%10; //aici construim numarul pe bucati; primele doua cifre, apoi restul cifrelor in ordinea initiala din numarul n, cu exceptia ultimelor 2, iar la final construim si ultimele doua cifre

   cout<<cn;

   return 0;

}

Alte întrebări interesante