Abbruch bei Speichern in Array
-
okay.
ich wollte eigentlich das der benutzer vorher eingibt wie viele zahlen wer eingeben will (berechung eines harmonischen mittels)
und dann soll das array entsprechend der n-stellen befüllt werden.
kann ich nicht nahc der eingabe von n
do{ printf("Bitte n eingeben: "); scanf ("%d", &n); }while (n<1);
einfach das aray auf die n stellen initialisieren?
vllt mit
xarray[n];
-
sollte gehen, wenn dein compiler C90 fähig ist.
-
das heißt?
-
also ich habe das mal mit einen festen array wert ausprobiert.
aller dings springt das programm nach eingabe des letzten array-betrages raus.
#include <stdio.h> #include <conio.h> void main (void){ int n = 0; int i = 0; int xarray[100]; int zaehler = 0; int summe = 0; do{ printf("Bitte n eingeben (1 bis 100): "); scanf ("%d", &n); }while (n<1 || n>100); for (i=0;i<n;i++){ zaehler = i+1; do{ printf("\nBitte geben Sie den %d. Wert ein: ", zaehler); scanf ("%d", xarray[i]); }while (xarray[i]<0); } for (i=0;i<n;i++){ summe = summe + (1/xarray[i]); } summe = n/summe; printf("\nHarm. Mittel = %d",summe); getch(); }
-
C99...
Das heisst, dass der Compiler den Sprachstandard C99 (oder länger ISO/IEC 9899:1999) versteht.
Die Anforderung "ich möchte dass der Benutzer entscheidet wieviele" ist übrigens eine ganz klassische Einstiegsaufgabe wenn man erstmals in Kontakt mit dynamischem Speicher kommt
-
gut erkannt.
Das Nächste Kapitel sind Zeiger. das Hatte ich aber noch nicht also muss diese aufgabe ja auch irgendwie ohne das ganze gehen. damit habe ich auch noch garkeine erfahrungen.
-
ach so und wegen dem Compiler ich nutze MS VS 2005
-
ach so habe noch was geändert:
do{ printf("\nBitte geben Sie den %d. Wert ein: ", zaehler); scanf ("%d", &xarray[i]); }while (xarray[i]<0);
naja aber ich erhalte beim letzten wert nach n "Integer division by zero"
kann es sein das beim speichern aufs array irgendwas nicht ganz passt?
-
Hast Du irgendwo eine 0 eingegeben als Wert? Dann ist "Division durch Null" völlig normal...
-
gast0815 schrieb:
ach so und wegen dem Compiler ich nutze MS VS 2005
ja, schade. der ist nicht C99-fähig. musste malloc nehmen oder wechseln.
--> http://www.christian-heffner.de/index.php?page=download
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
-
so ich habe mal einwenig gelesen und das problem mit dem array mit malloc gelöst.
hier mal mein code:
#include <stdio.h> #include <stdlib.h> #include <string.h> void main (void){ int i = 0; int zaehler = 0; double summe = 0.0; int *xarray; int n = 0; do{ printf("Bitte n eingeben : "); scanf("%d", &n); }while (n<1); xarray = (int *)malloc(n*sizeof(int)); for (i=0;i<n;i++){ zaehler = i+1; do{ printf("\nBitte geben Sie den [%d]. Wert ein: ", zaehler); scanf ("%d", &xarray[i]); }while (xarray[i]<0); } for (i=0;i<n;i++){ summe = summe + (1 / xarray[i]); } summe = n/summe; printf("\nHarm. Mittel = %lf",summe); getch(); }
allerdings ist irgendwo ein fehler bei der berechnung mit der summe
wenn ich das programm ausführe erhalte ich folgendes:
Bitte n eingeben : 3
Bitte geben Sie den [1]. Wert ein: 12
Bitte geben Sie den [2]. Wert ein: 34
Bitte geben Sie den [3]. Wert ein: 45
Harm. Mittel = 1.#INF00
der wert ist mir seltsam. sieht jemand den fehler?