Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Programovani C - switch case

Tenhle program by mel prevadet velka pismena na mala a naopak, nevite proc mi to hazi error "case label does not reduce to an integer constant"?

#include <stdio.h>

int main(){
	char a;
	char b;
	
	scanf("%c", &a);
	switch(a){
		case a<91:
			b = a + 32;
		break;
		case a>97:
			b = a - 32;
		break;
	}
	printf("%c", b);
}
Předmět Autor Datum
Pretoze na toto treba pouzit if a nie switch. "case label" je v tvojom pripade a<91 a a>97, a to ko…
x22 09.03.2007 10:37
x22
Za "case" musí následovat výraz, který je možné v době překladu vyhodnotit jako integer. To tvoje po…
Ynd0r 09.03.2007 10:39
Ynd0r
Diky, muzes mi jeste prosim poradit co mam napsat za : kdyz mam treba vyraz (znak>=48 && znak<=57)?…
zacatecnik 09.03.2007 12:44
zacatecnik
cpp.html poslední
Ynd0r 09.03.2007 14:08
Ynd0r
Co takhle jednoduché makro, napadá mě třeba: #define UpCase(c) ( ((c)>='a' && (c)<='z')?(c)-('a'-'A…
MaSo 09.03.2007 13:23
MaSo

Za "case" musí následovat výraz, který je možné v době překladu vyhodnotit jako integer. To tvoje podmínky nejsou. Pro tenhle úkol se switch nehodí, použij normální if/else nebo třeba celý switch nahraď výrazem b=((a<91)?(a+32):((a>97)?(a-32):b))

Diky, muzes mi jeste prosim poradit co mam napsat za : kdyz mam treba vyraz (znak>=48 && znak<=57)? printf("Cislice %c", znak): ; kdyz tam prakticky uz nic nepotrebuju? Musim tam napsat treba printf(""); nebo je neco jednodussiho?

Zpět do poradny Odpovědět na původní otázku Nahoru