duplicate case value



  • und ich habe ein B U C H neben mir liegen um genauer zu sein C: Programmieren von Anfang an von Helmut Erlenkötter



  • yannicST schrieb:

    ... aber sicher bin ich mir nicht

    Das sagt Hein Blöd auch immer.

    yannicST schrieb:

    und ich habe ein B U C H neben mir liegen um genauer zu sein C: Programmieren von Anfang an von Helmut Erlenkötter

    Dann arbeite es durch. Danebenlegen reich nicht. Nur durchlesen reicht auch nicht.
    Probier die Beispiele aus und verändere sie. Dabei darfst du auch Fehler provozieren.

    Zumindest Stringbehandlung in den Grundzügen sollte auch in dem Buch richtig behandelt werden.
    Die Antwort war nicht richtig. Du musst den Unterschied zwischen '1' und "1" wissen und nicht glauben.

    Du wirst um strcmp() nicht umhin kommen.



  • sorry das ich einwenig zickig war ,war nurn bisschen gereißt weil ich was länger dran gearbeitet habe ohne es zu prüfen und als ich es geprüft habe hats net geklapppt^^ habe es aber jetzt dank deinen verweis auf die arrays gelöst:
    #include <stdio.h>

    int main()
    {
    char opcode[4];
    int i;

    printf("opcode: ");
    for(i=0;i<4;i++)
    {
    opcode[i]=getch();
    }
    if(opcode[0]=='m'&&opcode[1]=='o'&&opcode[2]=='v'&&opcode[3]==' ')
    printf("0001");
    [...]
    }

    danke für deine hilfe bzw vermerk



  • Man kann sich das Leben auch schwer machen

    char opcode[50],argument[50],drain[50],source[50];
     ...
       scanf("%49s", opcode);
    // Das & brauch ^ da dann auch nicht mehr stehen
    ...
       if (strcmp(opcode, "mov") == 0))
       { printf("0001"); 
       } else if (strcmp(opcode, "movn") == 0)
       { printf("0010"); 
       } else if (strcmp(opcode,...
    

    Allerdings wirst du später lieber ein Array machen, in dem die Opcodes und die Codes abgespeichert sind.
    Dann brauchst du nur in diesem Array suchen. Das ist dann nur eine Schleife oder ein Aufruf von bsearch.



  • ja in dem buch wurde strcmp noch nicht erwähnt und da ich das so schnell wie möglich fertig machen wollte habe ich das so gelöst aber deine variante scheint einfacher zu sein 😃 vielen dank jedoch werde ich das kapitel dazu noch lesen müssen um die sytax bzw die anwendung des befehls zu verstehen
    jedoch nochmal danke



  • dirk bei mir gibt er mir bei deiner version sytax fehler aus ich habe das jetzt so gelöst:

    [...]
    char opcode[50];
        char argument[50];
        char drain[50];
        char source[50];
        int value;
        int vergl;
    [...]
    
    vergl = strcmp (opcode, "mov");
    if (vergl==0)
       printf("0001");
    vergl = strcmp (opcode, "movn");
    if(vergl==0)
       printf("0010");
    


  • Bei mir ist in Zeile 6 eine Klammer zu viel . ..



  • ja jetzt sehe ichs auch bin aber um erlich zusein zu faul das programm noch einmal umzuschreiben...



  • yannicST schrieb:

    ja jetzt sehe ichs auch bin aber um erlich zusein zu faul das programm noch einmal umzuschreiben...

    Zweimal das richtige bei Suchen&Ersetzen eintragen und es ist getan.



  • ne ich war schon fertig... sind jetzt etwa 170 zeilen mit der version von oben :

    vergl = strcmp (opcode, "mov");
    if (vergl==0)
       printf("0001 ");
    

    und das sind zumlich viele wegen den argumenten, registern usw...


Anmelden zum Antworten