Help with switch please :)

Hey guys. I've started programming about 4-5 days ago and I wanted to make my first "real" program. It was an idea I just got, it simply prompts the user to select colours and if they, say, want to use colour 2 and let's pretend 2 = blue, it would've made the text blue or background blue depending on the prompt. The system("color 09"); works fine, but obviously I need a switch instruction, however whenever I try to use my int function (Initailly a void function by accident), the compiler debugs it fine and the program works, but the colours don't change at all! Please help me!!! D: I've even tried directly pasting the switch program onto the main but it still didn't fix it. PS: SORRY ABOUT THE ITALIAN COMMENTS! Just ignore them xD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <Windows.h>
#include <stdlib.h>
#include <string>
#include <string.h>
using namespace std;

/* Background colours:		Foregorund colours:
	0 = Black				8 = Gray
	1 = Blue				9 = Light Blue
	2 = Green				A = Light Green
	3 = Aqua				B = Light Aqua
	4 = Red					C = Light Red
	5 = Purple				D = Light Purple
	6 = Yellow				E = Light Yellow
	7 = White				F = Bright White
*/

// Questa funzione di tipo void colora il testo in base alla rispota dell'utente
void coloretesto(char a)
{
	switch (a)
	{
	case 1: system("color 1c"); break;
	case 2: system("color 1c"); break;
	}
}

// Questa funzione di tipo void colora lo sfondo in base alla rispota dell'utente

// Questo programma chiede l'input all'utente per il cambio del colore del testo e dello sfondo della console

int main()
{
	// Dichiarazione caratteri t(testo) e s(sfondo) e stringa risposta
	char t, s;
	string risposta;
	// Richiesta dell'input per il colore del testo
restart:
	cout << "Ciao! Di che colore vorresti il testo? " << endl;
	// Colori disponibili da scegliere per il testo
	cout << "1. Grigio\n2. Azzurro\n3. Verde Chiaro\n4. Celeste\n5. Rosso Chiaro\n6. Viola Chiaro\n7. Giallo Chiaro\n8. Bianco\n";
	// Input per il colore del testo
	cin >> t;
	// Funzione colore testo
	coloretesto(t);
	// Svuotamento console
	system("cls");
	// Richiesta dell'input per il colore dello sfondo
	cout << "Bella scelta! Invece di che colore vorresti lo sfondo?" << endl;
	// Colori disponibili da scegliere per lo sfondo
	cout << "1. Blu\n2. Verde\n3. Acqua\n4. Rosso\n5. Viola\n6. Giallo\n7. Bianco\n";
	// Input per il colore dello sfondo
	cin >> s;
	// Funzione colore sfondo

	// Svuotamento console
	system("cls");
	// Fine e richiesta di ricominciare da capo con ciclo while per evitare risposta sbagliata
	while (risposta != "si" || risposta != "Si")
	{
                system("cls");
		cout << "Tutto fatto! Vorresti scegliere altri colori? (Si/No)\n";
		getline(cin, risposta);

		if (risposta == "si" || risposta == "Si")
		{
			system("cls");
			goto restart;
		}
		else if (risposta == "no" || risposta == "No")
			break;
	}
	// Pausa console
	return 0;
}
Last edited on
Bump! Does anyone know why? It's probably sooo simple D:
Solved it! Switch (a) needs to specify something, I changed it to Switch (a > 0) stupid me hahaha
I changed it to Switch (a > 0)

That's not your problem and causes a different problem.

Your initial problem is that at line 20 your argument is defined as type char.
The branches of your switch statement need to be of type char also.
22
23
24
25
26
	switch (a)
	{
	case '1': system("color 1c"); break;
	case '2': system("color 1c"); break;
	}

Note the character literals rather than binary values.

Your switch (a > 0) is going to cause a different problem.
(a>0) is a boolean expression which will result in a 1 or 0. If the expression is true, you will take branch 1, but you will never get to branch 2.


Last edited on
Ttytyty
Topic archived. No new replies allowed.