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ăspunsuri la întrebare
Răspuns de
2
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;
}
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;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Franceza,
8 ani în urmă
Geografie,
8 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă