C++ While

06/06/2013 21:37 reCougar#1
Hallo ich habe hier ein kleines Problem, bin noch blutiger Anfänger in C++(gerade angefangen) und ich habe dieses Beispiel aus dem Primer, jedoch funktioniert es nicht so wie es sollte, da die Befehle nach der While-Schleife nicht ausgeführt werden.
Code:
#include "stdafx.h"
#include <iostream>;

int main()
{
	int currVal = 0, val = 0;

		if(std::cin >> currVal)
		{
			int count = 1;

			while(std::cin >> val)
			{
				if(val == currVal)
					count++;
				else
				{
					std::cout << currVal << " occurs "
						<< count << " times " << std::endl;
					currVal = val;
					count = 1;
				}
			}
			std::cout << currVal << " occurs " << count << " times " << std::endl;	
		}

	return 0;
	
}
Ich danke euch einmal für eure Hilfe :)
06/06/2013 21:44 Schlüsselbein#2
Was für ein Verhalten erwartest du genau bei welcher Eingabe?
Schau dir die Abbruchbedingung an und überlege, was erfüllt sein muss damit du aus der Schleife springst.
06/06/2013 21:48 reCougar#3
Ich möchte, dass er Zahlen zählt. Also wenn der Input 1 1 1 2 2 3 3 ist sollte er halt 1=3,2=2,3=2 ausgeben, jedoch lässt er den letzten wert aus, also die 3
06/07/2013 01:48 Schlüsselbein#4
Ohne dein Code jetzt genau angeschaut zu haben: Benutz den Debugger. Der Umgang mit ihm ist einfach unverzichtbar - auch wenns jetzt zu Beginn vielleicht nicht so aussieht.

Allgemein zeigt die Erfahrung, dass die Leute diesen viel zu wenig benutzen. Gerade hier im Forum lassen sich 2 von 3 Problemen mit der Hilfe des Debuggers lösen.
06/07/2013 02:59 marykillsjane#5
Quote:
Originally Posted by reCougar View Post
Hallo ich habe hier ein kleines Problem, bin noch blutiger Anfänger in C++(gerade angefangen) und ich habe dieses Beispiel aus dem Primer, jedoch funktioniert es nicht so wie es sollte, da die Befehle nach der While-Schleife nicht ausgeführt werden.
Code:
#include "stdafx.h"
#include <iostream>;

int main()
{
	int currVal = 0, val = 0;

		if(std::cin >> currVal)
		{
			int count = 1;

			while(std::cin >> val)
			{
				if(val == currVal)
					count++;
				else
				{
					std::cout << currVal << " occurs "
						<< count << " times " << std::endl;
					currVal = val;
					count = 1;
				}
			}
			std::cout << currVal << " occurs " << count << " times " << std::endl;	
		}

	return 0;
	
}
Ich danke euch einmal für eure Hilfe :)
Hi ,
das Problem ist ,dass du eine Klammer beim abschreiben falsch gesetzt hast schätze ich.
Deine While Schleife wird solange ausgeführt bis deine Bedingung(std::cin ) fehlschlägt.Das tut sie zum Beispiel ,wenn du ein Zeichen welches keine Zahl ist in eine int Variable einliest.Wenn du nur Zahlen eingibst läuft deine Schleife "für immer"(solange bis du dein Programm beendest).Ich nehme einfach mal an ,dass nach jeder Eingabe die letzte Zeile ausgeführt werden soll (std::cout << currVal << " occurs " << count << " times " << std::endl;)


Probier mal ob das hier den von den gewollten Effekt herbeiführt ,wenn nicht hab ich dich wohl falsch verstanden ,dann musste nochmal bisschen genauer erklären was denn genau passieren soll.

Code:
#include <iostream>
int main()
{
	int currVal = 0, val = 0;

		if(std::cin >> currVal)
		{
			int count = 1;

			while(std::cin >> val)
			{
				if(val == currVal)
					count++;
				else
				{
					std::cout << currVal << " occurs "
						<< count << " times " << std::endl;
					currVal = val;
					count = 1;
				}
			

			std::cout << currVal << " occurs " << count << " times " << std::endl;	
			}
		}

	return 0;
	
}
06/07/2013 19:23 MoepMeep#6
Quote:
Originally Posted by Schlüsselbein View Post
Ohne dein Code jetzt genau angeschaut zu haben: Benutz den Debugger. Der Umgang mit ihm ist einfach unverzichtbar - auch wenns jetzt zu Beginn vielleicht nicht so aussieht.

Allgemein zeigt die Erfahrung, dass die Leute diesen viel zu wenig benutzen. Gerade hier im Forum lassen sich 3 von 3 Problemen mit der Hilfe des Debuggers lösen.
Behoben, npnp.