Taschenrechner geht nicht



  • Hallo Zusammen

    Ich hab ein Problem mit meinem Taschenrechner ich hab
    keine Ahnung warum er nicht funktioniert.
    Habt ihr vielleicht eine Idee?

    // ConsoleApplicatio
    //

    #include "stdafx.h"
    #include <stdio.h>
    #include <stdint.h>
    #include <stdlib.h>
    #include <math.h>

    int main(void)
    {
    float Zaehler1 = 0;
    float Zaehler2 = 0;
    float Resultat = 0;
    char a;

    printf("Bitte geben Sie ein was Sie rechnen möchtenl\n");
    scanf_s("%c",&a);
    fflush(stdin);

    printf("Bitte geben Sie die erste Variabe ein\n");
    scanf_s("%f", &Zaehler1);
    fflush(stdin);
    Gruss x1x2x3

    printf("Bitte geben SIe die zweite Variable ein\n");
    scanf_s("%f", &Zaehler2);
    fflush(stdin);

    switch(a)
    {

    case '+': Resultat = Zaehler1 + Zaehler2; break;
    case '-': Resultat = Zaehler1 - Zaehler2; break;
    case '/': Resultat = Zaehler1 / Zaehler2; break;
    case '*': Resultat = Zaehler1 * Zaehler2; break;

    }

    printf("%f", Resultat); <-- ich kann zwar die Zahlen einlesen aber am schluss gibt er mit nur Nullen aus.

    getchar();
    return 0;

    }



  • Lass dir doch mal deine Zahlen und das a ausgeben.

    printf("%f %c %f = %f", Zaehler1, a, Zaehler2, Resultat);
    

    ist da alles richtig?

    Nimm bitte die Code-Tags für deinen Code. Das sieht dann viel übersichtlicher aus.
    Und eine bessere Fehlerbeschreibung.



  • scanf_s("%c",&a,1);
    

    MSDN schrieb:

    Unlike scanf and wscanf, scanf_s and wscanf_s require the buffer size to be specified for all input parameters of type c, C, s, S, or [.



  • DirkB schrieb:

    Lass dir doch mal deine Zahlen und das a ausgeben.

    printf("%f %c %f = %f", Zaehler1, a, Zaehler2, Resultat);
    

    ist da alles richtig?

    Nimm bitte die Code-Tags für deinen Code. Das sieht dann viel übersichtlicher aus.
    Und eine bessere Fehlerbeschreibung.

    ich hab jetzt den code den du mir gegeben hast mal eingegeben
    und ich seh, dass es mir das + nicht anzeigt.
    d.H. er will mir das + nicht einlesen?



  • _matze schrieb:

    scanf_s("%c",&a,1);
    

    MSDN schrieb:

    Unlike scanf and wscanf, scanf_s and wscanf_s require the buffer size to be specified for all input parameters of type c, C, s, S, or [.

    danke für deine Hilfe jetzt hat es funktioniert.
    Kannst du mir erklären warum da noch eine 1 gefehlt hat?

    Gruss



  • Hat er doch schon:

    Unlike scanf and wscanf, scanf_s and wscanf_s require the buffer size to be specified for all input parameters of type c, C, s, S, or [.

    Du musst so angeben, wie viele Zeichen eingelesen werden sollen.



  • Steht eigentlich da. Bei scanf_s musst du für die Eingabeparameter c, C, s, S, oder [ (und du benutzt ja hier für char "%c") immer zwingend die Puffergröße mit angeben. Das ist der dritte Parameter der Funktion, der eigentlich optional ist. Für deine floats musst du ihn auch nicht angeben, wie du sicher schon gemerkt hast. Da ist die Länge auch klar.

    Merke: wenn was nicht funktioniert, finde erst mal heraus, wo genau es nicht funktioniert, z.B. durch Ausgabe deiner Variablen, wie von DirkB beschrieben (alternativ: Debugger nutzen!). Und dann überprüfe, ob du an der Stelle alles richtig gemacht hast, z.B. indem du die Doku zu den benutzten Funktionen liest.



  • Danke für eure schnellen und hilfreichen antworten.
    Wenn ich das nächste mal etwas frage beschreib ich das Problem
    genauer.

    Gruss
    x1x2x3



  • Da wir schon bei scanf_s sind: als nächstes könntest du dir ja mal durchlesen, welchen Wert die Funktion zurückgibt und wie du ihn sinnvoll in deinem Programm verwenden kannst. Du könntest den Fall abfangen, dass der Benutzer gar nichts Sinnvolles eingegeben hat. Für deine beiden Zahlen kannst du das alleine mit der Rückgabe von scanf_s regeln. Beim Rechenzeichen musst du ein wenig mehr Aufwand betreiben.

    http://msdn.microsoft.com/de-de/library/w40768et(v=vs.80).aspx


Anmelden zum Antworten