PAWN Problem mit Texteingabe

  • Hey, ich sitz grad mal ein bisschen an Pawn, und habe leider ein kleines Problem.


    Spoiler anzeigen
    #include <string>

    Spoiler anzeigen
    main()
    {
    new inputText[10], text1[10] = "a", text2[10] = "s", text3[10] = "m", text4[10] = "d";
    print("Wählen Sie die Art der Rechnung.\n");
    print("[A]ddition, [S]ubtraktion, [M]ultiplikation, [D]ivision\n");
    getstring(inputText);
    while(strcmp(inputText, "", true) || !strcmp(inputText, text1, true) || !strcmp(inputText, text2, true) || !strcmp(inputText, text3, true) || !strcmp(inputText, text4, true))
    {
    getstring(inputText);
    print("Falsche Eingabe!!\n");
    }
    print("Success");
    return 1;
    }


    So, Problem ist nun, dass:


    • Egal welchen Buchstaben man eingibt, es kommt immer Falsche Eingabe.
    • Wenn man nur Enter drückt, sprich einen leeren String weiter gibt, dann kommt erst die Falsche eingabe und dann Success.


    Weiß jemand woran das liegt?


    Gruß,
    Neo. :)

  • Das erste unterscheidet zwischen a s m bzw. d und das zweite überprüft nur ob es eins von den vieren ist(kommt drauf an was du genau machen willst)
    new inputText[10];
    if(inputtext[1] =='\0')
    {
    if(inputText[0] == 'a')
    {//addition

    }
    else if(inputText[0] == 's')
    {//subtraktion

    }
    else if(inputText[0] == 'm')
    {//multiplikation

    }
    else if(inputText[0] == 'd')
    {//division

    }
    else
    {//fehler

    }
    }
    else
    {//fehler


    }



    new inputText[10];
    if(inputtext[1] =='\0')
    {
    if(inputText[0] == 'a' || inputText[0] == 's' || inputText[0] == 'm' || inputText[0] == 'd')
    {//richtig


    }
    else
    {//fehler


    }
    }
    else
    {//fehler


    }

  • Wäre es nicht besser mit einer while-Schleife?


    new bool:a = false;
    while(a) {
    // Code...
    // Wenn die Eingabe okay ist, dann die Variable "a" auf "true" setzen (a = true;)
    }


    Oder so.. (Grad keinen Plan, sorry, aber in einer ähnlichen Art sollt's klappen. ^^)

  • Habe es gerade etwas umständlicher gelöst. (Meiner Meinung nach aber besser.)


    Spoiler anzeigen
    #include <string>

    Spoiler anzeigen
    new inputText[10], text1[10] = "a", text2[10] = "s", text3[10] = "m", text4[10] = "d";

    Spoiler anzeigen
    main()
    {
    startFunc();
    return 1;
    }

    Spoiler anzeigen
    startFunc()
    {
    getstring(inputText); // Hier's u.a. Das Problem mit dem Array must be indexed
    if(inputText != '\0') // Hier nicht o;
    {
    if(inputText == 'a') // Und hier
    {
    rechAdd();
    return 1;
    }
    else if(inputText == 's') // Und hier
    {
    rechSubb();
    return 1;
    }
    else if(inputText == 'm') // Und so weiter
    {
    rechMult();
    return 1;
    }
    else if(inputText == 'd')
    {
    rechDiv();
    return 1;
    }
    else
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    startFunc();
    return 0;
    }
    }
    else
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    startFunc();
    return 0;
    }
    }

    Spoiler anzeigen
    rechAdd()
    {
    new AddInp[10];
    print("Addition.\n");
    print("Geben Sie eine Zahl ein:\n");
    false_add1:
    getstring(AddInp);
    new z1 = strval(AddInp);
    if(z1 == '\0')
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    goto false_add1;
    }
    print("Geben Sie die zweite Zahl ein:\n");
    false_add2:
    getstring(AddInp);
    new z2 = strval(AddInp);
    if(z1 == '\0')
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    goto false_add2;
    }
    new ergebnis = z1 + z2;
    print("Das Ergebnis aus %d + %d = %d", z1,z2,ergebnis);
    return 1;
    }

    Spoiler anzeigen
    rechSubb()
    {
    new SubbInp[10];
    print("Subtraktion.\n");
    print("Geben Sie eine Zahl ein:\n");
    false_subb1:
    getstring(SubbInp);
    new z1 = strval(SubbInp);
    if(z1 == '\0')
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    goto false_subb1;
    }
    print("Geben Sie die zweite Zahl ein:\n");
    false_subb2:
    getstring(SubbInp);
    new z2 = strval(SubbInp);
    if(z1 == '\0')
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    goto false_subb2;
    }
    new ergebnis = z1 - z2;
    print("Das Ergebnis aus %d - %d = %d", z1,z2,ergebnis);
    return 1;
    }

    Spoiler anzeigen
    rechMult()
    {
    new MultInp[10];
    print("Multiplikation.\n");
    print("Geben Sie eine Zahl ein:\n");
    false_mult1:
    getstring(MultInp);
    new z1 = strval(MultInp);
    if(z1 == '\0')
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    goto false_mult1;
    }
    print("Geben Sie die zweite Zahl ein:\n");
    false_mult2:
    getstring(MultInp);
    new z2 = strval(MultInp);
    if(z1 == '\0')
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    goto false_mult2;
    }
    new ergebnis = z1 + z2;
    print("Das Ergebnis aus %d * %d = %d", z1,z2,ergebnis);
    return 1;
    }

    Spoiler anzeigen
    rechDiv()
    {
    new DivInp[10];
    print("Addition.\n");
    print("Geben Sie eine Zahl ein:\n");
    false_div1:
    getstring(DivInp);
    new z1 = strval(DivInp);
    if(z1 == '\0')
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    goto false_div1;
    }
    print("Geben Sie die zweite Zahl ein:\n");
    false_div2:
    getstring(DivInp);
    new z2 = strval(DivInp);
    if(z1 == '\0')
    {
    print("Fehler in der Eingabe.\nBitte wiederholen.");
    goto false_div2;
    }
    if(z1 == 0 || z2 == 0)
    {
    print("You stupid Fag! DON'T TRY TO DEVIDE BY 0!");
    print("Shutting Down!");
    return 0;
    }
    new ergebnis = z1 / z2;
    print("Das Ergebnis aus %d / %d = %d", z1,z2,ergebnis);
    return 1;
    }


    Jetzt habe ich aber das "Array must be indexed"-Problem. Wie lös' ich das?

  • Verdammt! Vergessen!


    Dankeschöhhöhöhn :D


    Ich liebe dich, ich hoffe du weißt das. :D


    Gruß,
    Neo. :)


    €dit:


    Um jetzt nicht noch ein neues Thema aufzumachen, hier noch 'ne Frage:


    Ist es möglich, dass man das Programm zu 'ner exe macht?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen