Abbruch bei Speichern in Array
-
gast0815 schrieb:
wie speicher ich daten in ein "leeres" Array.
...int xarray[]= {0};leere arrays gibt's nicht. das da ist ein array bestehend aus nur einem element 'int', das mit 0 initialisiert wird. arrays können auch nicht 'wachsen'. guck' dir mal malloc/realloc usw. an.

-
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?