Hallo Leute ich brauche mal eure Hilfe...
Ich schreibe bin dabei ein Programm zu schreiben, bei dem ich Werte über
die Tastatur einlese und in ein Array schreibe. Das Array soll dynamisch
sein! Wenn ich einen neuen Wert über die Tastatur einlese soll das Array
um ein Element vergrößert werden...
Leider habe ich etwas Probleme! Wie schreibe ich die Werte in das
Element? Wie schaffe ich es die mit realloc() erstellten pointer adresse
wieder zurück zu geben?
So weit habe ich das jetzt, funktioniert aber nicht richtig...
Vielleicht kann mir jemand ein paar Lösungsansätze geben...
1
//main
2
intmain(void)
3
{
4
double*werteX=NULL;
5
double*werteY=NULL;
6
7
werteX=calloc(ARRAYSIZE,sizeof(double));
8
werteY=calloc(ARRAYSIZE,sizeof(double));
9
10
11
hauptmenue(&werteX,&werteY);
12
13
14
}
15
16
//Hauptmenü
17
voidhauptmenue(double**werteX,double**werteY){
18
intauswahl,anzahl=0;
19
20
do{
21
22
printf("\n"
23
"Berechnung einer Ausgleichsgeraden\n"
24
"==================================\n"
25
"(1) Daten aufnehmen\n"
26
"(2) Daten ausgeben\n"
27
"(3) Daten korrigieren\n"
28
"(4) Daten speichern\n"
29
"(5) Daten laden\n"
30
"(6) Ausgleichsgerade ermitteln\n"
31
"(0) Ende\n"
32
"\n"
33
"Treffen Sie eine Wahl: "
34
);
35
36
scanf("%i",&auswahl);
37
while(getchar()!='\n');
38
39
switch(auswahl){
40
case1:anzahl=menue1(&werteX,&werteY);break;
41
case2:menue2(werteX,werteY,anzahl);break;
42
case3:menue3(werteX,werteY,anzahl);break;
43
case4:menue4(werteX,werteY,anzahl);break;
44
case5:anzahl=menue5(werteX,werteY);break;
45
case6:menue6(werteX,werteY,anzahl);break;
46
default:break;
47
}
48
49
}while(auswahl!=0);
50
51
}
52
53
54
//Menü Daten aufnehmen
55
intmenue1(double**werteX,double**werteY){
56
intcounter=0;
57
58
double*test1,*test2;
59
60
61
printf("\n"
62
"(1) Daten aufnehmen: (Ende ersten Punkt noch einmal eingeben)\n"
>So weit habe ich das jetzt, funktioniert aber nicht richtig...
So? Was genau funktioniert denn nicht richtig? Woran stellst Du das
fest?
Aber, klar ist, dass Du dem Arrays erst einen Wert zufügst, und dann
seine Grösse erhöhst. Nimm mal an, Du ruft die Funktion das erstemal
auf. Wohin wird der Wert, den Du mit scanf liest, denn gespeichert? Da
existiert ja noch garkein Array!
Sorry. Irgendwie habe ich mich nochmal versehen. Im Code wird gibts ja
das realloc wenn der counter >= ARRAYSIZE wird.
Hm. Dann beschreibe mal wie der Fehler genau aussieht. Es sollte mit dem
Code kein Problem geben.
Danke für die schnelle Antwort!!
Also ich habe es so probiert,...
1
scanf("%lf",(*werteY)[counter]);
Aber dann bekomme ich einen Speicherzugriffsfehler...
Wenn ich
1
scanf("%lf",&(*werteY)[counter]);
Schreibt er immerhin das erste Element, aber im 2. Durchgang schreibt
der nicht mehr! Bei einer wiederholten eingabe der ersten beiden Werte
soll er aus der Schleife rausspringen - macht er aber nicht. Im Debugger
ändert sich der Wert für werteX und werteY auch nicht...
Schade,... wäre dir trotzdem sehr dankbar wenn du versuchst zu
helfen...! Hast ja um Welten mehr Ahnung davon als ich...
Und wenn nicht,.. Trotzdem Vielen Dank!!!