Informatică, întrebare adresată de catalinmacarie2005, 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


Chiar nu inteleg cum se rezolva aceasta problema, am nevoie de un indiciu sau de un raspuns


Porecla0987: Mintea cocosului, elimini cea mai mare cifra
Porecla0987: *cea mai mare cifra care este urmata de o cifra mai mica
catalinmacarie2005: pai la asta ma gandeam si eu da nu imi dadeam seama exact cum
catalinmacarie2005: da mi-am dat
catalinmacarie2005: ms oricum

Răspunsuri la întrebare

Răspuns de paaaaaaul
3

elimini cea mai mare cifra

#include <iostream>

using namespace std;

int main()

{

   unsigned long int N, N1, y=0,  

   short int cmax=-1, p=1;

   cin >> N;

   N1=N;

   while (N!=0)

   {

       if (N%10>cmax) cmax=N%10;

       N=N/10;

   }

   while (N1!=0)

   {

      if (N1%10!=cmax)

      {

          y=(N1%10)*p+y;

          p=p*10;

      }

      N1=N1/10;

   }

   cout << y;

   return 0;

}


paaaaaaul: enuntul spune sa se afiseze cel mai mic numar prin stergerea unei cifre, nu prin reasezarea cifrelor, practic programul determina cea mai mare cifra care apare in numar iar apoi pune intr-o variabila numarul fara cifra cea mai mare, dar celelate cifre in aceeasi ordine
Porecla0987: Eroare de sintaxa, copiii n-o sa stea sa se uite peste el, ci o sa-i dea copy-paste
Porecla0987: Pe langa eroarea de sintaxa, mai ai si o conversie foarte dubioasa de la "unsigned long int" la "short int", pe care nu reusesc nicicum sa inteleg de ce ai inclus-o
paaaaaaul: explica mi partea cu eroare de sintaxa ca asta nu o inteleg) si da, am vazut ca am gresit cu conversia
Porecla0987: {

unsigned long int N, N1, y=0, // aici

short int cmax=-1, p=1;
paaaaaaul: frate deci pe bune ca din cauza unui punct si virgule nepuse te ai luat de mine? :)))))) ma gandeam ca nu stiu poate am gresit ceva la algoritm sau ceva.. ma rog, multumesc, voi fi mai atent data viitoare :)
Porecla0987: Frate acel punct și virgulă nespusă face codul să fie nefuncțional :))
Porecla0987: Pe lângă asta, se vede că nu l-ai testat înainte, exact pentru că apare acea eroare de sintaxă. La fel de bine puteau exista și probleme cu algoritmul
paaaaaaul: il testasem dar am editat ulterior fiindca initial declarasem niste variabile de care n am nevoie si din greseala am sters si acel punct si virgula :)))
florinhutzu93: problema e ca daca cifra cea mai mare se regaseste de 2x in acelasi nr, o sa o stearga de ambele dati, iar in pb din cate vad trebuie stearsa o singura data.
Alte întrebări interesante