Buna.Aceasta este problema :Se citeşte de la tastatură un număr natural. Să se determine cea mai mare cifră care apare în scrierea acestuia şi numărul de apariţii ale ei.
Iar rezolvare mea:int main()
{
int n,max=0,x,aux;
aux=n;
cin>>n;
while(n!=0)
{
if(n%10>max)
max=n%10;
n=n/10;
}
while(aux!=0)
{if(aux%10==max)
x++;
aux=aux/10;
}
cout<
return 0;
}
As vrea sa stiu de ce ca raspuns imi da :7 -2 in loc de :7 2 daca tastez nr 274705??
Razzvy:
trebuia sa-l initializezi pe x cu 0
Răspunsuri la întrebare
Răspuns de
0
problema este ca aux ia valoarea n inainte de citire , ceea ce inseamna ca ia valoarea lui n, acesta avand o valoare reziduala (ramasa in memorie) ce poate fii oricat. A doua este ca x nu o ia fe la zero, acesta avand de asemenea o valoare reziduala. Cele doua pot avea orice valoare, pentru a putea numara, cel mai bine ar fii sa-l initializezi cu zero.
( P.S. : eu unul as fi folosit un vector de aparitii, unde fiecare valoare (intre 0-9) iau zero si numara aparitiile fiind incrementate la fiecare aparitie, apoi luand vectorul de la final spre inceput ai putea gasii usor cifra maxima cu aparitia ei. acela fiind prima valoare != de zero. Asta e doar o idee, cum as fi facut eu. !Rezolvarea ta este corecta si buna! )
Sper ca te ajuta , daca mai ai intrebari , nu ezita sa intrebi; bafta. ^-^
( P.S. : eu unul as fi folosit un vector de aparitii, unde fiecare valoare (intre 0-9) iau zero si numara aparitiile fiind incrementate la fiecare aparitie, apoi luand vectorul de la final spre inceput ai putea gasii usor cifra maxima cu aparitia ei. acela fiind prima valoare != de zero. Asta e doar o idee, cum as fi facut eu. !Rezolvarea ta este corecta si buna! )
Sper ca te ajuta , daca mai ai intrebari , nu ezita sa intrebi; bafta. ^-^
Răspuns de
0
#include <iostream>
using namespace std;
int main()
{
int n, max = 0, x = 0;
cin>>n;
while(n)
{
if(n % 10 == max) ++x;
else if(n % 10 > max)
{
max = n % 10;
x = 1;
}
n /= 10;
}
cout<<max<<' '<<x;
}
using namespace std;
int main()
{
int n, max = 0, x = 0;
cin>>n;
while(n)
{
if(n % 10 == max) ++x;
else if(n % 10 > max)
{
max = n % 10;
x = 1;
}
n /= 10;
}
cout<<max<<' '<<x;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Informatică,
9 ani în urmă
Matematică,
9 ani în urmă