C-Hilfe



  • das problem dabei ist....würde ja gerne es machen das ich das 1 DIM array weglasse....nur muss diese funktion in ein struct bauen...was mir nicht gelingt...habe mir angesehen...was in einem andere tread darüber steht aber auf mein Programm bezogen ist es denke ich anders.

    void eingabe_berechnung (void){                                                  /*Hier wird die Eingabe+Berechnung vorgenommen*/
    
         double a,b,c,d =0;
         double koeff_zahl[4];                                                      /*1 Dimm Array deklariert*/
    
         int funk=0,funk1=0,funk2=0;
         int x=0;
    
         printf("Koeffizienten fuer x^3 eingeben: ");                               /*Eingabeaufforderung der Koeffizienten*/
         scanf("%lf", koeff_zahl[0]); 
         printf("Koeffizienten fuer x^2 eingeben: ");
         scanf("%lf", &koeff_zahl[1]); 
         printf("Koeffizienten fuer x^1 eingeben: ");
         scanf("%lf", &koeff_zahl[2]); 
         printf("Koeffizienten fuer x^0 eingeben: ");
         scanf("%lf", &koeff_zahl[3]); 
    
         a=koeff_zahl[3]; 
         b=koeff_zahl[2]; 
         c=koeff_zahl[1]; 
         d=koeff_zahl[0];
    
         for (x;x<y_achse;x++){                                                     /*Hier ist die Berechnung von den Formeln*/
             funk=(a*x*x*x+b*x*x+c*x+d)+0.5;                                        /*f(x)*/
             funk1=((3*a)*(x*x)+(2*b)*(x)+c)+0.5;                                   /*f(x)'*/
             funk2=((6*a)*x+(2*b))+0.5;                                             /*f(x)''*/
    
             if ((funk >= 0) && (funk<x_achse)){                                    /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk][x]='*';
             }
             if ((funk >= 0) && (funk1<x_achse)){                                   /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk1][x]='+';
             }
             if ((funk >= 0) && (funk2<x_achse)){                                   /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk2][x]='#';
             }
         }
    }
    

    typdef struct{
    double koeff[4];
    }POLYNOM

    deswegen wollte ich den 1 DIM beibehalten....



  • Was denn nun? Struct oder Array?

    Wenn du wirklich ein Struct verwenden willst, kannst du das lokale Array und auch die Variablen weglassen und direkt damit rechnen:

    POLYNOM pol;
    /*Eingabeaufforderung der Koeffizienten*/
    for(int i=0;i<4;++i)
    {
      printf("Koeffizienten fuer x^%d eingeben: ");
      scanf("%lf", &(pol.koeff[i])); 
    }
    
    //...
    //Berechnung:
    func = pol.koeff[3]*x*x*x + pol.koeff[2]*x*x + pol.koeff[1]*x + pol.koeff[0];
    

    Und dann könntest du deine Riesen-Funktionen sogar noch weiter zerlegen und diese POLYNOM-Struktur jeweils als Parameter zwischen Eingabe und Berechnung durchreichen.



  • wie müsste es denn aussehen wenn ich das gesamte programm behalten wollte...und es in ein trsuct packen wollte:????



  • Ich habe mir mal erlaubt, meine version darzustellen....von meinen struct...so wie ich es verstanden habe...Laut compiler falsch....wie müsste es denn richtig sein....meine structvorschläge sind in comments....komme leider nicht darauf! 😞
    zudem hängt sich das programm nun von alleine nach der ersten eingabe der ersten zahl einfach auf..und wird beendet! wie löse ich das OHNE meinen Code schwerwiegend verändern muss.
    danke

    int main(void){ 				                                                /*HauptProgramm*/   
    //int koordinaten_array[x_achse][y_achse];
    
    array_leeren();
    //POLYNOM x;
    //eingabe_berechnung(&x);
    eingabe_berechnung();                                                           
    zeichnung_y_achse();
    zeichnung_x_achse();              
    wait();
    
    return 0;                                                                       /*Zum Beenden Programms einfach ENTER*/
    }
    
    /*typedef struct{
    double koeff_zahl[4];
    } POLYNOM;*/
    
    void eingabe_berechnung (void)/*(POLYNOM *x)*/{                                 /*Hier wird die Eingabe+Berechnung vorgenommen*/
    
         double a,b,c,d =0;
         double koeff_zahl[4];                                                      /*1 Dimm Array deklariert*/
    
         int funk=0,funk1=0,funk2=0;
         int x=0;
    
         printf("Koeffizienten fuer x^3 eingeben: ");                               /*Eingabeaufforderung der Koeffizienten*/
         scanf("%lf", koeff_zahl[0]); 
         printf("Koeffizienten fuer x^2 eingeben: ");
         scanf("%lf", &koeff_zahl[1]); 
         printf("Koeffizienten fuer x^1 eingeben: ");
         scanf("%lf", &koeff_zahl[2]); 
         printf("Koeffizienten fuer x^0 eingeben: ");
         scanf("%lf", &koeff_zahl[3]); 
    
         a=koeff_zahl[3]; 
         b=koeff_zahl[2]; 
         c=koeff_zahl[1]; 
         d=koeff_zahl[0];
    
         for (x;x<y_achse;x++){                                                     /*Hier ist die Berechnung von den Formeln*/
             funk=(a*x*x*x+b*x*x+c*x+d)+0.5;                                        /*f(x)*/
             funk1=((3*a)*(x*x)+(2*b)*(x)+c)+0.5;                                   /*f(x)'*/
             funk2=((6*a)*x+(2*b))+0.5;                                             /*f(x)''*/
    
             if ((funk >= 0) && (funk<x_achse)){                                    /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk][x]='*';
             }
             if ((funk >= 0) && (funk1<x_achse)){                                   /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk1][x]='+';
             }
             if ((funk >= 0) && (funk2<x_achse)){                                   /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk2][x]='#';
             }
         }
    }
    


  • hallo kann mir KEINER helfen?? warum schreibt denn keiner bei mir was rein?



  • hey ich komme nach 100 maligem versuch auch nicht weiter....bitte gibt mal nen tipp....DANKE



  • Was für einen Fehler meldet denn der Compiler?
    (eventuell hilft es ja schon, wenn du die main()-Funktion etwas später [nach der struct und den verwendeten Funktionen] deklarierst)

    Ansonsten: Wenn du schon eine struct hast, nutze sie auch (sprich: dann brauchst du keine extra Variablen für deine Koeffizienten - siehe meine letzten Code-Schnipselchen).



  • danke erst mal das jmd schreibt...ich dachte schon ihr hasst MICH hehe....deinen code habe ich gesehen....und auch überlegt,,,,nur ich will es OHNE schleife machen....einfach meinen code den ich reinsetzte so lassen...den FEHLER habe ich mittlerweile behoben....nur das mit dem struct....da motzt der compiler....ich habe da sicher was falsch gemacht

    wenn man sich mein struct ansieht dürfte es ersichtlich werden ...nur ich weisss nicht warum das so ist...echt ärgerlich!!
    also: nur struct dazu bauen ohne was zu ändern..



  • corvettev1 schrieb:

    nur das mit dem struct....da motzt der compiler....ich habe da sicher was falsch gemacht

    Nochmal: WAS GENAU sagt denn dein Compiler? (etwa "undefined identifier"? - du mußt die struct definiert haben, bevor sie das erste Mal verwedent wird. Und auch die Signatur deiner Funktion muß bei Anwendung bekannt sein)

    @Schleife: Was hast du denn gegen Schleifen? das ist doch viel kürzer als vier nahezu gleichlautende Anweisungsgruppen hintereinander zu schreiben.
    (mich wundert ja, daß du die Funktionsberechnung nicht schleifenfrei geschrieben hast :D)



  • hehe
    also das liegt daran...das mein code sich von allen anderen abheben soll....!
    das ist mein code....mit dem struct.... habe es nur auskommentiert!

    und wenn ich die kommentare rauslasse also den struct teil freigebe sagt der mir das..26 `POLYNOM' undeclared (first use in this function) ..laut pronix.de macht man das so wie ich es gemacht habe und in einem Thread habe ich das auch so gesehen,....

    i

    nt main(void){                                                                 /*HauptProgramm*/  
    //int koordinaten_array[x_achse][y_achse];
    
    array_leeren();
    //POLYNOM x;
    //eingabe_berechnung(&x);
    eingabe_berechnung();                                                          
    zeichnung_y_achse();
    zeichnung_x_achse();              
    wait();
    
    return 0;                                                                       /*Zum Beenden Programms einfach ENTER*/
    }
    
    /*typedef struct{
    double koeff_zahl[4];
    } POLYNOM;*/
    
    void eingabe_berechnung (void)/*(POLYNOM *x)*/{                                 /*Hier wird die Eingabe+Berechnung vorgenommen*/
    
         double a,b,c,d =0;
         double koeff_zahl[4];                                                      /*1 Dimm Array deklariert*/
    
         int funk=0,funk1=0,funk2=0;
         int x=0;
    
         printf("Koeffizienten fuer x^3 eingeben: ");                               /*Eingabeaufforderung der Koeffizienten*/
         scanf("%lf", koeff_zahl[0]);
         printf("Koeffizienten fuer x^2 eingeben: ");
         scanf("%lf", &koeff_zahl[1]);
         printf("Koeffizienten fuer x^1 eingeben: ");
         scanf("%lf", &koeff_zahl[2]);
         printf("Koeffizienten fuer x^0 eingeben: ");
         scanf("%lf", &koeff_zahl[3]);
    
         a=koeff_zahl[3];
         b=koeff_zahl[2];
         c=koeff_zahl[1];
         d=koeff_zahl[0];
    
         for (x;x<y_achse;x++){                                                     /*Hier ist die Berechnung von den Formeln*/
             funk=(a*x*x*x+b*x*x+c*x+d)+0.5;                                        /*f(x)*/
             funk1=((3*a)*(x*x)+(2*b)*(x)+c)+0.5;                                   /*f(x)'*/
             funk2=((6*a)*x+(2*b))+0.5;                                             /*f(x)''*/
    
             if ((funk >= 0) && (funk<x_achse)){                                    /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk][x]='*';
             }
             if ((funk >= 0) && (funk1<x_achse)){                                   /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk1][x]='+';
             }
             if ((funk >= 0) && (funk2<x_achse)){                                   /*Zeichnen der Arrayergenisse ins Koordinatensystem*/
                koordinaten_array[funk2][x]='#';
             }
         }
    }
    


  • hat mich jmd vergessen? frage nur weil das sonst immer so schnell ging....!! muss um 21 uhr die email absenden...bitte helft



  • Wie immer, steht die Lösung schon längst in diesem Thread.

    CStoll schrieb:

    du mußt die struct definiert haben, bevor sie das erste Mal verwedent wird.

    corvettev1 schrieb:

    //POLYNOM x;
    ...
    /typedef struct{
    double koeff_zahl[4];
    } POLYNOM;
    /

    Na, was ist falsch? Das ist die Gelegenheit, auch mal selbst zu denken 😉



  • Hm, 21:04h... Is wohl bissl spät zum selber denken 😃

    *SCNR*



  • danke für aufmuntern jungs...ich weiss ich weiss...ihr könnt es...und ich NICHT SO DOLLE wie ihr...das wissen wir doch alle...ich frage weil ichs NICHT weiss...aber danke! zudem schrieb ich eine seite zuvor das ichs anders haben will!! und keine schleife....eine seit zuvor steht es da....!

    deswegen fragte ich....



  • corvettev1 schrieb:

    danke für aufmuntern jungs...

    Ich glaube nicht, dass dich hier jemand aufmuntern will.

    ich weiss ich weiss...ihr könnt es...und ich NICHT SO DOLLE wie ihr...

    Ich glaube, du überschätzt dich da.

    zudem schrieb ich eine seite zuvor das ichs anders haben will!! und keine schleife....

    Mein letzter Beitrag enthielt keine Hinweise auf eine Schleife. Vermutlich hast du ihn nicht verstanden.

    deswegen fragte ich....

    Deswegen erkläre ich es nochmal:

    CStoll sagt: A muss vor B.
    Du zeigst Code, in dem A hinter B steht, und machst wieder jede Menge Punkte.
    Ich zitiere sowohl CStolls Hinweis als auch "B...A" aus deinem Code.
    Du verstehst es nicht, machst aber wieder jede Menge Punkte.

    Mein Eindruck ist dieser: Du programmierst so wie jemand, der in einer ihm unbekannten Sprache ein Gedicht zu schreiben versucht. Du stellst Fragmente, deren Sinn du nicht verstehst, immer wieder um, in der Hoffnung, damit irgendwann den Compiler zufrieden zu stellen. Dass das noch dein kleinstes Problem ist, weißt du auch nicht.

    Du kannst nicht programmieren, ohne zu wissen, was du da tust. So leid es mir tut, aber du wirst die Grundlagen lernen und beim Programmieren denken müssen.

    Wenn du das nicht willst oder kannst, bleibt dir, den fertigen Code zu kaufen.



  • schliesse mich MFK voll an.

    programmieren ist eben wie hirnchirurgie.
    ein falscher schnitt und der patient ist futsch.
    erst kommt die theorie, dann darf man schnippeln.
    sollte doch eigentlich selbstverstaendlich sein.

    es wundert mich nur, wieso manche anfaenger glauben, sie muessten nicht verstehen, was sie da machen.

    an corvette/viper/cexperte/wie auch immer:
    ich wuerde mich sehr freuen, wenn du deine unfaehigkeit nicht ueber mehrere threads breittreten wuerdest. danke.



  • #include <hirn.h>
    

Anmelden zum Antworten