1. #1
    Lt. Commander
    Dabei seit
    Jan 2008
    Beiträge
    1.556

    [C] Array ohne feste Größe und weitere Fragen

    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;
    }
    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?
    Geändert von Hades85 (01.05.2012 um 17:20 Uhr)

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Lt. Junior Grade
    Dabei seit
    Jun 2007
    Beiträge
    278

    [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

  4. #3
    Lieutenant
    Dabei seit
    Okt 2004
    Beiträge
    896

    [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.

  5. #4
    Newbie
    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)

  6. #5
    Lieutenant
    Dabei seit
    Okt 2004
    Beiträge
    896

    [C] AW: Array ohne feste Größe und weitere Fragen

    Der Stern gehört zwischen Datentyp und Bezeichner.

  7. #6
    Newbie
    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.

  8. #7
    Lt. Commander
    Dabei seit
    Mai 2010
    Beiträge
    1.737

    [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.

  9. #8
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Beiträge
    1.556

    [C] AW: Array ohne feste Größe und weitere Fragen

    Zitat Zitat von DeinOpa Beitrag anzeigen
    polval ist eine Funktion. Den Wert für n übergibst du beim Funktionsaufruf.
    Polval ist eine Funktion. Also sie ist vordefiniert in math. h? Soll heißen die macht die ableitungen von alleine?

    Ergänzung vom 01.05.2012 17:03 Uhr:
    Zitat Zitat von kuddlmuddl Beitrag anzeigen
    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.
    Ich habe es geändert. Danke dir :-)

  10. #9
    Newbie
    Dabei seit
    Jul 2011
    Beiträge
    5

    [C] AW: Array ohne feste Größe und weitere Fragen


  11. #10
    Newbie
    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.

  12. #11
    Lt. Commander
    Dabei seit
    Mai 2010
    Beiträge
    1.737

    [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)

  13. #12
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Beiträge
    1.556

    [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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •