Hilfe datei einbinden



  • Hallo,
    erst mal danke für die Aufnahme in eurem Forum XD
    und zwar habe ich folgendes Prob.
    Ich soll ein Programm schreiben womit man die vier Grundrechenarte berechnen kann
    wie 5+7,5-7,5*7,5/7.
    Dieses Programm soll beendet werden wenn man 'e' || 'E' eingibt.
    Außerdem soll es bei einer falschen Eingabe eine Fehlermeldung ausgeben.
    Dass alles ist ja schon geschaft aber es soll außerdem bei der Eingabe von
    'h' || 'H' eine Hilfe Datei anzeigen. Doch wenn ich 'h' || 'H' eingebe kommt erst die Fehlermeldung und die Hilfe Datei wird anschließend angezeigt. Kann mir jemand hier Helfen?? Bin im erst ersten Jahr Programmieren! Hier ist mein Quelltext (mit Dev-C++ geschrieben):

    #include <stdio.h>
    #include <stdlib.h>

    int main()

    {
    char op,puffer[100];
    float z1,z2;
    int erg;
    printf("Willkommen beim Grundarten-Taschenrechner! Made by Parmit Kapoor
    \n\n");
    printf("Bitte geben Sie nur Zahlen und keine Buchstaben oder Sonderzeichen
    ein, \n\nz.B. 5+7 & nicht 5+ee7 oder 5+??7 \n\n");
    printf("Mit den Buchstaben 'e' oder 'E' beenden sie das Programm \n\n");
    printf("Mit den Buchstaben 'h' oder 'H' wird ihnen die Hilfe angezeigt \n\n");
    printf("Bitte Aufgabe eingeben: \n\n");
    do
    {
    fgets(puffer,100,stdin);
    op='.';
    erg=sscanf(puffer,"%f %[+/-] %f", &z1, &op, &z2);
    if ((erg != 3) && (((puffer[0] != 'e') || (puffer[0] != 'E')) || (puffer[0] !=
    'h') || (puffer[0] != 'H')))
    printf("Error 425789x0 Ihre Eingabe ist keine gueltige Aufgabe. \n\n");
    if ((puffer[0] == 'h')||(puffer[0] == 'H'))
    {
    printf("HILFESTELLUNG \n\n");
    printf("Bitte nur aufgaben aus dem bereich der Grundrechenarten eingeben!
    \n\n");
    printf("Andere Aufgaben oder gar texte werden nicht akzeptiert! \n\n");
    printf("Ebenso werden Aufgaben aus dem Bereich der Wissenschaftlichen Rechnung
    \n\n");
    printf("nicht akzeptiert! \n\n");
    printf("Zusaetzlich koennen sie nur mit 2 Faktoren rechnen! \n\n");
    printf("Bitte Aufgabe eingeben: \n\n");
    }
    else
    {
    switch(op)
    {
    case '+':printf("=%f \n\n",z1+z2);break;
    case '
    ':printf("=%f \n\n",z1*z2);break;
    case '/':printf("=%f \n\n",z1/z2);break;
    case '-':printf("=%f \n\n",z1-z2);break;
    }
    }
    } while(!((puffer[0]=='e')||(puffer[0]=='E')));
    return (0);
    }



  • Falsches Forum! 🙂

    Aber sieh dir mal die Zeile

    if ((erg != 3) && (((puffer[0] != 'e') || (puffer[0] != 'E')) || (puffer[0] !='h') || (puffer[0] != 'H')))
                printf("Error 425789x0 Ihre Eingabe ist keine gueltige Aufgabe. \n\n");
    

    genauer an. Ich glaub du hast da || und && verwechselt. An welchen Stellen, kannst du dir leicht selbst überlegen, wenn du kurz prüfst, was mit der Abfrage passiert wenn puffer[0] tatsächlich z.B. 'H' oder 'e' usw. ist.

    Kleiner Tipp die Abfrage (x!=0 || x!=1) ist für alle x wahr.

    Gruß


Anmelden zum Antworten