2015-07-09 2 views
0

Итак, я должен написать программу, которая читает числа, находит наибольшее число и сообщает пользователю, как часто он появляется. Программа также должна остановиться, если она читает 0, но у меня проблемы с этим.Поиск наибольшего числа, его частота, остановка на 0

Пока я ввожу его, он печатает max как 0 каждый раз. Часто частота также прикручивается.

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <ctype.h> 
#include <cstdlib> 

int main() 
{ 
int max, count, a; 

count =1; 
printf("Enter numbers:"); 
scanf("%d", max); 

do 
{ 
scanf("%d",&a); 

if(max<a) 
{ 
    max=a; 
    count=1; 
    } 
else if (max=a) 
{ 
    count++; 
    } 
else count+=0; 
} 


while(a!=0); 

printf ("The largest number is %d, and it occurs %d times \n", max, count); 

/* system("pause"); */ 
printf("Press enter to continue...\n"); 
fflush(stdin); 
getchar(); 

return 0; 
} 
+2

Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать минимальный, полный и проверенный пример. – Olaf

+0

В ответах ниже рассматриваются реальные проблемы в вашем коде, но ... 'else count + = 0;'? На что вы надеетесь достичь здесь? – mah

+2

@mah Настоящий программист ночью ставит два бокала возле своей кровати. Стакан с водой, в случае, если он будет жаждать, и пустой, если он этого не сделает. –

ответ

2

Я вижу три ошибки, как сейчас,

  1. Хотя задаёте пользователя

    scanf("%d", max); 
    

    неправильно. scanf() ожидает увеличения типа указателя для указанного спецификатора формата. Изменить что

    scanf("%d", &max); 
    
  2. Затем else if (max=a) также ошибочно. = - задание, == сравнение.

  3. fflush(stdin); является undefined behaviour. Вы не должны использовать fflush() для входных потоков.

1

else if (max=a) является ошибочным. Оператор сравнения == не =, который является назначением.

Смежные вопросы