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

(#920 pbinfo)
Am aceasta functie recursiva. Calculeaza minimul si maximului unui numar transmis ca parametru. Problema este ca. Am pus cazul particular n==0, atunci cand setez mx si mn, este atunci cand n este 0. Daca pun 0 la n. Imi va afisa -200000001 si 200000001.

Cum fac ca atunci cand inserez 0 sa nu mai schimbe mx si mn?

Codul:

void cifmaxmin(int n, int&mx, int &mn)
{
int mxn, mnn;
if(n==0)
{
mx=-200000001;
mn=200000001;
}
if(n>0)
{
cifmaxmin(n/10, mx, mn);
if(mx {
mx=n%10;
}
if(mn>n%10)
{
mn=n%10;
}
}
}


Miercuri2002: Edit:

Am mai schimbat cate ceva prin cod. In loc de

if(n==0)
{
mx=-200000001;
mn=200000001;
}

acum este:

if(n<10)
{
mx=mn=n;
}

Problema este ca imi da raspuns gresit la penultimul test, pana acum fiind ultimul (cel cu inserarea lui 0 presupun)

Răspunsuri la întrebare

Răspuns de boiustef
3

void cifmaxmin(int n, int& max, int& min)

{

   if (n<10) { max=n; min=n; }

   else {

       cifmaxmin(n/10,max,min);

       if (max<n%10) max=n%10;

       if (min>n%10) min=n%10;

   }

}

Alte întrebări interesante