Autor Thema: Zahl = Alles gut , Buchstabe = CPU Auslastung über 100%  (Gelesen 8422 mal)

Paula

  • Gast
Gespeichert
Hallo,
ich arbeite grade an einen Teil für meinen Kernel.
Code:
//
//  main.cpp
//  WhileGotoDauerschleife
//
//  Created by Paula on 22.04.14.
//  Copyright (c) 2014 Test. All rights reserved.
//

#include <iostream>

using namespace std;

int zahl;

int main()
{
start:;
   
    cout << "Zahl: ";
    cin >> zahl;
   
    if(zahl==1)
    {
        cout << "a" << endl;
        goto start;
    }
    else
    {
        cout << "b" << endl;
        goto start;
    }
    return 0;
}
Das ist eine Dauerschleife, die halt separat neben dem Projekt "entwickelt" wird (Ich mach das lieber getrennt, wegen Testversuchen).
Das Problem ist das wenn ich einen Buchstaben eingebe nur noch b kommt und zwar unendlich.
Und da springt meine CPU Anzeige dann auf rot und die Aktivitätsanzeige sagt zur CPU Auslastung: 105% -109%.

Was kann ich tun damit der Fehler nicht kommt?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 22. April 2014, 15:26 »
Du musst prüfen, ob cin << zahl; überhaupt die eingabe verarbeiten konnte. Wenn der eingegebene Wert wie beispielsweise ein Buchstabe nicht in eine Zahl umgewandelt werden kann, kann in der Variable zahl auch nichts sinnvolles stehen. Der eingebene Wert ist offensichtlich ungleich eins, und somit wird immer b ausgegeben. Die Endlosschleife entsteht, weil er erneut versucht die Eingabe zu lesen, und diese wieder ungültig ist.

Nach einer Eingabe musst du also vor der Verarbeitung der Werte prüfen, ob diese eingelesen werden konnten. Dazu kannst du beispielsweise prüfen, ob cin.fail() false ist. Dann kannst du den Wert verwenden.
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen