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ăspunsuri la întrebare
#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.

Ce am greșit?
Test Timp Scor
1 0.3992 Răspuns greșit
2 0.3975 Răspuns greșit
3 0.3963 16
4 0.3976 16
5 0.3976 Răspuns greșit
6 0.3974 Răspuns greșit
Daca vrei as putea sa o fac cu vectori [entru punctaj maxim