(#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;
}
}
}
Răspunsuri la întrebare
Răspuns de
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
Engleza,
8 ani în urmă
Engleza,
8 ani în urmă
Engleza,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
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)