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)