Swaps 438
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
9 < N < 1 000 000 000
Exemplu
Date de intrare Date de ieșire
123456 153426

VA ROG SA REZOLVATI NUMAI CU WHILE SI CU IF , ELSE IF EVENTUAL !
EXPLICATI SOLUTIA ! MULTUMESC !


Răspuns :

#include <iostream>

using namespace std;

int main(){

long n,cif=1;

//Citeste nr

cin >> n;

//Determina puterea lui 10 care are numar egal de cifre cu n

while(cif<=n)cif*=10;

cif/=10;

//Determina componente

int prim = n/cif;

int doi = n/(cif/10)%10;

int mijloc = (n-prim*cif-doi*(cif/10))/100;

int penultima = (n%100)/10;

int ultima = n%10;

//Construieste numarul cerut

cout << prim << penultima << mijloc << doi << ultima;

}

Nota : Solutia este una simpla, usor de inteles si nu functioneaza pentru integ setul de date de intrare (mai ales cand nu exista valori intre a doua si penultima cifra ori exista cifre nule). O rezolvare bazata pe vectori ar futea fi mult mai robusta si ar putea rezolva limitarile acestei solutii. Pe exemplul dat solutia functioneaza perfect, dupa cum poti vedea in imagine.

Vezi imaginea Andrei750238