C-Hilfe



  • kannst du mir einen kleinen Tipp geben wie ich das am besten machen kann?

    ps; wirklich vielen danke das du wenigstens hilfst



  • corvettev1 schrieb:

    kannst du mir einen kleinen Tipp geben wie ich das am besten machen kann?

    Indem du die Reihenfolge der Zeilen in deinem Code änderst? Hast du überhaupt eine grobe Vorstellung davon, was dein Code tut?



  • habe es auch so gemacht aber keine änderung...der motzt immer noch beim scanf
    incomatible types ins assigmnent

    void eingabe_berechnung(void){
    
         double a,b,c,d =0;
         double koeff_zahl[4];
    
         int funk=0,funk1=0,funk2=0;
         int x=0;
    
         printf("Koeffizienten fuer x^3 eingeben: ");
         scanf("%lf", &koeff_zahl[0]); a=&koeff_zahl[0];
         printf("Koeffizienten fuer x^2 eingeben: ");
         scanf("%lf", &koeff_zahl[1]); b=&koeff_zahl[1];
         printf("Koeffizienten fuer x^1 eingeben: ");
         scanf("%lf", &koeff_zahl[2]); c=&koeff_zahl[2];
         printf("Koeffizienten fuer x^0 eingeben: ");
         scanf("%lf", &koeff_zahl[3]); d=&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++){
             funk=(a*x*x*x+b*x*x+c*x+d)+0.5;
             funk1=((3*a)*(x*x)+(2*b)*(x)+c)+0.5;
             funk2=((6*a)*x+(2*b))+0.5;
    
             if ((funk >= 0) && (funk<x_achse)){
                koordinaten_array[funk][x]='*';
             }
             if ((funk >= 0) && (funk1<x_achse)){
                koordinaten_array[funk1][x]='+';
             }
             if ((funk >= 0) && (funk2<x_achse)){
                koordinaten_array[funk2][x]='#';
             }
         }
    }
    


  • Bei so vielen Threads zum selben Thema ist es kein Wunder, daß du den Überblick verlierst - imho reicht ein Thread völlig aus, deine Programmier-Skills auszubreiten 😃



  • Lass diese Zuweisungen gleich nach dem scanf doch mal weg. Die stehen doch darunter. Du müsstest dich nur entscheiden, ob a nun in koeff_zahl[0] oder koeff_zahl[3] steht.

    Wofür brauchst du das Array überhaupt? Warum liest du nicht gleich in a, b, c und d ein?



  • wie müsste ich das machen? wenn ich die werte abcd gleich einlesen würde?



  • Du gibst doch bei scanf die Adresse der Variablen an, in die eingelesen werden soll. Möglichweise ist dir das nicht bewusst, aber so ist es. Und wenn du da statt der Adresse eines Elements deines Arrays beispielsweise die Adresse von a angibst, dann liest du nicht mehr in ein Element deines Arrays ein, sondern eben in a.



  • ich denke ich habe es! so oder???

    double a,b,c,d =0;
         double koeff_zahl[4];
    
         int funk=0,funk1=0,funk2=0;
         int x=0;
    
         printf("Koeffizienten fuer x^3 eingeben: ");
         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];
    


  • HALLOOO bekomme ich keine hilfe mehr?



  • erst, wenn du dich als blizzarac einloggst.



  • ich nicht ER...sondern sind beide in der selben jahrgangsstufe...er hat mir diese seite empfohlen...weil wir nicht die selben codes haben dürfen...sorry.....



  • hehe, ich war schon etwas verwirrt, weil ihr beiden sehr aehnliche IPs habt. andererseits frag ich mich, wieso mich das ueberhaupt verwirrt hat. immerhin kann man das beim groessten deutschen c/c++ forum erwarten...

    dein letzter codeschnipsel sieht uebrigens richtig aus.



  • ich danke dir für dein feedback....jeder kann und darf sich mal irren hehe 😉

    habe nur noch ein Problem...dann bin ich wie ich HOFFE fertig
    auf dem Funktionskopf wird ein fehler angezeigt: syntax error before numeric constant

    void array_leeren(int koordinaten_array[][y_achse], int x_achse){               /*funktion die den array leert*/
    
    int lauf1=0;
    int lauf2=0;
    
        for (lauf1;lauf1<x_achse;lauf1++){                                          /*wenn die Var lauf1 kleiner ist als die x_achse*/
            for (lauf2;lauf2<y_achse;lauf2++){                                      /*dann soll er schaun, ob lauf2 kleiner ist */
                koordinaten_array[lauf1][lauf2]= ' ';                               /*danach soll er den array mit einem LEERZeichen füllen*/
            }                                                                       /*nach jedem springen in die schleife wird der zähler um 1 erhöht.*/
       }
    

    return;
    }



  • corvettev1 schrieb:

    habe nur noch ein Problem...dann bin ich wie ich HOFFE fertig
    auf dem Funktionskopf wird ein fehler angezeigt: syntax error before numeric constant

    Vor längerer Zeit wurdest Du in diesem Thread drauf angesprochen ob x_achse ein #define ist und Du hattest mit "ja" geantwortet.

    Demzufolge steht in der Zeile

    void array_leeren(int koordinaten_array[][y_achse], int x_achse){
    

    hinten eine Zahl (der Wert von #define x_achse). Eine Zahl ist eine "numeric constant" 😉



  • also wirklich...weiss dembezüglich garnicht weiter...wie muss es denn korrekt aussehen?



  • Du weisst dass wenn Du #define x_achse 26 machst jedes Vorkommen des Wortes "x_achse" durch die Zahl "26" ersetzt wird bevor der wirkliche Compiler das Programm bekommt? Sowas nennt man Präprozessor... In der Zeile steht also wenn der Präprozessor durch ist und der Compiler anfängt folgendes:

    void array_leeren(int koordinaten_array[][22], int 76){
    

    Was definitiv wenig Sinn macht. Nunja, wie löst man das Dilemma wenn man zwei "Dings" hat die sich beissen weil Sie den gleichen Namen haben? Benenne ein beliebiges "Dings" in "Bums" um 😃



  • und wie löse ich das problem? ich versuche es schon die ganze zeit...BITTE



  • Tses... Wenn zwei "Dings" sich beissen, benenne ein "Dings" in ein "Bums" um.

    Analogie: Wenn zwei "x_achse" sich beissen, benenne eins davon in "x_achse2" um.

    Wobei ich mich frage wieso Du "x_achse" noch an die Funktion array_leeren übergibst wenn "x_achse" doch sowieso bekannt ist und programmweit den Wert "76" hat? Ich glaube Du solltest den Parameter "int x_achse" für array_leeren ganz weglassen 🙂



  • kann dir keinen meter folgen...ich weiss das du es um einiges besser kannst als ich....bitte habe auch verständnis dafür...ich WILL lernen...aber nicht verspottet werden.
    ich habe doch nur einmal x_achse als define und kein anderes mal definiert...wie sollen die sich dann beissen?
    wenn du sdo gütig wärst und es mir zeigen könntest bitte..wo der fehler wirklihc ist...und wie ich ihn ausmerzen kann? BITTE...muss es nachher per email abgeben...DANKEEEE



  • ursprünglich wollte ich den array in die MAIN setzen...da ich dann merkte das dann nur noch fehler resultieren...habe ich mir gesagt das es GOLBAL einfacher ist...und deswegen den weg gewählt...habe NUN...

    das hier gemacht:

    void array_leeren(void)
    

Anmelden zum Antworten