👤


Cerinţă

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.

Date de intrare

Programul va citi de la tastatură un număr natural.

Date de ieşire

Programul va afişa pe ecran cea mai mare cifră a numărului citit şi numărul de apariţii ale ei, separate printr-un spaţiu.

Restricţii şi precizări
•numărul citit va fi mai mic decât 2.000.000.000




Exemplu

Intrare
274705


Ieşire
7 2
Va rog sa ma lamuriti ce este in neregula cu al meu cod de 90 puncte,SCRIS IN C,sau sa imi trimiteti o rezolvare corecta scris in limbajul de programare C.

codul meu:





01.


#include <stdio.h>


02.


#include <stdlib.h>


03.





04.


int main(){


05.


int x,y,max,nr;


06.


scanf("%d",&x);


07.


max=0;


08.


nr=0;


09.


y=x;


10.


while (y>0){


11.


if (y%10>=max)


12.


max=y%10;


13.


y=y/10;


14.


}


15.


while (x>0){


16.


if (x%10==max)


17.


nr=nr+1;


18.


x=x/10;


19.


}


20.


printf ("%d %d",max,nr);


21.


return 0;


22.


}






Răspuns :

Codul tau nu trateaza cazul in care x este 0. Iti afiseaza 0 0 in loc de 0 1.

Iti prezint un cod putin mai scurt:

#include <stdio.h>
 
int main() {
    int n, max = 0, aparitii;
    scanf("%d", &n);
    if(n == 0)
      printf("0 1");
    else {
      while(n > 0) {
        if(n % 10 > max) {
          max = n % 10;
          aparitii = 1;
        }
        else if(n % 10 == max)
          aparitii++;
        n = n / 10;
      }
      printf("%d %d", max, aparitii);
    }
    return 0;
}