Ce code est destiné à saisir des nombres aléatoires(températures) et créez un tableau avec l'heure correspondante dans laquelle la température a été enregistrée. Voici un exemple de la sortie que je suis censé recevoir.
Temperature Conditions on October 9, 2015:
Time of Day Temperature in degrees F
0 85
1 80
2 97
3 90
4 68
5 75
6 77
7 98
8 97
9 62
etc...
Maximum Temperature for the day: <whatever> Degrees F
Minimum Temperature for the day: <whatever> Degrees F
Average Temperature for the day: <whatever.whatever> Degrees F
Mon problème est que lorsque je lance le code, une boîte de dialogue apparaît et indique que le programme a cessé de fonctionner et que je ne sais pas trop pourquoi.
Toute l'aide sera grandement appréciée.
#include <stdio.h>
#include <stdlib.h>
int GetValue(int[]);
int main() {
int x, n, max = 0,min = 100, ArrayNumMax, ArrayNumMin, temperature[25];
float sum;
float average;
int num[25];
printf("Temperature Conditions on October 9, 2015:nTime of Day tTemperature in Degrees Fn");
for (x = 0; x <= 24; x++) {
//if statements to get min and max
temperature[x] = GetValue(temperature);
if (temperature[x] > max) {
max = temperature[x];
ArrayNumMax = x;
}
if (temperature[x] < min) {
min = temperature[x];
ArrayNumMin = x;
}
printf("t%dttttt%dn", x,temperature[x]);
}
//prints statements
printf("nMidnighttttt%dnnMaximum Temperature for the day: %d Degrees F at %dnMinimum Temperature for the day: %d Degrees F at %dn", temperature[12],max,ArrayNumMax, min, ArrayNumMin);
//adds up all temps
sum=0;
for (x=0;x<25;x++){
sum=(sum+temperature[x]);
}
//prints and creates average
average=sum/25;
printf("Average Temperature for the day: %.2f Degrees Fn",average);
return 0;
}
//gets values and puts them into array
int GetValue(int value[]) {
int x, temp[x];
temp[x] = (rand()%(100-60+1))+60;
return temp[x];
}
Réponses:
1 pour la réponse № 11
Que fais-tu dans ton GetValue une fonction?
int GetValue(int value[]) {
int x, temp[x]; // create an array of undeclared amount x....
temp[x] = (rand()%(100-60+1))+60; // at invalid memory set it to this value.
return temp[x]; // then return this memory that I have no control over
}
Scrap cela et aller avec ça ...
void GetValue(int value[], int x) {
value[x] = (rand()%(100-60+1))+60;
}
Aussi au-dessus du changement principal
int GetValue(int[]);
à
void GetValue(int a[], int b);
Puis dans ton principal
//if statements to get min and max
GetValue(temperature, x);
if (temperature[x] > max) {
Aussi, vous devriez regarder dans les macros de préprocesseur. Lisez à leur sujet ici. http://www.tutorialspoint.com/cprogramming/c_preprocessors.htm
comme #define
#define array_size 25
int array[array_size];
Ensuite, si vous modifiez votre code et qu'au lieu de 25, vous en avez besoin de 50, il suffit de le modifier une fois.
1 pour la réponse № 2
Deux erreur:
x
dansGetValue
n'est pas initialisé alorstemp[x]
a traversé la frontière, programme donc rencontrer une faute de segmentation.- Quand vous définissez
temp[x]
,x
"la valeur est indéfinie, ettemp
dépasser la pile du programme.
Le bon peut-être comme ça:
int GetValue(int value[])
{
int x;
x=1;
int temp[x];
temp[x-1] = (int)((rand()%(100-60+1))+60);
return temp[x-1];
}
Le résultat montre que:
Temperature Conditions on October 9, 2015:
Time of Day Temperature in Degrees F
0 65
1 96
2 60
3 83
4 67
5 79
6 66
7 92
8 83
9 77
10 87
11 66
12 77
13 66
14 68
15 82
16 74
17 79
18 63
19 73
20 86
21 70
22 80
23 81
24 80
Midnight 77
Maximum Temperature for the day: 96 Degrees F at 1
Minimum Temperature for the day: 60 Degrees F at 2
Average Temperature for the day: 76.00 Degrees F