Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi Ihr,

ich versuche gerade C++ zu lernen, und habe mir ein kleines Progrämmchen geschrieben. Dieses soll einfach nur vom Benutzer Zahlen einlesen, und diese addieren. Wenn der Benutzer eine negative Zahl eingibt soll das Programm abbrechen und die Gesamtsumme hinschreiben. Wenn ich aber eine negative Zahl eingebe macnt das Programm was komisches, es scheint immer wieder meine Schleife zu durchlaufen, den cin-Befehl jedoch auszulassen (es bricht auch nicht ab).

Das versteh ich nicht...hat jemand von euch vielleicht eine Idee warum das nicht geht? Hier noch der Code:

  

#include <stdio.h>

#include <iostream.h>


int main (int nArgs, char* pszArgs[])


{

	int nAccVal=0, nInput=0, i=0;


	for (;  

	{


		cout << "Gib die " << ++i << ". Zahl ein :"; 

		cin >> nInput; 


		if (nInput < 0)

		{

			break;

		}


		nAccVal += nInput;

	} 


	cout << nAccVal;


return 0;

}

[/code]

P.S. Ich weiß jetzt nicht wie ich den Smiley aus meiner for-Schleife bekomme, das soll einfach ne Endlos-Schleife mit for und zwei Strichpunkten sein.

<FONT COLOR="#a62a2a" SIZE="1">[ 22. Juli 2001 14:24: Beitrag 2 mal editiert, zuletzt von BunteKuh ]</font>

Geschrieben

1. um das smily raus zu bekommen musst du unten den hacken setzen "Smilies in diesem Beitrag deaktivieren"

2. diese schleife ist etwas unschoen geloest ich wuerde es wie folgt realisieren

  

#include <stdio.h>

#include <iostream.h>


int main (int nArgs, char* pszArgs[])

{

bool reread = true;

	int nAccVal=0, nInput=0, i=0;


	while(reread == true)

	{


		cout << "Gib die " << ++i << ". Zahl ein :"; 

		cin >> nInput; 


		if (nInput < 0)

		{

			reread = false;

		}

                else

                {		

		   nAccVal += nInput;

                }

	} 


	cout << nAccVal;


return 0;

}

bin mir aber mit der exacten syntax nicht so sicher, ich hab hier zZ keinen compiler, musst es halt ausprobieren

<FONT COLOR="#a62a2a" SIZE="1">[ 22. Juli 2001 14:32: Beitrag 1 mal editiert, zuletzt von [Hasi] ]</font>

Geschrieben

Hi,

also ich hab das Programm ausprobiert.

Und es klappt eigentlich auch so wie es soll.

?Ist der gepostete Code wirklich identisch mit deinem Programm?

?Erzeugt dein Programm irgend eine Ausgabe?

Der Hinweis die Bedingung des Schleifenabbruches nicht irgendwo in der Schleife zu verstecken ist gut, weil es die Lesbarkeit des Programmes verbessert, wobei die reread- Variable eigentlich überflüssig ist.

Es reicht deine Input-Variable auf >= 0 zu testen.

Hoagi

Geschrieben

Hallo.

Ich habe den Code eben mit copy&paste kopiert, ausgeführt und es ging.

Da ist kein Fehler im Code.

Wenn der wirklich identisch mit dem Code ist, den du in deinem Programm stehen hast, könnte es allenfalls an den Compilereinstellungen liegen.

cya

Geschrieben

Oh wie peinlich, das geht tatsächlich...ich habe scheinbar anstatt -1 immer /1 eingegeben (wegen meiner englischen Tastaturbelegung). Tja, und da der Fehler wirklich seltsam ist hab ich halt stundenlang den Code geprüft und keinen Fehler gefunden...

Tut mir leid. Trotzdem Danke für die Mühe die ihr euch gemacht habt.

Geschrieben

Solche Fehler gibt´s halt und manchmal ist das Naheliegendste nicht daß, wonach man sucht. Ich habe mich mal über seltsame Fehlermeldungen beim Programmaustieg gewundert. Lange hat es gedauert, bis ich bemerkt habe, daß der Fehlercode nichts weiter war als der Tasten-RAW-Code der zuletzt gedrückten Taste! Mit einer eigenen Exit-Message war dann - oh Wunder - der sog. "Fehler" behoben. Vielleicht haben ja andere auch solche komischen Möchtegernfehler gehabt, wäre mal interessant zu hören was einem noch so blödes passieren kann. FEHLER DIE KEINE SIND!

Geschrieben

den spaß hab ich ständig, da ich laufend zwischen verschiedenen programmiersprachen hin und her wechsel (je nach bedarf und laune meines meisters) ... was zur folge hat, daß man sehr leicht die syntax durcheinanderschmeißt ...

mir hilft es immer, wenn ich meine programme jemand anders erkläre, beziehungsweise die fehlerhafte funktion ... dann macht es oft *pling* bei mir und ich sehe wo der fehler lag.

ist immer geil, stundenlang suchst du n fehler und findest nix, dann zeigst du dein problem jemand anders und hast selber die lösung gefunden, noch bevor der andere weiß worum es geht ... *narf narf*

Geschrieben

@poldi

noch lustiger ist es mit z.B. C++Kenntnissen in der Berufsschule zu sitzen! Wenn man da einen Fehler im Programm hat, bekommt man auch noch verwirrende Vorschläge der Lehrer zu hören, die von der Lösung ablenken! *grrr* (Boote halt zum 25ten Mal neu, vielleicht gehts dann!!!!!!) *kopfschüttel*

Geschrieben

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von admINofDAw33k:

<STRONG>Wenn man da einen Fehler im Programm hat, bekommt man auch noch verwirrende Vorschläge der Lehrer zu hören, die von der Lösung ablenken! *grrr* (Boote halt zum 25ten Mal neu, vielleicht gehts dann!!!!!!) *kopfschüttel*</STRONG>

Geschrieben

Hallo buntekuh,

eine Anmerkung habe ich noch zu Benutzereingaben im Allgemeinen: da - wie in Deinem Fall - nicht sichergestellt ist, daß Benutzer nur gültige Eingaben machen (im Gegenteil), ist es immer sinnvoll, kleine oder größere Validierungen einzubauen. bei cin , ebenso wie bei scanf(), bleibt alles ab dem Zeichen, das nicht mehr korrekt interpretiert werden kann, einfach im Eingabepuffer stehen.

Abhilfe in C++ bietet die Methode bool ios::good(void), die anzeigt, ob der Puffer vollständig ausgelesen wurde.

Beispiel:

if( !cin.good() )

{

  cerr << "Müll im Puffer!" << endl;

  cin.getline();  // liest den Pufferinhalt aus

  cin.clear();    // error flags zurücksetzen

  // hier weitere Anweisungen

}

Viel Spaß weiterhin!

Der Käptn

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...