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

se da un numar natural. sa se modifice cifra impara prin scaderea cu 1 formand alt numar

Răspunsuri la întrebare

Răspuns de andriesboss92
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   unsigned int n, numar;

   cin>>n;

   while ( n != 0 )

   {

       if( (n % 10) % 2 == 0 )

           numar = numar * 10 + n % 10;

       else

           numar = numar * 10 + ( ( n % 10 ) - 1 );

       n = n / 10;

   }

   int oglindit = numar;

   

   numar = 0;

   

   while ( oglindit != 0 )

   {

       numar = numar * 10 + oglindit % 10;

       oglindit = oglindit / 10;

   }

   

   cout << numar;

}

Explicație:

Citesti un numar n. Verifici fiecare cifra a numarului daca este para sau nu timp in care creezi un alt numar respectand scaderea cu 1 a cifrei impare.

Astfel că dacă citești n=2345

Dupa primul while, variabila număr va avea valoarea: 4422 deoarece parcurgerea cifrelor se face de la dreapta numărului spre stânga.

In al doilea while facem opusul primului while. Adica oglinditul ( ceea ce inseamna ca vom crea un alt numar, cel corect, fiind opusul numarului rezultat in primul while )

in primul while numar=4422

Cream o copie numita oglindit care primeste numarul 4422

Folosind algoritmul de oglindire ( care e acelasi lucru dpdv al sintaxei cu cel de cifre ) vom determina numarul corect pentru a-l afisa.

Deci..

dupa al doilea while variabila numar va memora numarul 2244, pe care il vom afisa.

Pentru a intelege recomand sa faci pe foaie codul de mai sus.

Iata cateva exemple:

n=12345

se va afisa 2244

Explicatie: Daca scazi cu 1 numere impare vei avea 02244. Un numar care incepe cu cifra 0 nu se mai scrie cu 0. Adica numarul 02244 se va scrie 2244

n=10139

se va afisa 28 ( acelasi principiu ca cel anterior )

n= 248

se va afisa 248.

Alte întrebări interesante