Pointer Hilfe



  • Hi, ich habe die funktion koeff_eingabe und möchte die Variablen abcd in die main Funktion übergeben wie mache ich das? Pointer sind immernoch ein Rätsel für mich

    koeff_eingabe()
    {
        double koeff[4], a, b, c, d;
        int t;
        for(t = 3; t >= 0; t--)
        {
            printf("Koeffizienten für x^%d eingeben:", t);
            scanf("%lf", &koeff[t]);
            ;
        }
        a = koeff[3];
        b = koeff[2];
        c = koeff[1];
        d = koeff[0];
    }
    

    Edit by c.rackwitz: Code will eingerueckt werden, um lesbar zu sein.
    Danke aber fuer die cpp-Tags, die werden so selten benutzt.



  • Eine Möglichkeit wäre z.B.:

    void koeff_eingabe(double *a, double *b, double *c, double *d){
        double koeff[4];
        ...
        *a=koeff[3];
        *b=koeff[2];
        // usw.
    

    Ich würde aber eher mit dem Array weiterarbeiten und nicht alles a, b, c und d zuweisen.



  • Und wie lese ich das in der Funktion aus?
    Einfach koeff_eingabe()?
    Ich möchte mit den Variablen noch etwas berechnen



  • Etwas ausfuehrlicher:

    int main(void)
    {
     double a;
     double b;
     double c;
     double d;
     double erg;
    
     koeff_eingabe(&a, &b, &c, &d);
     //Nun sind an den Stellen a, b, c und d deine Koeffizienten gespeichert
    
     erg = a * b; //z. B. Multipliziere Koeffizient a mit Koeffizient b
     ...
    
    return 0;
    }
    
    void koeff_eingabe(double *a, double *b, double *c, double *d){
    
        double koeff[4];
    
        //Hier die Koeffizienten in das array einlesen
        ...
    
        //Dann an die Adressen a, b, c und d die Werte schreiben
        *a=koeff[3];
        *b=koeff[2];
        *c=koeff[1];
        *d=koeff[0];
    }
    


  • Habt es hinbekommen danke

    Noch eine Frage wie mach ich das ganze mit einem Array:

    int q,w;
    		for ( w=0; w<xWidth; ++w )
    		{
    			for ( q=0; q<yWidth; ++q )
    			{
    				bild[w][q] = ' ';
    			}
    		}
    


  • Ich weiss jetzt nicht so recht, was du willst!
    Hast du mehrere Gleichungen und möchtest deren
    Koeffizienten in ein 2D-Array einlesen?

    int koeff[3][2],i,j;
    
    for(i=0; i<3; i++)
     for(j=0; j<2; j++)
       koeff[i][j]=' ';
    

    Werd doch mal etwas konkreter!



  • Unser Prof. mag es nicht wenn zuviel in der main Funktion steht deswegen
    würde ich den Code gerne in einer Funktion unterbringen.
    Das hier erstellt ein Koordinatensystem

    int q,w;
            for ( w=0; w<xWidth; ++w )
            {
                for ( q=0; q<yWidth; ++q )
                {
                    bild[w][q] = ' ';
                }
            }
    

    und in der main funktion möchte ich dann Werte reinschreiben

    int fufu,x,u,fx,fx1,fx2;
    for(x=0;x<yWidth;x++)
    {
    fx=(a*x*x*x+b*x*x+c*x+d)+0.5;
    fx1=((3*a)*x*x+(2*b)*x+c)+0.5;
    fx2=((6*a)*x+(2*b))+0.5;
    if(fx>=0&&fx<xWidth) bild[fx][x]='*';
    if(fx1>=0&&fx1<xWidth) bild[fx1][x]='+';
    if(fx2>=0&&fx2<xWidth) bild[fx2][x]='*';
    }
    


  • Die einfachste Version dürfte es wohl sein, 'bild[][]' als globale Variable anzulegen, dann kannst du sie von jeder Funktion aus erreichen:

    int bild[xWidth][yWidth];
    void init_bild();
    {
      //hier deine Initialisierungsschleife
    }
    
    int main()
    {
      init_bild();
      //...
    }
    

    Sicherer und wiederverwertbarer ist vermutlich das hier:

    void init_bild(int b[xWidth][yWidth])
    {
      memset(b,xWidth*yWidth,' ');
    }
    
    int main()
    {
      int bild[xWidth][yWidth];
      init_bild(b);
      //...
    }
    


  • Habs hinbekommen vielen dank


Anmelden zum Antworten