Vektorrechner programmieren



  • 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+bx3

    wie 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 mit

    return 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


Anmelden zum Antworten