000
24.11.2004, 01:12 Uhr
~cn00b
Gast
|
Ich hab hier mal folgenden Vektorrechner. Wenn ich einen 3D vektor eingebe, dann rechnet er mir paar sachen durch.
Jetzt ist die Aufgabe diese: Ich soll das Programm erweitern. Die Ausgangsspezifikation soll wirklich erfüllt werden und zusätzlich eine "struct" als Rückgabewert bei Addition/Subtraktion, Kreuzprodukt und Einheitsvektor verwendet werden. Die struct nenn' ich "Vec3D" und soll 3 double Werte (x,y und z) enthalten.
Ich habe wenig Ahnung wie ich das realisieren soll!
C++: |
#include <stdio.h> #include <math.h>
void vektor_addition(float a[], float b[]); void vektor_subtraktion(float a[], float b[]); void vektor_dot(float a[], float b[]); void vektor_cross(float a[], float b[]); void vektor_length(float a[], float b[]); void vektor_normalize(float a[], float b[]);
int main () { float vektor1[3]; float vektor2[3]; int i; for (i=0;i<3;i++)
{ printf("Geben Sie Wert %d fuer Vektor 1 ein:",i+1); scanf("%f",&vektor1 [i]);
}
for (i=0;i<3;i++) { printf("Geben Sie Wert %d fuer Vektor 2 ein:",i+1); scanf("%f",&vektor2[i]); }
vektor_addition(vektor1, vektor2); vektor_subtraktion(vektor1, vektor2); vektor_cross(vektor1, vektor2); vektor_dot(vektor1, vektor2); vektor_length(vektor1, vektor2); vektor_normalize(vektor1, vektor2);
} void vektor_addition (float a[], float b[]) { printf("\nAddition beider Vektoren:"); printf("\n%f \n%f \n%f ", a[0] + b[0],a[1] + b[1], a[2] + b[2]);
}
void vektor_subtraktion (float a[], float b[]) { printf("\nSubtraktion beider Vektoren:"); printf("\n%f \n%f \n%f ", a[0] - b[0],a[1] - b[1], a[2] - b[2]);
}
void vektor_cross (float a[], float b[]) { printf("\nKreuzprodukt beider Vektoren:"); printf("\n%f\n%f\n%f ", (a[1] * b[2]) - (a[2] * b[1]), -((a[0] * b[2]) - (a[2]*b[0])),a[0] * b[1] - a[1] * b[0]); }
void vektor_dot (float a[], float b[]) { printf("\nSkalarpprodukt beider Vektoren:"); printf("%f\n", a[0] * b[0] + a[1] * b[1] +a[2] * b[2]);
}
void vektor_length (float a[], float b[]) {
printf("\nLaenge von "); printf("Vektor a: %f", sqrt(pow(a[0],2)+pow(a[1],2)+pow(a[2],2))); printf(" und von Vektor b: %f\n", sqrt(pow(b[0],2)+pow(b[1],2)+pow(b[2],2))); }
void vektor_normalize (float a[], float b[]) { printf("\nNormalvektor a: %g %g %g\n", a[0] / sqrt(pow(a[0],2) + pow(a[1],2) + pow(a[2],2)), a[1] / sqrt(pow(a[0],2) + pow(a[1],2) + pow(a[2],2)), a[2] / sqrt(pow(a[0],2) + pow(a[1],2) + pow(a[2],2)));
printf("Normalvektor b: %g %g %g\n", b[0] / sqrt(pow(b[0],2) + pow(b[1],2) + pow(b[2],2)), b[1] / sqrt(pow(b[0],2) + pow(b[1],2) + pow(b[2],2)), b[2] / sqrt(pow(b[0],2) + pow(b[1],2) + pow(b[2],2)));
}
|
|