Und wieder so ein Anfänger



  • Hallo zusammen,

    bin ein frischer Programmieranfänger- programmiere effektiv seit 3 Wochen- und bräuchte dringenst euren Rat.Sitze schon seit geraumer Zeit an einem C-Programm (Eclipse),welches die Länge eines Vektors ausrechnen soll. Folgende Zeilen habe ich geschrieben:

    #include<stdio.h>
    #include<math.h>

    int main (void)
    {
    int a[3],i,f;
    double b,k;

    i=0;
    f=1;

    while(f<4)
    {
    printf("%i. Element des Vektors eingeben:\n",f);
    fflush(stdout);
    scanf("%i",&a[i]);
    f=f+1;
    }

    b=a[0]+a[1]+a[2]; ************************
    k=sqrt(b);
    printf("\n Der Betrag von a[3] lautet %.3lf\n",k);
    fflush(stdout);
    return 0;
    }

    Die Zeile mit den Sternchen soll dabei quadriert werden. Ich habe bereits den pow- Befehl sowie den ^- Befehl versucht. Leider erscheinen dann extrem falsche Werte auf dem Display...

    Kann mir jemand helfen???
    Wäre für jede brauchbare Antwort dankbar.

    Bis dann

    Florinox



  • scanf("%i",&a[f]);
    Die Variable i brauchst du generel nicht.

    Die ganzen fflush(stdout) kannst du dir ersparen, bringen dir in deinem Programm nichts.

    ^ ist übrigens der bitweise XOR Operator, er ist also nicht zu pow equivalent.

    Edit: bitweise



  • Arrays beginnen mit 0 als Index, du befüllst aber 1..3.



  • Du zählst i nicht weiter.
    Darum liest du immer nur a[0] ein.

    Beim einlesen wäre eine for-Schleife übersichtlicher.

    Statt komische Funktionen zu benutzen, nutze lieber die Tatsache das x² = x*x ist.

    Die Eclipse-Konsole hat, soweit ich weiß, einen Fehler bei der Ausgabe.
    Darum starte das Programm aus einer Konsole vom System.



  • Merci habe das Programm mittlerweile zum Laufen gekriegt. 🕶



  • florinox schrieb:

    Merci habe das Programm mittlerweile zum Laufen gekriegt. 🕶

    Das bedeutet (in C) aber leider nicht, dass es auch richtig ist.



  • DirkB schrieb:

    florinox schrieb:

    Merci habe das Programm mittlerweile zum Laufen gekriegt. 🕶

    Das bedeutet (in C) aber leider nicht, dass es auch richtig ist.

    Die Ergebnisse stimmen jetzt auf jeden Fall mal. Habe auch nach etlichen Überprüfungen noch die richtigen Resultate herausbekommen.



  • zeig mal.



  • /*
    * 12.c
    *
    * Created on: 21.12.2014
    * Author: 🤡
    */

    /*Ausrechnen der Länge eines Vektors (Betrag).*/

    #include<stdio.h>
    #include<math.h>

    int main (void)
    {
    int a[100],i,f,h;
    double b,k;

    i = 0;
    f = 1;

    printf("Wie viele Elemente soll der Vektor haben?\n"); //Abfrage der Dimension
    fflush(stdout);
    scanf("%i",&h);

    if(h>1&&h<=100)
    {
    for(i=1;i<=h;i++) //Einlesen des Arrays
    {
    printf("%i. Element des Vektors eingeben:\n",f);
    fflush(stdout);
    scanf("%i",&a[i]);
    f = f + 1;
    b = b + pow(a[i],2);
    } //Quadratsumme berechnen
    k = sqrt (b); //Ziehen der Wurzel
    printf("\n Der Betrag von a[i] = %.3lf\n",k); //Ausgabe
    fflush(stdout);
    }
    else
    {
    printf("Falsche Eingabe!\n");
    fflush(stdout);
    }
    return 0;
    }



  • Du fängst bei dem Array bei 1 statt 0 an.
    Und gehst auch bis h. (Das ist zuviel, falls h == 100 ist)

    Aber das Array brauchst du hier nicht. Lies einfach in eine einfache double -Varible ein.
    (dann kannst du auch die Schleife so lassen wie sie ist)


Anmelden zum Antworten