Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » do while

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 < [ 2 ]
000
20.04.2005, 00:12 Uhr
~skiki
Gast


hallo
ich wollte mit dem folgenden Code, dass 2 Zahlen eingegeben werden, die zw. 1 und 10 und unterschiedlich sein müssen.

C++:
int x,y;
do
{
cout<<"\n gib 2 Zahlen ein(zahl von 1 bis10 ") ";
cin>>x>>y;
}while((x<0) || (x>10) || (y<0) || (y>10) || (x==y));


Aber leider die Schleife wiederholt sich unendlich viel egal was für Zahlen, die ich eingegeben habe.
was mache ich falsch?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.04.2005, 02:12 Uhr
typecast
aka loddab
(Operator)


1.) Der Code kompiliert nicht richtig (wegen dem ueberfluessigem " in der cout-Ausgabe).

2.) Entfernt man das ueberfluessige Anfuehrungszeichen, wird die Schleife verlassen, wenn du unterschiedliche Werte zwischen 0 und 10 (beides eingeschlossen) eingibst.

Bei mir sieht ein Durchlauf so aus:


Zitat:

cast:~/test-> ./a.out

gib 2 Zahlen ein(zahl von 1 bis10 ) -1 11

gib 2 Zahlen ein(zahl von 1 bis10 ) 1 12

gib 2 Zahlen ein(zahl von 1 bis10 ) 5 6
cast:~/test->



Wenn du die 0 ausschliessen moechtest, dann solltest du (x < 0) durch (x <= 0) ersetzen.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.04.2005, 13:41 Uhr
~skiki
Gast


Danke typecast
1./das Zeichen <"> in meinem obigen Code ist nur Tippfehler. in meinem Prog existiert nicht.

2./das Ausführen des Programms bei dir bestätigt dass kein fehler in der Schleife .
aber leider bei mir geht immer noch nicht!!! also ich benutze MsVc++ 6.0 professional edition.

die Frage jetzt gibt´s Alternativen für meinen Code oder was soll ich unternehmen?
P.S. ich muss leider mit der vorhanden software weiterarbeiten
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.04.2005, 15:39 Uhr
typecast
aka loddab
(Operator)


Nimm nen richtigen Compiler. Die neuen Compiler von M$ sind sogar frei erhaeltlich und sollen ganz brauchbar sein (ich spreche hier nur von Compiler nicht von der IDE)

Natuerlich koenntest du den Code umschreiben. So zum Bleistift:


C++:
// achtung: ungetestet
int x,y;
boolean passt = false;
do
{
  std::cout<<"Gib ne Zahl zwischen 1 und 10 ein:  ";
  std::cin >> x;
  if ((x <= 0) || (x > 10)) {
      std::cout << std::endl << "Die Zahl sollte schon zwischen 1 und 10 liegen!" << std::endl;
  }
  else
      passt = true;
}while(!passt);
passt = false;
do {
  std::cout << std::end << "Gib noch ne Zahl zwischen 1 und 10 an. Aber diesmal ne andere: ";
  std::cin >> y;
  if ((x <= 0) || (x > 10)) {
     std::cout <<std::endl << "Hallo! Zwischen 1 und 10 hab ich gesagt!" << std::endl;
  }
  else
     passt = true;
  if (x == y) {
     std::cout << std::endl << "Sollen das unterschiedliche Zahlen sein? Idiot!" std::endl;
     passt = false;
  }
} while (!passt);


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)

Dieser Post wurde am 21.04.2005 um 15:39 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.04.2005, 15:48 Uhr
Tommix



@typecast: Das Problem tritt auf, wenn man keine Zahl eingibt, also "x" oder so. Mit Deinen Eingaben funzelt das auch mit VC6.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.04.2005, 16:00 Uhr
ao

(Operator)


Also das hier

C++:
#include <iostream>

int main (void)
{
    int x,y;
    do
    {
        std::cout<<"\n gib 2 Zahlen ein(zahl von 1 bis10) ";
        std::cin>>x>>y;
    } while ( (x<0) || (x>10) || (y<0) || (y>10) || (x==y) );

    return 0;
}


funktioniert bei mir perfekt, auch mit VC++ 6.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.04.2005, 16:09 Uhr
Tommix



Auch wenn Du a b eingibst? Ich hab's eigentlich ganz genau so.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.04.2005, 16:14 Uhr
typecast
aka loddab
(Operator)


@Tommix: Das ist mir klar

Allerdings sagt skiki, dass er Zahlen eingegeben hat
Ich bin davon ausgangen, dass er diese Zahlen nicht ausgeschrieben hatte
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.04.2005, 16:23 Uhr
Tommix



Wenn dem Armen jetzt noch einer erklärt, wie er das Problem umgeht... Wir hatten das schon mal, ich komm' nur nicht drauf.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.04.2005, 16:38 Uhr
Tommix




C++:
#include <iostream>
using namespace std;

int main()
{
    int x = 0, y = 0;
    do
    {
        cout << "\n gib 2 Zahlen ein(zahl von 1 bis 10)";
        cin >> x >> y;

        if (cin.fail()) {
            cin.clear();
            cin.ignore(1024, '\n');
        }
        
    }while((x<0) || (x>10) || (y<0) || (y>10) || (x==y));
    
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


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: