Tabellen aanmaken adhv for-lussen en switch

Status
Niet open voor verdere reacties.

BlackRedThunder

Gebruiker
Lid geworden
7 okt 2008
Berichten
36
Hallo,
Ik wou dit maken:
er wordt gevraagd welke tabel je wilt (1 of 2) en dan toont hij die tabel;
indien je tabel 1 kiest:
1 2 3
4 5 6
7 8 9
indien tabel 2:
2 4 6
8 10 12
14 16 18

Ik probeerde deze code:
Code:
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	int tabel;
	
	cout << "Welke tabel wil je gebruiken? (1 of 2): ";
	cin >> tabel;

	switch (tabel)
	{
	case 1:	int getal = 1;
			for (int rij = 1; rij <= 3; rij++)
			{
				for (int kol = 1; kol <= 3; kol++)
				{
					cout << setw(2) << getal;
					getal++;
				}
				cout << endl;
			}
			cin.get();

	case 2:	int getal = 2;
			for (int rij = 1; rij <= 3; rij++)
			{
				for (int kol = 1; kol <= 3; kol++)
				{
					cout << setw(2) << getal;
					getal += 2;
				}
				cout << endl;
			}
			cin.get();
	}
	cin.get();
	return 0;
}

en visual c++ geeft 3 errors aan...
Als ik echter dit typ:
Code:
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	int tabel;
	
	cout << "Welke tabel wil je gebruiken? (1 of 2): ";
	cin >> tabel;

	switch (tabel)
	{
	case 1:	[B]{[/B]
			int getal = 1;
			for (int rij = 1; rij <= 3; rij++)
			{
				for (int kol = 1; kol <= 3; kol++)
				{
					cout << setw(2) << getal;
					getal++;
				}
				cout << endl;
			}
			cin.get();
			[B]}[/B]

	case 2:	[B]{[/B]
			int getal = 2;
			for (int rij = 1; rij <= 3; rij++)
			{
				for (int kol = 1; kol <= 3; kol++)
				{
					cout << setw(2) << getal;
					getal += 2;
				}
				cout << endl;
			}
			cin.get();
			[B]}[/B]
	}
	cin.get();
	return 0;
}

dus met '{ }' voor iedere case, dan werkt het programma wel, maar dan toont hij telkens beide tabellen samen...

Weet hier iemand waar het probleem zit?
Ik zou graag de switch-statement behouden, en liefst niet overgaan naar een for-else-statement :)

groeten Carsten
 
Waarschijnlijk toont hij alleen beide tabellen als je tabel 1 wilt zien. Case stopt namelijk niet aan het einde van de "case", maar gaat door met de volgende "cases". Om dit te voorkomen moet je "break;" zetten aan het einde van elke case.
Als je de accolades rond de case wilt vermijden moet je de declaratie "int getal" buiten de switch zetten. In de cases kan je dan "getal = ..;" zetten om hetzelfde resultaat te krijgen.
 
Ik zou graag de switch-statement behouden, en liefst niet overgaan naar een for-else-statement :)

Waarom als ik vragen mag ?

Code:
int main()
{
	unsigned int tabel(0);

    while(!(tabel >= 1 & tabel <= 2))
		std::cout << "Welke tabel wil je gebruiken (1 of 2): ", std::cin >> tabel;

	for(unsigned int i = 1; i < 10; i++)
	{
		std::cout << std::setw(3) << i * tabel;
		
		if(i % 3 == 0)
			std::cout << '\n';
	}

	system("PAUSE");
	return 0;
}
 
Waarom als ik vragen mag ?

Code:
int main()
{
	unsigned int tabel(0);

    while(!(tabel >= 1 & tabel <= 2))
		std::cout << "Welke tabel wil je gebruiken (1 of 2): ", std::cin >> tabel;

	for(unsigned int i = 1; i < 10; i++)
	{
		std::cout << std::setw(3) << i * tabel;
		
		if(i % 3 == 0)
			std::cout << '\n';
	}

	system("PAUSE");
	return 0;
}

Een for-else ging wel, maar een switch niet. Indien er meerdere gingen geweest zijn dan ging een switch wel interessanter geweest zijn. Aangezien dit niet lukte, wou ik weten waar het probleem zat :)
 
Waarschijnlijk toont hij alleen beide tabellen als je tabel 1 wilt zien. Case stopt namelijk niet aan het einde van de "case", maar gaat door met de volgende "cases". Om dit te voorkomen moet je "break;" zetten aan het einde van elke case.
Als je de accolades rond de case wilt vermijden moet je de declaratie "int getal" buiten de switch zetten. In de cases kan je dan "getal = ..;" zetten om hetzelfde resultaat te krijgen.

Heel erg bedankt! ;) deze werkt :) dat zulke kleine aanpassingen veel verschil kunnen maken :confused:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan