Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Schleife endet nicht

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
01.12.2004, 16:56 Uhr
mimi1983



Hallo,
hab ein programm mit C++ erstellt, dass werte einliest und bei wert 0 schluss macht und mir den durchnitt aller werte anzeigt, aber irgendwie will die schleife net aufhören, obwohl ich sie in der Bedingung festgelegt habe.
Sieht jemand den Fehler und lässt sich der durchnitt anzeigen:

C++:
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    int werte, summe;
    werte = 0;
    summe = 0;
    
    do
    {
        cout << "Geben Sie ihre werte ein [ 0 beendet ]" << endl;
        cin >> werte;
        werte++;                //addiere die werte
        
}  while( werte != 0);            // Wenn werte gleich 0, beende die schleife
    
    cout << "Sie haben 0 eingegeben! unzuläsig" << endl;
    summe = werte / werte++;        // Durchnitt der aller eingegebenen werte
    
    cout << "Durchnitt ihrer werte" << endl;
    cout << summe << endl;
    
    
    
  system("PAUSE");    
  return 0;
}


Dieser Post wurde am 01.12.2004 um 17:57 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.12.2004, 17:11 Uhr
virtual
Sexiest Bit alive
(Operator)


werte++ Addiert 1 zu werte hinzu. Die Schleife terminiert also genau dann, wenn du -1 eingibst.
Du solltest den ++ Operator nur dann anwenden, wenn Du weisst, was er macht. Der Source legt nahe, daß du ein Tutorial lesen solltest, um Dir Frust zu ersparen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.12.2004, 20:10 Uhr
RedEagle



Du müsstest Prüfen, ob "wert" großer oder kleine 0 ist, und den entsprechend abzeihen "--" oder zuzählen "++"

ps.: Musst das Prog nicht bei ~32500 Abstürtzen
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.12.2004, 20:11 Uhr
Pablo
Supertux
(Operator)


Nur so am Rande, wert++ heißt wert=wert+1. Und wie virtual schon gesagt hat, du solltest wirklich ein C/C++ Handbuch zuerst lesen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 01.12.2004 um 20:12 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.12.2004, 20:21 Uhr
RedEagle



wert++ kann aber auch wert += 1 heißen

Ich glaube du meinst sowas

C++:
int main()
{
    int summe=0;
    int eingabe; //hier war ein n zuviel
    int wert=0;
    int counter= 0; //Zum zählen //war vorher -1

    do
    {
        counter++;                //Zählt die eingaben (Jetzt wird der Wert 0 (Beim 1. Durchlauf))
        cout << "Geben Sie ihre werte ein [ 0 beendet ]" << endl;
        cin >> eingabe;        
        wert += eingabe; //hier ebenfalls eines
}  while( eingabe != 0);            // Wenn werte gleich 0, beende die schleife
    
    cout << "Sie haben 0 eingegeben! unzuläsig" << endl;
    summe = werte / counter++;        // Durchnitt der aller eingegebenen werte
    
    cout << "Durchnitt ihrer werte" << endl;
    cout << summe << endl;
    
    
    
  system("PAUSE");    
  return 0;
}



Ungetestet, und nicht perfekt, aber sollte funktionieren (Hoffe ich )


Bearbeitung:

habs mal lauffähig gemacht
beim ersten durchlauf wenn man 0 eingibt kommt 0/0 raus, das ist undefiniert


--
MFG RedEagle

Dieser Post wurde am 04.12.2004 um 17:14 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.12.2004, 18:23 Uhr
~gast
Gast


meiner meinung nach ist die zeile


C++:
summe = werte / counter++;        // Durchnitt der aller eingegebenen werte



falsch, da sie den counter um 1 erhöht, obwohl man doch schon gar nichts mehr eingibt.
es muss sein:


C++:
summe = werte / counter;


außerdem, wenn man beim 1. mal 0 eingibt, ist das nicht undefiniert, da vorher counter auf 1 inkrementiert wurde => das ergebnis ist 0/1 = 0

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.12.2004, 18:24 Uhr
~gast
Gast


nochwas: summe sollte wirklich kein int sein...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.12.2004, 17:13 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


summe war vorher auf -1 definiert und initialisiert worden, beim ersten lauf wäre es dann 0 gewesen, wenn man 0 eingibt -> 0/0 -> undefiniert
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: