2016-01-14 2 views
-4

Я пытаюсь получить самое большое число из массива int, но он не работает так хорошо для меня.Попытка получить наибольшее количество

for (c = 0; c < 26; c++) 
    { 
     printf("%c occurs %d times in the entered string.\n",c+'a',count[c]); 
     if(count[c] > tempcount1) 
      { 
       temp=count[c]; 
      } 
     tempcount1=count[c]; 
    } 
    printf("%d",temp); 

tempcount1 установлен в 0 в начале программы. Кто-нибудь знает, где проблема в моем коде?

+3

Должны ли вы сравнить tempcount1, а затем обновить темп? – Parttimereaper

+2

Кажется, у вас есть две отдельные переменные: temp и tempcount1, когда вы только хотите. Избавьтесь от temp = count [c]; 'и переместите' tempcount1 = count [c]; 'внутри оператора if. Затем напечатайте 'tempcount1' в конце, а не' temp'. –

+0

Разве вы не должны назначать '' tempcount1''' внутри оператора if и нигде? Что такое '' 'temp''''? –

ответ

1

Проблема в том, что вы жонглируете двумя переменными, которые содержат максимальное количество. tempcount1, с которым вы сравниваете, всегда обновляется, даже если текущий счетчик не больше.

for (c = 0; c < 26; c++) 
    { 
     printf("%c occurs %d times in the entered string.\n",c+'a',count[c]); 
     if(count[c] > tempcount1) 
      { 
       temp=count[c]; 
      } 
     tempcount1=count[c]; 
    } 
    printf("%d",temp); 

Здесь рекомендуется:

int max = 0; 
for (c = 0; c < 26; c++) 
{ 
    printf("'%c' occurs %d times in the entered string.\n", c+'a', count[c]); 
    if(count[c] > max) 
     max = count[c]; 
} 
printf("Max = %d\n", max); 
Смежные вопросы