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

Am incercat sa fac un cod foarte usor si nu stiu ce nu functioneaza ; Cerinta: Scrieti un algoritm care sa afiseze numarul de aparitii al celei mai mari cifre a unitatilor numerelor intoduse .
Aici e ce am incercat :
https://pastebin.com/gp7SdFBv


whow: i primul rand pe tine o sa te puna sa introduci decat un nr
whow: mai baga un cin>>nr; i ntr-un for
whow: o sa ti-l fac eu corect
lavinianiorba51: Bine , multumesc !

Răspunsuri la întrebare

Răspuns de BATMAN13
1

Răspuns:

Algoritmul tau este bun si foarte bine gandit pentru inceput. Singura lui problema este ca atunci cand nu gaseste un c egal cu max, se reinitializeaza mereu cu 0. Adica in secventa asta:

if(c==max)

           app++;

           else

             app=0;

Recomandarea mea este sa scoti else-ul. Nu de fiecare data cand ai o structura de tip if este nevoie si de un else, decat daca ai mai multe cazuri date de problema. Iar aici calculatorul stie singur ca nu trebuie sa creasca app-ul in cazul in care nu gaseste un c egal cu max-ul.

Explicație:


lavinianiorba51: Inteleg ce vrei sa spui , insa nu stiu cum sa scriu ca atunci cand gaseste un nou max sa reia de la 0 pt ca daca intoduc un set de date ex :n=7 si 11 11 12 12 13 13 13 , imi va afisa 7 pentru ca contorul app nu se reinitializeaza cu 0 cand gaseste un nou max, ci continua cu valorile max ului trecut
Răspuns de whow
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

int n ,x ,max=-1,c;

cin>>n;

int app=0;

for(int i=0;i<n;i++)

{

cin>>x;

c=x%10;

if(c>max)

max=c;

if(c==max)

app++;

}

cout<<"nr maxim este "<<max<<endl<<"si apare de "<<app<<" ori";

return 0;

}

si am mai facut ceva asemanator

#include <iostream>

using namespace std;

int main()

{int n,c,max=0,p=0,f;

cin>>n;

cout<<"cifra maxima a lui "<<n<<" este ";

c=n%10;

while(n!=0){

f=n%10;

if(c>f)

max=c;

else max=f;

if(f==max)

p=p+1;

n/=10;

}

cout<<max<<endl;

cout<<"cifra maxima a lui n apare de "<<p<<" ori";

return 0;

}

Anexe:

whow: da ...cerința e foarte interpretabila
whow: si ai nevoie de foarte multe if
whow: cum ar dacă max se gaseste pe prima poziție
whow: if(c==max &&max==p&&p==1)
app++;
lavinianiorba51: Aha ... am sa mai incerc
whow: si vezi ca app=0 nu =1 am greșit eu
lavinianiorba51: Ok :)
whow: https://pastebin.com/pcwAxiwe
whow: uite aici răspunsul corect :>
lavinianiorba51: Da , l am rulat si funtioneaza perfect
Alte întrebări interesante