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

Cerinta
Se citeste de la tastatura un numar natural N. Calculati numarul minim care se obtine prin eliminarea unei singure cifre din numarul initial.



Date de intrare
Se citeste de la tastatura numarul natural N.



Date de iesire
Se va afisa numarul minim dupa eliminarea unei cifre.



Restrictii si precizari
0 < N < 1,000,000,000


Exemplu
Date de intrare Date de iesire
5912 512


!!! FARA VECTORI


Porecla0987: Elimini cea mai mare cifra..

Răspunsuri la întrebare

Răspuns de andrei750238
3

Nota :

Aceasta NU este cea mai eficienta varianta dar este una dintre cele mai usoare de inteles.

ALGORITM C++ :

#include <iostream>  

using namespace std;

int main(){

   int n,inv=0,cifmax=0;

   cin >> n;

   //Retine numarul de zerouri de la finalul numarului

   int nrzero = 0;

   while (n % 10 == 0) {

       n /= 10;

       ++nrzero;

   }

   //Construieste rasturnatul, cautand in acelasi timp cifra maxima

   while (n) {

       if (cifmax < n % 10) {

           cifmax = n % 10;

       }

       inv = inv * 10 + n % 10;

       n /= 10;

   }

   //Reconstruieste numarul,stergand prima aparitie a cifrei maxime

   while (inv) {

       if (cifmax != inv % 10) {

           n = n * 10 + inv % 10;

       }

       else {

           cifmax = -1;

       }

       inv /= 10;

   }

   //Adauga inapoi numarul de 0 de la finalul numarului

   while (nrzero) {

       n *= 10;

       --nrzero;

   }

   cout << n;

}

Alte întrebări interesante