printf von einem Vector
-
Halli Hallo!
Ich wollte im folgenden Code mir gerne z ausgeben lassen, jedoch bekomme ich dies irgentwie nicht hin.
Kurz vorweg, mein Wissenstand beschraenkt sich auf ein paar Tage C, hoffe mir wird verziehen wenn ich mich daemlich anstelle.#include <stdio.h> void test (int *a, int *b, int *c){ int z; z=*b; *b=*a; *a=*c *c=z; //printf(" z = % ", ); //<- zu bloed return; } int main(void){ int d,e,f; printf("a = "); scanf("%d",&d); printf("b = "); scanf("%d",&e); printf("c = "); scanf("%d",&f); test(&d,&e,&f); printf("\n (a,b,c) = (%d,%d,%d)",d,e,f); return 0; }
lg
-
printf(" z = % ", ); //<-
printf("\n (a,b,c) = (%d,%d,%d)",d,e,f);
vergleichen
-
hi erstmal
Wenn ich das so mache gebe ich doch nur a, b und c wieder aus, ich hatte gehofft das z = (a,b,c) ausgiebt.
-
EDIT: Der ursprüngliche Kram steht hier gar nicht mehr -.-
EDIT:
Das klingt, als würdest du hier ein paar Dinge durcheinanderbringen.beispiel:
a = 1
b = 2
c = 3z=*b;
*b=*a;
*a=*c
*c=z;nach test:
z = 2
a = 3
b = 1
c = 2da die Werte per Zeiger übergeben werden, enthalten nun auch d, e und f die neuen Werte.
z ist nur ein temporärer Integer für das Rotieren.-----
Ich habe hier etwas Schwierigkeiten auszumachen, wo hier deine Kenntnislücken liegen.
-
Also, ich habe den Code schon komplett selber geschrieben. Ich wollte eigentlich erst etwas testen.
Mein eigentliches Ziel ist es drei pointer zu erstellen welches alles Vektoren der Länge 3 sind.
Von zweien das Kreuzpodukt errechnen und dies dann im dritten speichern.
(Dies ist eine Aufgabe die mir gestellt wurde die ich gerne bewaeltigen moechte)Der Grund warum ich erst den obigen Code geschrieben habe ist, das ich garnicht weiß wie ich überhaupt einen Vektor ausgeben kann.
Ich kann zwar schon einige formatting symbols richtig angeben aber halt nicht alle.Sorry für die Verwirrung
Also ist das was ich probiert habe kompletter Humbug?
lg
Edit:
Ich habe hier etwas Schwierigkeiten auszumachen, wo hier deine Kenntnislücken liegen.
Ahhh verdammt tut mir leid!
Ich probiere es nochmal!
-Also zum einen weiß ich nicht wie ich einen Vektor ausgebe z.B a[3] (werden glaub ich auch arrays genannt, wenn ich die selber eingeben will benutze ich folgendes: for(n=0;n<3;n++)<- habe ich nur kopiert, aber ansich kapiert!-Dann ist mein Problem noch das ich nicht weiß, wie und ob Rechenoperationen von 2 Vektoren in einen anderen Vektor speichern kann und den dann wieder ausgeben kann. Z.B. a x b = c.
Danke für deine Geduld!
lg
-
Vektoren enthalten ja mehrere Zahlen, deshalb schlage ich arrays vor:
int main() { // ... int vecA[3]; int vecB[3]; int result[3]; // ... test (vecA, vecB, result); // arrays zerbröseln hier in Zeiger (auf das erste Element) // result beinhaltet jetzt das Kreuzprodukt } void test (int* lhs_vektor, int* rhs_vektor, int* result_vektor) { // Verwendungsbeispiele // lhs_vektor[2] <- letztes (drittes) Element erhalten // result_vektor[0] = lhs_vektor[1] * rhs_vektor[2] - lhs_vektor[2] * rhs_vektor[1]; // hier war ein fail mit den indizes }
EDIT: Damit ist die Antwort vollständiger:
printf("(a, b, c) = (%d, %d, %d)", result[0], result[1], result[2]);
-
Ich habe jetzt auch editiert! Wollte nur fix bescheid sagen das ich noch da bin, nicht das du glaubst ich habe deinen Beitrag nicht gelesen!
Werde das was du geschrieben hast jetzt nochmal durchgehen, evt deckt sich das ja schon mit meinen Fragen!lg
Edit:
Also ich bin jetzt ein gutes Stueck vorran gekommen! Momentan haenge ich aber daran meinen Vektor c zu bestimmen.
Ich habe jetzt folgendes probiert:#include <stdio.h> /* void test(float *avektor, float *bvektor){ int cvektor cvektor = // das noch unvollstaendig } */ int main(void){ int n; float a[3],b[3],c[3]; for(n=0;n<3;n++){printf("a[%d] = ",n); scanf("%f",&a[n]);} // Vektor a eingeben for(n=0;n<3;n++){printf("b[%d] = ",n); scanf("%f",&b[n]);} // Vektor b eingeben for(n=0;n<3;n++){c[n] = a[1]*b[2]-b[1]*a[2],a[2]*b[0]-b[2]*a[0],a[0]*b[1]-b[0]*a[1];} // Vector c berechnen /* c[0] = a[1]*b[2]-b[1]*a[2]; c[1] = a[2]*b[0]-b[2]*a[0]; //andere Variante um Vektor c zu berechnen. c[2] = a[0]*b[1]-b[0]*a[1]; */ printf("\n a = (%f,%f,%f)\n",a[0],a[1],a[2]); //a printf("\n b = (%f,%f,%f)\n",b[0],b[1],b[2]); //b printf("\n c = a x b = (%f,%f,%f)\n",c[0],c[1],c[2]); //c // bei a=1,2,3 b=4,5,6 a x b = c = -3, 6, -3 return 0; }
Nun habe ich nur keine Idee wie ich den Vektor C speichere das ich den immer abrufen kann. Wuerdest du mir noch einen kleinen Schubser in die richtige Richtung geben?
lg
-
Wie wäre es mit einer Datei, in die du deine Werte speicherst und dir dann den Dateinamen merkst?
-
Tim06TR schrieb:
Vektoren enthalten ja mehrere Zahlen, deshalb schlage ich arrays vor:
Im K&R (Deutsch, 1. Auflage) werden Arrays als Vektoren bezeichnet.
@Pauli
Nutze die "//andere Variante um Vektor c zu berechnen.".
Ich glaube nicht, dass du verstehst, was Zeile 13 genau macht (Komma-Operator).
-
Guten Morgen!
Ok ich habe jetzt die andere Variante benutzt. Das Arrays als Vektoren bezeichnet werden koennen ist schonmal super, kann ich mir gut merken.
Wutz schrieb:
Wie wäre es mit einer Datei, in die du deine Werte speicherst und dir dann den Dateinamen merkst?
Was meinst du mit einer Datei?
-
Ich habe es endlich hinbekommen!
Vielen Dank euch für die Hilfe!lg und schoenes Wochenende
-
Im K&R (Deutsch, 1. Auflage) werden Arrays als Vektoren bezeichnet.
Das Buch habe ich verloren (ist mir vermutlich aus der Tasche gefallen)
Habe es eh nur überflogen.