Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Konsole schliessen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.02.2011, 22:50 Uhr
Pr0Pr0gg3r



Hey,
bin noch noob in c++ und hab nen taschenrechner mit switch gemacht , meine Fragen:
1.wie bekomm ichs hin das das Programm nach Neustart oder Abbruch fragt wenn ein Buchstabe (also keine Zahl) eingegeben wird.
2. Wie bekomm ich hin das wenn er danach fragt, dass sich das fenster auf eingabe von "beenden" schließt .

Probier schon ewig rum und kriegs net hin ;(

Greetz.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.02.2011, 23:21 Uhr
öni



1. Schau mal hier:
www.tutorials.de/c-c/256971-pruefen-ob-eingabe-int-ist.html

2. Ungetestet, denke ich das sowas das sein sollte was du suchst.

C++:
string str;
cin>>str;

if(str == "beenden")
{
    return 0;
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.02.2011, 13:56 Uhr
Pr0Pr0gg3r



Ich verstehs iwie immer noch nicht das mit dem return hab ich jetzt aber ich krieg die überprüfung nicht hin ;( Poste gleich ma meinen code

€dit: Hier der Code (wirdn Taschenrechner ): (bis jetzt hab ich nur die eingabe der Zahlen gemacht und noch nicht die Rechnung )


C++:
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string restart;
    int ezahl;
    int zzahl;
    int ergebnis;
    char rechenart;
    cout <<"Bitte geben sie eine Zahl ein: ";
    cin >> ezahl;
    if (ezahl == ? )// falls die Zahl keine Zahl ist ...
    {
        cout << "Ungültige Eingabe bitte eine Zahl eingeben.\n";
        cout << "wollen sie das Programm neustarten? (ja eintippen, ansonsten nein); ";
        cin >> restart;
        if (restart == "ja")// bei eingabe von ja
        {
            main();
        }
        if (restart == "nein")// bei eingabe von nein
        {
            return 0;
        }
    }
    cout <<"Bitte geben sie eine zweite Zahl ein: ";// Eingabe der zweiten Zahl
    cin >> zzahl;
        if (ezahl == ? )// falls die Zahl keine Zahl ist ...
    {
        cout << "Ungültige Eingabe bitte eine Zahl eingeben.\n";
        cout << "wollen sie das Programm neustarten? (ja eintippen, ansonsten nein); ";
        cin >> restart;
        if (restart == "ja")// bei eingabe von ja
        {
            main();
        }
        if (restart == "nein")// bei eingabe von nein
        {
            return 0;
        }
    cout <<"Bitte geben sie die Rechenart an: ";//Angabe der Rechenart
    cin >> rechenart;
cin.get();
}


Dieser Post wurde am 16.02.2011 um 14:11 Uhr von Pr0Pr0gg3r editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.02.2011, 18:29 Uhr
~f.-th.
Gast


Der Code den du zeigst ist ein wenig eigenwillig.
Habt ihr schon while oder do-while Schleifen?
Wo ist das switch im Code?

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.02.2011, 18:49 Uhr
Hans
Library Walker
(Operator)


Hi,

eine Möglichkeit, die Eingabe zu testen wäre so:

C++:
    cout <<"Bitte geben sie eine Zahl ein: ";
    cin >> ezahl;
    if (! cin) // falls die Zahl keine Zahl ist ...
    {
        cout << "Ungültige Eingabe bitte eine Zahl eingeben.\n";
      ...



Ansonsten geht es meisstens über den Umweg, eine Zahl erst mal als String anzunehmen, und diesen String zeichenweise darauf zu überprüfen, ob die einzelnen Teile auch Ziffern sind. Wenn ja, wird dieser String anschliessend mit einer spezeillen Funktion in eine Zahl umgewandelt, ansonsten ein Fehlermeldung ausgegeben.

Du hast da aber noch eine andere Konstruktion in dem Programm, die man an dieser Stelle nicht braucht, und das ist diese:

C++:
        if (restart == "ja")// bei eingabe von ja
        {
            main();


Das ist eine sogenannte Rekursion, d.h. das Programm ruft sich selbst noch mal auf. Das bewirkt in diesem Fall, dass das Programm noch mal vollständig neu gestartet wird. D.h. es belegt erneut Speicher für Variablen, evtl. auch Programmcode. Wenn du das öfter machst, hast Du irgendwann eine Menge Speicher nur von diesem Programm belegt, obwohl es gar nicht so viel davon braucht.
Die Lösung des Problems sind in diesem Fall Schleifen. Du packst die ganzen Abfragen nach den Zahlen und die Berechnungen in den Rumpf einer Schleife und wenn sich am Ende die Frage stellt, ob noch mal gerechnet werden soll, dann lässt du entweder die Schleife noch mal durch laufen, oder brichst sie ab. Danach beendest du das Programm.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.02.2011, 19:48 Uhr
Pr0Pr0gg3r



danke für die ganzen antworten hat mir sehr geholfen

Greetz.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: