Ich arbeite mich zurzeit in Java und c ein. Aber was ich gerade nicht verstehe warum "double a[]" keine feste größe besitzen muss, ich dachte man muss arrays sagen wie groß sie sein sollen. Ebenfalls verstehe ich nicht, wo die variable n, ihren wert her nimmt. Wieso muss man dieser keinen startwert zu weisen?Code [php]:#include<stdout.h> #include<math.h> double polval(double x, double a[], int n) { double ergebnis = 0.0; for (n; n >= 1; n--) { ergebnis = (ergebnis + a[n]) * x; } ergebnis = ergebnis + a[0]; return ergebnis; }
-
01.05.2012, 16:43 #1Lt. Commander
- Dabei seit
- Jan 2008
- Beiträge
- 1.043
[C] Array ohne feste Größe und weitere Fragen
Geändert von Hades85 (01.05.2012 um 17:20 Uhr)
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
01.05.2012, 16:49 #2
[C] AW: Array ohne feste Größe und weitere Fragen
polval ist eine Funktion. Den Wert für n übergibst du beim Funktionsaufruf.
Grüße von DeinOppa
-
01.05.2012, 16:53 #3Lieutenant
- Dabei seit
- Okt 2004
- Beiträge
- 606
[C] AW: Array ohne feste Größe und weitere Fragen
a besitzt ebenfalls keine feste Größe, da es sich um einen Parameter handelt, der ebenfalls seinen Wert beim Funktionsaufruf bekommt. Das übergebene Array muss dann entweder statischer Größe sein oder dynamisch mit malloc() angelegt worden sein.
-
01.05.2012, 16:54 #4Newbie
- Dabei seit
- Sep 2009
- Beiträge
- 7
[C] AW: Array ohne feste Größe und weitere Fragen
Das ist simpel:
double a[] = double *a.
Also ist dein Parameter nur ein Pointer auf den ersten Eintrag deines Arrays (Reserviertem Speicher).Geändert von Finalspace (01.05.2012 um 19:03 Uhr)
-
01.05.2012, 16:55 #5Lieutenant
- Dabei seit
- Okt 2004
- Beiträge
- 606
[C] AW: Array ohne feste Größe und weitere Fragen
Der Stern gehört zwischen Datentyp und Bezeichner.
-
01.05.2012, 16:55 #6Newbie
- Dabei seit
- Jul 2011
- Beiträge
- 5
[C] AW: Array ohne feste Größe und weitere Fragen
C behandelt Arrays als Pointer bei der Übergabe. Deswegen ist es der Funktion erstmal egal wie lang das Array ist, du übergibst nur die Adresse des ersten Array-Elements im Speicher.
Bitte nicht erschlagen falls mein Verständnis hier nicht richtig ist.
edit: Mist zu langsam.
-
01.05.2012, 16:55 #7Lt. Commander
- Dabei seit
- Mai 2010
- Beiträge
- 1.641
[C] AW: Array ohne feste Größe und weitere Fragen
Da is so ziemlich alles murks.
Was erhoffst du dir von n=n?
Und a[n] wird das Programm zum Absturz bringen denn wenn ein Array 6 groß ist darf man nicht a[6] machen sondern nur 0 bis 5.
-
01.05.2012, 16:58 #8Lt. Commander
Ersteller dieses Themas
- Dabei seit
- Jan 2008
- Beiträge
- 1.043
-
01.05.2012, 17:01 #9Newbie
- Dabei seit
- Jul 2011
- Beiträge
- 5
[C] AW: Array ohne feste Größe und weitere Fragen
-
01.05.2012, 17:02 #10Newbie
- Dabei seit
- Jul 2011
- Beiträge
- 5
[C] AW: Array ohne feste Größe und weitere Fragen
http://www.cplusplus.com/reference/clibrary/cmath/
nein es ist keine vordefinierte Funktion in math.h.
-
01.05.2012, 17:13 #11Lt. Commander
- Dabei seit
- Mai 2010
- Beiträge
- 1.641
[C] AW: Array ohne feste Größe und weitere Fragen
n; bewirkt aber auch nichts.. kompiliert das ohne warnings?
n hat schon einen wert sobald die funktion polval aufgerufen hat. du kannst also auch for (;...) schreiben
wieso behandelst du den fall a[0] einzeln nach der for-schleife? lass n doch einfach bis 0 laufen
also statt n >= 1 dann n >= 0
wieso setzt du in der for eine klammer um ergebnis + a[n] aber danach nicht? du kannst sie in beiden fällen weglassen. bei int a = 5+7 würde man ja auch keine um 5+7 setzen
warum gibst du der funktion polval ein x? das wird doch nie benutzt
die erste { der for ist falsch eingerückt^^Geändert von kuddlmuddl (01.05.2012 um 17:15 Uhr)
-
01.05.2012, 17:31 #12Lt. Commander
Ersteller dieses Themas
- Dabei seit
- Jan 2008
- Beiträge
- 1.043
[C] AW: Array ohne feste Größe und weitere Fragen
a[0] darf nicht mit in die schleife, da sonst +a[0]*x gerechnet wird und es darf laut horner schema als letztes nur a[0] addiert werden.
Ergänzung vom 01.05.2012 17:47 Uhr: Also um es mal konkret zu machen, ich soll eine C-funktion schreiben die im allgemeinen das hornerschema beschreibt.
das array a soll meine koeffizienten abspeichern, als doublewerte. Die variable n ist mein exponent und mein index von a. Daher ein integerwert, nur ganzzahlige werte. Und x ist meine dritte variable.
a Index n * x^n.

Zitieren
