Taschenrechner Schleifenproblem?

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: Taschenrechner Schleifenproblem?

Beitrag von stampuhh » Mi Jan 27, 2010 8:49 am

dragonfloez hat geschrieben:Also ist Case 1-5 wahr, Case 6 falsch was die Schleifenbedinungen angeht und Break ignoriert alles weiere unterhalb der Anweisung ( indemfall den Rest des Switch ). da nach dem Switch nichtsmehr folgt ( so while geklammert). So wird bei jedem durchlauf Case 1-6 geprüft ob die while bedinung falsch geworden ist. Im Case 6 Fall trifft das zu was zum sofortgem schleifen Ende nach der Prüfung führt.
Sagen wir es anders. Es wird bei jedem Durchlauf der while-Schleife geprüft ob die Bedingung falsch geworden ist. Mit der switch hat das wenig zu tun, da könnte auch beliebiger anderer Code stehen ;)
In deinem Fall verändert sich in case6 der betreffende Wert, was dann beim nächsten Überprüfen zum Abbruch führt.
dragonfloez hat geschrieben: Würden noch ander Anweisungen im Programm stehen nach dem Switch nicht {while} geklammert sind, würden diese theoretisch ausgeführt werden da die Schleife verlasssen wurde.
Alles nach der while-Schleife und vor dem return wird noch ausgeführt - ja.
dragonfloez hat geschrieben: Case 6 break ignoriert dann das Default (oder was immmernoch da stehen würde), was noch im Switch steht. Da Break das Switch sofort beendet.
Auch ein Case 7 oder Case 1000 würde ignoriert werden, wenn es nach Case 6 steht. Aber ansonsten ja.
dragonfloez hat geschrieben: Break beenden indem Sinn immer den Rest was da noch kommen könnte in einer Funktion oder Anweisung und führt so sofort zum nächsten Schritt,
Also unten. Text 1 sieht man, Text 2 sieht man, Text 3 sieht man, Text 4 sieht man wird per Auswahl aktiv und führt dazu das Text 5 nicht erscheint, Text 5 würde man sehen wenn 4 nicht aktiviert würde (dafür sieht man dann Text 4 nicht mehr), Text 6 sieht man.
In einer switch ist das so ja. Break kann aber nicht überall verwendet werden sondern nur in Schleifen und switch.

Ich denke du hast es verstanden. Mach es dir nicht schwieriger als es ist ;)

gruß stampuhh
NachDenkSeiten.de

dragonfloez
Beiträge: 92
Registriert: Fr Jan 22, 2010 1:49 pm

Re: Taschenrechner Schleifenproblem?

Beitrag von dragonfloez » Mi Jan 27, 2010 9:43 am

Ich danke für die Gedult und Nachsicht!!

Ich hab's kappiert und bin ganz :D !!

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Taschenrechner Schleifenproblem?

Beitrag von Kerli » Mi Jan 27, 2010 10:46 am

Und zur Sicherheit kannst du ja auch noch ins Wiki schauen:

http://proggen.org/doku.php?id=c:switch
http://proggen.org/doku.php?id=c:loops:start

Nicht das wir das alles umsonst schreiben :P
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

dragonfloez
Beiträge: 92
Registriert: Fr Jan 22, 2010 1:49 pm

Re: Taschenrechner Schleifenproblem?

Beitrag von dragonfloez » Mi Jan 27, 2010 4:07 pm

Nur noch eine Frage, bei folgendem Programm:

Code: Alles auswählen

#include <stdio.h>
#define mwst(a)((a*19)/100)
int main ()

{
    int zahl1=0, zahl6=1;
    double zahl, zahl4, zahl5;
    float zahl2=0, zahl3=0;

    while (zahl6==1)
    {

    printf ("1 Drücken um zu addieren: ");
    printf ("2 Drücken um zu subtrahieren: ");
    printf ("3 Drücken um zu multiplitzieren: ");
    printf ("4 Drücken um zu diffidieren: ");
    printf ("5 Drücken um die Mehrwertsteuer zu berechnen: ");
    printf ("6 Drücken um das Programm zu beenden: ");


    printf ("Tätigen Sie Ihre Eingabe: ");
    scanf ("%d", &zahl1);

    switch (zahl1)
    {case 1: printf ("Geben Sie die erste Zahl ein: ");
    scanf ("%f", &zahl2);
    printf ("Geben Sie die zweite Zahl ein: ");
    scanf ("%f", &zahl3);
    printf ("Das Ergebnis ist: %f\n", zahl2+zahl3);
    break;

    case 2: printf ("Geben Sie die erste Zahl ein: ");
    scanf ("%f", &zahl2);
    printf ("Geben Sie die zweite Zahl ein: ");
    scanf ("%f", &zahl3);
    printf ("Das Ergebnis ist: %f\n", zahl2-zahl3);
    break;

    case 3: printf ("Geben Sie die erste Zahl ein: ");
    scanf ("%f", &zahl2);
    printf ("Geben Sie die zweite Zahl ein: ");
    scanf ("%f", &zahl3);
    printf ("Das Ergebnis ist: %f\n", zahl2*zahl3);
    break;

    case 4: printf ("Geben Sie die erste Zahl ein: ");
    scanf ("%lf", &zahl4);
    printf ("Geben Sie die zweite Zahl ein: ");
    scanf ("%lf", &zahl5);
    printf ("Das Ergebnis ist: %f\n", zahl4/zahl5);
    break;

    case 5:printf ("Geben Sie den etrag in Euro ein: ");
    scanf ("%lf", &zahl);
    printf ("Das Ergebnis lautet: %lf", mwst(zahl));
    break;

    case 6: printf ("Beenden...");
    (zahl6=0);
    break;

    default: printf ("Wählen Sie zwischen 1,2,3,4,5,6");
    }
}

    return 0;
}
Wiso funktioniert mit dem Break die Mehwertsteuerberechnung nicht mehr und ohne break funktioniert Sie wieder. Hängt das damit zusammen das das #define auserhalb der While Schleife liegt????

Vielen Dank

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Taschenrechner Schleifenproblem?

Beitrag von Dirty Oerti » Mi Jan 27, 2010 4:22 pm

Was funktioniert nicht mehr, läuft das Programm nicht mehr oder lässt es sich nicht mehr kompilieren?
Welches break meinst du genau.
Kommentiere deinen Code bitte so.

( http://tutorial.proggen.org/doku.php?id ... ormulieren )
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

dragonfloez
Beiträge: 92
Registriert: Fr Jan 22, 2010 1:49 pm

Re: Taschenrechner Schleifenproblem?

Beitrag von dragonfloez » Mi Jan 27, 2010 4:27 pm

Also ich meinte das Break hinter der Mehrwertsteuerberechnung (case5). Hmmm ich habe gerade ein Programm von gestern geöffnet, dort funktioniert es genau so wie es soll. Also mit Break hinter der Mehrwertsteuerberechnung. Im neuen oben nicht mehr. Ich glaube fast gar das ich irgendwas beim Programm schreiben falsch gemacht habe und es nicht am break liegt.

denn das #define gilt doch für das ganze Programm Schleife hin oder her. Genauso kann es eigentlich nicht am break liegen. Eigentlich.


JETZT soll es doch der Teufel holen. Das gibts nicht. Habe gerade das Programm das nicht Funktioniert hat in ein neues Projekt mit anderem Namen Kopiert und siehe da es funktioniert. Was ist den da los???


Wenn man einen Buchstabe bei der Zahleneingabe macht passiert was voll cooles. :D

Bei mir ist es schon ein paar mal vorgekommen das sich ein Programm mit Schleife aufhängt wenn ich es über die CODE::Blocks Funktion starte. Ist das normal?
Funktioniert das Programm bei euch so wie es soll??

dragonfloez
Beiträge: 92
Registriert: Fr Jan 22, 2010 1:49 pm

Re: Taschenrechner Schleifenproblem?

Beitrag von dragonfloez » Mi Jan 27, 2010 5:39 pm

Hallo Leute,
wiso Funktioniert hier nicht meine Funktion zur Mehrwertsteuerberechnung???

Code: Alles auswählen

#include <stdio.h>
#define ms(a)((a*19)/100)
int main ()
{

    int zahl1=0, zahl2=1;
    double zahl5, zahl6, zahl;
    float zahl3=0,zahl4=0;

    while (zahl2==1)
    {

    printf ("1 Druecken um zu addieren\n");
    printf ("2 Druecken um zu subtrahieren\n");
    printf ("3 Druecken um zu multiplitzieren\n");
    printf ("4 Druecken um zu dividieren\n");
    printf ("5 Druecken um die Mehrwertsteuer zu berrechnen\n\n");

    printf ("Taetigen Sie bitte Ihre Eingabe:\n ");
    scanf ("%d", &zahl1);



    switch (zahl1)
    {
        case 1: printf ("Geben Sie die erste Zahl ein:");
        scanf ("%f", &zahl3);
        printf ("Geben Sie die zweite Zahl ein: ");
        scanf ("%f", &zahl4);
        printf ("Das Ergebnis lautet: %f\n", zahl3+zahl4);
        break;

        case 2: printf ("Geben Sie die erste Zahl ein:");
        scanf ("%f", &zahl3);
        printf ("Geben Sie die zweite Zahl ein: ");
        scanf ("%f", &zahl4);
        printf ("Das Ergebnis lautet: %f\n", zahl3-zahl4);
        break;

        case 3: printf ("Geben Sie die erste Zahl ein:");
        scanf ("%f", &zahl3);
        printf ("Geben Sie die zweite Zahl ein: ");
        scanf ("%f", &zahl4);
        printf ("Das Ergebnis lautet: %f\n", zahl3*zahl4);
        break;

        case 4: printf ("Geben Sie die erste Zahl ein:");
        scanf ("%lf", &zahl5);
        printf ("Geben Sie die zweite Zahl ein: ");
        scanf ("%lf", &zahl6);
        printf ("Das Ergebnis lautet: %lf\n", zahl5/zahl6);
        break;

        case 5: printf ("Geben Sie den Betrag in Euro ein: ");
        scanf ("%lf", &zahl);
        printf ("Das Ergebnis lautet: %lf\n", ms(zahl));
        break;

        case 6: printf ("Beenden..");
        zahl2=0;
        break;

        default: printf ("Geben Sie 1,2,3,4,5,6 ein\n");

    }

    }

    return 0;
}







Hilfe erbeten!!

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: Taschenrechner Schleifenproblem?

Beitrag von stampuhh » Mi Jan 27, 2010 6:08 pm

Bei mir läuft alles..

gruß stampuhh
NachDenkSeiten.de

dragonfloez
Beiträge: 92
Registriert: Fr Jan 22, 2010 1:49 pm

Re: Taschenrechner Schleifenproblem?

Beitrag von dragonfloez » Mi Jan 27, 2010 6:20 pm

Hallo,
mhh merkwürdig. Ich habe gerade das selbe Programm wo mir mit CODE::BLOCKS den Fehler bringt: Taschenrechner.exe funktioniert nicht mehr (Windows Fenster) und wird geschloßen, nicht mehr gehabt wo ich das Programm über die Windows Konsole aufgerufen habe. Da hat alles geklappt.

Woran kann das liegen?

Vielen Dank
Das Programm stimmt doch soweit oder?

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: Taschenrechner Schleifenproblem?

Beitrag von stampuhh » Mi Jan 27, 2010 6:24 pm

Naja ich arbeite unter Linux. Da funktioniert einiges was unter Windows zu Fehlermeldungen führt ;)

Darauf verlassen kannst du dich also nicht, wenn bei mir alles läuft :D

gruß stampuhh
NachDenkSeiten.de

Antworten