2016-03-12 4 views
-1

Итак, я делаю отчет о погоде в гетто, создавая генератор случайных чисел где угодно от 60 до 100 и сохраняя 25 из них в массиве. Затем у меня есть функция, которая вычисляет max, min и average вместе с печатью всего этого.Случайные числа в массиве, max, min, average

Я получил его для запуска без ошибок, но все, что я получаю, это куча нулей на моем дисплее, а это значит, что я занимаюсь большим временем где-то в расчете, любые предложения?

Также я пытаюсь вызвать пользовательские функции, поэтому у меня их несколько.

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 


int sum = 0; 
int min = 0; 
int max = 0; 
int temp[25]; 
int i = 0; 
float avg = 0; 


int main() { 


srand((unsigned) time(NULL)); 

for (i=0; i < 25; i++) { 

get_value(i); 
sum += temp[i]; 

} 

calc_results(temp[25]); 

return 0; 
}; 



int get_value(void) { 
    return((rand() % (100 - 60 + 1)) + 60); 

}; 



int calc_results(int temp_number[], int number) { 

avg = ((sum)/(25)); 
max = temp[0]; 
    for(i=1;i<25;i++){ 
     if(max<temp[i]) 
      max=temp[i]; 
     }; 
min =temp[0]; 
    for(i=1;i<25;i++){ 
     if(min>temp[i]) 
      min=temp[i]; 
    }; 

printf("Temperature Conditions on October 9, 2015 : \n"); 
printf("Time of day  Temperature in degrees F \n"); 
printf("  0      %d\n",temp[0]); 
printf("  1      %d\n",temp[1]); 
printf("  2      %d\n",temp[2]); 
printf("  3      %d\n",temp[3]); 
printf("  4      %d\n",temp[4]); 
printf("  5      %d\n",temp[5]); 
printf("  6      %d\n",temp[6]); 
printf("  7      %d\n",temp[7]); 
printf("  8      %d\n",temp[8]); 
printf("  9      %d\n",temp[9]); 
printf("  10      %d\n",temp[10]); 
printf("  11      %d\n",temp[11]); 
printf("  12      %d\n",temp[12]); 
printf("  13      %d\n",temp[13]); 
printf("  14      %d\n",temp[14]); 
printf("  15      %d\n",temp[15]); 
printf("  16      %d\n",temp[16]); 
printf("  17      %d\n",temp[17]); 
printf("  18      %d\n",temp[18]); 
printf("  19      %d\n",temp[19]); 
printf("  20      %d\n",temp[20]); 
printf("  21      %d\n",temp[21]); 
printf("  22      %d\n",temp[22]); 
printf("  23      %d\n",temp[23]); 
printf("  24      %d\n",temp[24]); 
printf("  25      %d\n",temp[25]); 
printf("Maximum Temperature for the day: %d Degrees F\n", max); 
printf("Minimum Temperature for the day: %d Degrees F\n", min); 
printf("Average Temperature for the day: %.1f Degrees F\n", avg); 

}; 
+0

Также жаль, если это большой беспорядок!Синтаксис заставляет меня привыкнуть к – Jclee

+0

'calc_results (temp [25]):' Как это правильно? 'temp [25]' - это доступ к массиву вне границ. И 'calc_results' определяется так, чтобы принимать два параметра:' int calc_results (int temp_number [], int number) '. Предположим, что это должно быть 'calc_results (temp, 25)' – kaylum

+2

Примечание: 'printf (" 0% d \ n ", temp [0]); printf ("1% d \ n", temp [1]); printf ("2% d \ n", temp [2]); .... 'плачет за цикл. – chux

ответ

0

во-первых, использование чувак цикла для печати 25 PRINTF заявления ... ур код будет немного меньше ... сделать следующие изменения, и она должна работать очень хорошо ...

time_t t; 
srand((unsigned) time(&t)); // this is a more standard way of using srand 

также вы прошли и INT в get_value() параметр, является недействительным ... сделать это в течение цикла в главном

temp[i]=get_value();

также объявить свои функции на выше ваш код ...

вам не нужен calc_results(), как это ...

сделать это void calc_results(void) и не проходящей нуждой темпа, так как его уже глобальный .. .no нужно пропустить целое число чисел, так как вы не используете такую ​​вещь ... нет необходимости использовать возвращаемый тип как int, так как вам не нужно возвращать целое число ...

окончательное предложение ... Получить хорошая книга по функциям

так что ваш окончательный код будет выглядеть примерно так: -

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
int get_value(void); 
void calc_results(void); 
int sum = 0; 
int min = 0; 
int max = 0; 
int temp[25]; 
int i = 0; 
float avg = 0; 


int main() { 
time_t t; 
srand((unsigned) time(&t)); 
for (i=0; i < 25; i++) { 

temp[i]=get_value(); 
sum += temp[i]; 

} 

calc_results(); 

return 0; 
}; 



int get_value(void) { 
    return((rand() % (100 - 60 + 1)) + 60); 

}; 



void calc_results(void) { 

avg = ((sum)/(25)); 
max = temp[0]; 
    for(i=1;i<25;i++){ 
     if(max<temp[i]) 
      max=temp[i]; 
     }; 
min =temp[0]; 
    for(i=1;i<25;i++){ 
     if(min>temp[i]) 
      min=temp[i]; 
    }; 

printf("Temperature Conditions on October 9, 2015 : \n"); 
printf("Time of day  Temperature in degrees F \n"); 
for(int j=0;j<25;j++){ 
printf(" %d  %d\n",i,temp[i]); 
} 
printf("Maximum Temperature for the day: %d Degrees F\n", max); 
printf("Minimum Temperature for the day: %d Degrees F\n", min); 
printf("Average Temperature for the day: %.1f Degrees F\n", avg); 

}; 

также Dont использовать глобальные переменные, если локальные переменные не обязательно ... это было бы в большую помощь, когда вы делаете некоторые большие коды и файл обработки

+0

Ничего себе, я вижу, как плохо я lol, бит о заголовках функций действительно помогает много, я едва получаю информацию о том, как пройти и вызывать пользовательские функции>< – Jclee

+0

@ Практика jclee, и вы бы улучшить ... –

0

Просто шанс, что эта линия

get_value(i); 

Для

temp[i]=get_value(i); 

Поскольку вы должны хранить случайные значения в temp[i], то вы можете рассчитать другие значения.

И пока вы передаете массив. Вы должны сделать this--

calc_results(temp); 

Вы можете печатать все значения массива с помощью for цикла. Как это:

int cnt; 
for(cnt = 0; cnt<=25; cnt++) 
{ 
    printf("  %d      %d\n",cnt,temp[cnt]); 
} 
0

Вы не назначаете temp [i] любое значение?

for (i=0; i < 25; i++) { 

temp[i] = get_value(i); 
sum += temp[i]; 

}