Fehler finden in C Programm



  • Hallo Community.
    Das ist mein erster Beitrag und ich bin ein totaler Anfänger was das Programmieren mit C angeht.
    Ich habe hier eine Aufgabe, bei der man 4 Fehler in folgendem Programm finden soll. Ich hoffe ihr könnt mir weiterhelfen. Eine Begründung für jeden Fehler soll auch vorhanden sein.

    #include <stdio.h>
    main()
    {
    int x = 23, z = 4, v = 9;
    v=z==x==9;
    ;;x = x > 0 ? x >> 2 : x | 1;;
    do z=v--; while(v<z);
    v>>=8>>v>>8;
    x+=++z;y--;
    scanf("%d",&x);
    printf("%d",&x);
    if (x>7) if (z>9) x=v=10;
    for(;x>3) x--;
    printf("%d%d",v);
    }
    

    Danke schon einmal im Voraus.
    LG



  • Dafür gibt es einen automatischen Test.

    Nennt sich Compiler.



  • Stelle deinen Quellcode in Programmierforen immer in der dort vorgesehenen Form dar.
    Das kann man auch verstehen, wenn man Anfänger beim Programmieren ist so wie du - warum hast du dir die hiesigen Forumsregeln nicht durchgelesen und deinen Code mit C-Codetags versehen?
    Hausaufgaben machen wir hier nicht.

    Lehrer haben keine Ahnung vom Programmieren (sei es nun eine Grund- oder Hochschule), demzufolge wirst du nie professionelles Programmieren bei deinem Lehrer erlernen, maximal Rumstümperei mit praxisirrelevanten Versuchen C-Code zu schreiben, so wie auch hier:
    der sinnfreier Versuch eines Dilettanten, vermeintliche Fehler einzubauen, denn bis auf die Syntaxfehler sind die anderen "Fehler" durchaus gebräuchliches C und in der Hand von Profis effizient und sogar sinnvoll einsetzbar.

    Ein C-Compiler zeigt Syntaxfehler an, und kann - wenn man ihn entsprechend konfiguriert (wozu du was lernen musst) - Hinweise zu fragwürdigen Implementierungsdetails (sprich möglichen techn. Fehlern) geben, gerade in C sind viele Implementierungsvarianten erlaubt, weil C eine Sprache von Profis für Profis ist - und keinesfalls eine Sprache für Anfänger.
    Fachliche/logische Fehler kann ein Compiler nicht für dich finden.

    Der Compiler ist dein Freund.
    Der Compiler ist die schnellste, kompetenteste d.h. beste Kontrollinstanz für deinen Code.



  • Danke euch schon einmal für die Antworten.
    Habe nun mit Hilfe des Kompiler die Fehler gefunden und somit die Aufgabe gelöst.
    Tut mir leid wegen der Form. Die Aufgabe wurde halt so gestellt. Der Thread kann dann geschlossen werden, da ich wie gesagt die Fehler nun gefunden habe.
    Geholfen hat mir auch ein Buch, welches ich mir kürzlich besorgt habe. Versuche mich in Zukunft mehr danach zu orientieren, da unser Skript nicht sonderlich gut und übersichtlich ist.
    Danke nochmals

    Edit: Ich entschuldige mich dafür, keinen Code-Tag verwendet zu haben. Werde das in Zukunft beachten



  • Hallo!

    Du deklarierst und definierst die Variablen x,z,v in Zeile 4.
    Gleich darauf aber weist du diesen schon in Zeile 5 einen anderen Wert zu.
    Das macht keinen Sinn.

    Die do-while-Schleife in Zeile 7 läuft ewig, da die Bedingung zum beenden,
    v>=z niemals erreicht wird.

    In Zeile 6 kannst du die beiden führenden Semikolons ruhig löschen.
    Eines der beiden Semikolons am Ende der Zeile auch. Übrigens wird hier
    nur der Wert der Variable x von 9 auf 2 geändert.

    In Zeile 12 kannst du die Bedingungen zusammenfassen.

    Die Schleife in Zeile 13 ist auch falsch aufgebaut. War wahrscheinlich so gemeint:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    int x, z, v, y = 0, i = 0;
    v = z = x = 9;
    
    printf("*i:%d v:%d  x:%d z:%d\n", i, v, x, z );
    x = x > 0 ? x >> 2 : x | 1;
    printf("*i:%d v:%d  x:%d z:%d\n", i, v, x, z );
    for (i = 0; i <120; i++) //do
    {
     printf("i:%d v:%d  z:%d\n", i, v, z );
    if (v >= z) break;
    z = v--;
    }
    
    v >>= 8>> v>> 8;
    x += ++z;
    y--;
    printf("*i:%d v:%d  x:%d z:%d\n", i, v, x, z );
    
    scanf("%d", &x);
    printf("Eingabe war: %d\n", x);
    
    if ((x>7) && (z>9)) x = v = 10;
    
    for(;x>3;x--) printf("*%d* ",v);
    
    return EXIT_SUCCESS;
    }
    

    Alles Okidoki?? ( https://de.wikipedia.org/wiki/Okidoki )



  • Ob er das nach vier Wochen noch liest?


Log in to reply