/ / La boucle imbriquée a cessé de fonctionner - c, fonctions définies par l'utilisateur, boucles imbriquées

La boucle imbriquée a cessé de fonctionner - c, fonctions définies par l'utilisateur, boucles imbriquées

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 № 1

1

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:

  1. x dans GetValue n'est pas initialisé alors temp[x] a traversé la frontière, programme donc rencontrer une faute de segmentation.
  2. Quand vous définissez temp[x], x"la valeur est indéfinie, et temp 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