Moin.
Habe hier ein Programm das mir Kopfschmerzen macht.
Ich finde den Fehler nicht.
Das Problem wenn ich weiter Tage haben will und ich die Werte eintragen will gibt es Ärger.
Brauche Hilfe Bitte!!
Code:
/**Bibliotheken******************************/
# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>
/**Define´s**********************************/
# define MAX_TEMP 3
/**Funktion main.c***************************/
int main(int argc, char *argv[]){
double *Luftdruck;
double **Temperatur;
int Tage, zusatz;
char Zeichen;
int i,u,o = 0;
double mittel_Temp = 0;
double mittel_LD = 0;
printf("Wieviele Tage einlesen: ");
scanf("%i",&Tage);
fflush(stdin);
/**Speicherreservierung**********************/
Luftdruck = (double*)malloc(Tage * sizeof(double));
if (Luftdruck == NULL){
printf("ERROR. Kein Speicher fuer Luftdruck\n");
exit(1);
}
Temperatur = (double**)malloc(Tage * sizeof(double*));
if (Temperatur == NULL){
printf("ERROR. Kein Speicher fuer Temperatur Tage\n");
exit(1);
}
for(i = 0;i <= Tage; i++){
Temperatur[i] = (double*)malloc(MAX_TEMP * sizeof(double));
if (Temperatur[i] == NULL){
printf("ERROR. Kein Speicher fuer Temperatur Werte\n");
exit(1);
}
}
/**Werte Eingeben****************************/
for(i = 0; i <= Tage-1; i++){
printf("Tag %i\n",i+1);
for(u = 0; u <= 2; u++){
printf("Temperatur %i: ",u+1);
scanf("%lf",&Temperatur[i][u]);
fflush(stdin);
}
printf("Luftdruck: ");
scanf("%lf",&Luftdruck[i]);
fflush(stdin);
}
/**Durchschnittsberechnungen*****************/
printf("Druchschnittswert des Luftdrucks: ");
for(i = 0; i <= Tage-1; i++){
mittel_LD += Luftdruck[i];
}
mittel_LD = mittel_LD / Tage;
printf("%lf\n",mittel_LD);
printf("Durchschnittswert der Temperatur: ");
for(i = 0; i <= Tage-1; i++){
for(u = 0; u < 3; u++){
mittel_Temp += Temperatur[i][u];
}
}
mittel_Temp = mittel_Temp / (Tage * 3);
printf("%lf\n",mittel_Temp);
/**Schleife für Wiederholungen****************/
while(o == 0){
printf("Neue Tage [J/N]: ");
Zeichen = getc(stdin);
if((Zeichen == 'J')||(Zeichen == 'j')){
printf("Wieviel Tage zusätzlich: ");
scanf("%i",&zusatz);
fflush(stdin);
Luftdruck = (double*)realloc(Luftdruck,_msize(Luftdruck)+zusatz * sizeof(double));
if (Luftdruck == NULL){
printf("ERROR. Kein Speicher fuer Luftdruck\n");
exit(1);
}
Temperatur = (double**)realloc(Temperatur,_msize(Temperatur)+zusatz * sizeof(double*));
if (Temperatur == NULL){
printf("ERROR. Kein Speicher fuer Temperatur Tage\n");
exit(1);
}
for(i = Tage ;i < (Tage + zusatz); i++){
Temperatur[i] = (double*)realloc(Temperatur,_msize(Temperatur)+MAX_TEMP * sizeof(double));
if (Temperatur[i] == NULL){
printf("ERROR. Kein Speicher fuer Temperatur Werte\n");
exit(1);
}
}
for(i = Tage ; i < (Tage + zusatz); i++){
printf("Tage %i: \n",i+1);
for(u = 0; u <= 2; u++){
printf("Temperatur %i: ",Tage+1);
scanf("%lf",&Temperatur[i][u]);
fflush(stdin);
}
printf("Luftdruck: ");
scanf("%lf",&Luftdruck[i]);
fflush(stdin);
}
Tage += zusatz;
mittel_LD = 0;
mittel_Temp = 0;
printf("Druchschnittswert des Luftdrucks: ");
for(i = 0; i <= Tage-1; i++){
mittel_LD += Luftdruck[i];
}
mittel_LD = mittel_LD /Tage;
printf("%lf\n",mittel_LD);
printf("Durchschnittswert der Temperatur: ");
for(i = 0; i <= Tage-1; i++){
for(u = 0; u < 3; u++){
mittel_Temp += Temperatur[i][u];
}
}
mittel_Temp = mittel_Temp / (Tage * 3);
printf("%lf\n",mittel_Temp);
}
else{
o++;
}
}
/**Ende und Speicher freigeben***************/
printf("Programm ENDE\n");
free(Luftdruck);
for(i = 0; i < Tage; i++){
free(Temperatur[i]);
}
free(Temperatur);
return(0);
}