Vektorrechner programmieren
-
Hallo,
Ich muss in C einen Vektorrechner programmieren. Dürfte nicht allzu schwer sein.
Bräuchte nur eure Hilfe.
Was muss im header stehen? reicht math.h? Welche Funktionen brauch ich?
Der Rechner soll können:
Addition, Subtraktion, Skalarprodukt (dot product), Kreuzprodukt (cross product), Länge (length) und Normierung (normalize).Es werden nur 2 3D Vektoren eingelesen (je 3 Zahlenwerte x,y,z). 0 darf nicht verwendet werden.
Ausgabe dann:
v1 + v2
v1 - v2
v1 . v2
v1 x v2
length(v1)
length(v2)
normalize(v1)
normalize(v2)
cross
dotSkalarprodukt rechnet man so:
(1 2 3) x (-7 8 9) = 1 x (-7) + 2x8 + 3x9 = 36Kreuzprodukt so:
http://de.wikipedia.org/wiki/Kreuzprodukt
-
In deinem Header sollten alle anderen genutzen Header stehen.
Und die Prototypen (Funktionsköpfe) deiner Funktionen.
(Außer etwaige lokale Helferfunktionen, die nur in der C-Datei benötigt werden.)Und Definitionen von Strukturen, typedefs etc.
Wie wärs mit einem Vektortyp:
struct vector { double x,y,z; };
-
vielleicht ein bisschen mehr info? bin in c noch ein anfänger
-
Welche Funktionen brauch ich?
Du solltest noch für jede Aktion die du planst,
Addition, Subtraktion, Skalarprodukt (dot product), Kreuzprodukt (cross product), Länge (length) und Normierung (normalize)
eine Funktion machen, diese gibt dann immer den neuen errechneten vektor zurück, z.b. :
struct vektor addition(struct vektor a,struct vektor b);
-
hallo,
ich habe die funktion
void vektoren_addition(int ax[], int bx[])
und möchte nun vektor1 + vektor 2 addieren.
also (ax1,ax2,ax3) + (bx1,bx2,bx3), d.h.:
ax1+bx1
ax2+bx2
ax3+bx3wie mach ich das am besten?
-
Sag mal CNoob, warum gehst du auf keinen unserer Tipps ein?
Ich habe dir gesagt, welche Struktur du wie definieren sollst.
Und mata hat dir schon eine vollkommen geeigneten Funktionskopf gegeben.Nun erstellst du dir in der Funktion eine (temporäre) Variable vom Typ vector.
Füllst seine drei Werte mit den enstprechenden Summen und lieferst ihn mitreturn my_vecstruct;
zurück.
-
hallo,
kannst du mir mal daraus ne beispiel addition zeigen? daraus werd ich nicht schlau
-
struct vektor addition(struct vektor a,struct vektor b) { struct vektor myvec; myvec.x = a.x + b.x; myvec.y = a.y + b.y; myvec.z = a.z + b.z; return myvec; }
-
ich hab das mal so. da fehlt aber die deklaration
#include <stdio.h> #include <math.h> void vektoren_add(float a[], float b[]); int main () { float vektor1[3]; float vektor2[3]; int i; for (i=0;i<3;i++) { printf("Geben Sie die %d. Wert fuer den 1. Vektor ein:",i+1); scanf("%f",&vektor1[i]); } for (i=0;i<3;i++) { printf("Geben Sie die %d. Wert fuer den 2. Vektor ein:",i+1); scanf("%f",&vektor2[i]); } vektoren_add(vektor1, vektor2); } struct vektor addition(struct vektor a,struct vektor b) { struct vektor myvec; myvec.x = a.x + b.x; myvec.y = a.y + b.y; myvec.z = a.z + b.z; return myvec; }
ne, das struct hat mich durcheinander gebracht, vielleicht weil ich diese funktion zum ersten mal höre.
zeig mir mal wie es sich code gehört, dann kenn ich mich sicher besser aus.
danke dir nochmals
-
also mein ein ganz simples beispiel:
typedef struct vektor{ int x,y,z; }vek; vek foo(vek bar) { vek neu; neu.x=bar.x+1; neu.y=bar.y+1; neu.z=bar.z+1; return neu; } int main(){ vek a,erg; a.x=a.y=a.z=5; erg=foo(a); }
hoffe, du kapierst nu, was es mit dem struct auf sich hat und wie das mit der funktion funktioniert. wenn nicht, lies ein buch ;).
gruß,
mata
-
danke dir.
da hab ich jetzt eine andere frage.printf("%f ", a[0] + b[0]); printf("%f ", a[1] + b[1]); printf("%f ", a[2] + b[2]);
wie schreib ich diese 3 printfs verkürzt? mit dem slash ( / ) oder? aber das funz nicht bei mir!
-
Hmm, wie ist es mit
printf("%f \n%f \n%f ", a[0] + b[0],a[1] + b[1], a[2] + b[2]);
Und irgenwer hat hier als Signatur:" Funktioniert nicht ist keine ausreichende Fehlerbeschreibung."; vielleicht ist ja was dran..
Gruß
Michael