13. april 2008 - 21:06
Der er
15 kommentarer og 1 løsning
Switch og arrays
Jeg har to arrays med bestående af hhv tallene 0..9 og bogstavene a..z. Samtidig indtaster jeg et vilkårligt tegn - altså et tegn mellem a..z og 0..9. Jeg vil gerne afgøre, om tegnet er i arrayet a..z eller 0..9. Jeg tænkte på at bruge switch - men er der mulighed for at skrive noget i stil med: case ARRAY_1: ... .. . ? Jeg ved, at et alternativ er at lave en for-løkke - men hvis jeg skal lave det efter ovenstående metode, er jeg lidt på bar bund. Håber I kan hjælpe. Mvh H.C.
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
13. april 2008 - 21:13
#1
switch(c) { case 'a': case 'b': ... case 'z': // bogstav break: case '0': ... case '9': // tal break } eller if(c >= 'a' && c <= 'z') { // bogstav } else if(c >= '0' && c <= '9') { // tal } var 2 muligeheder
13. april 2008 - 21:15
#2
en tredie mulighed var: int bogstav[256] = { 0,0,...,1,1,...,0 }; og så bare: if(bogstav[c]) { NB: husk at bruge unsigned char !
13. april 2008 - 21:16
#3
Hmm ja, ok.. første mulighed var slave-metoden. Men nr. 2 er fin. Som min matematiklærer i folkeskolen altid fortalte mig: 1, 2 - du er go'! Læg gerne et svar :-)
13. april 2008 - 21:19
#4
- men hvis nu jeg har et array bestående af tegnene +,-,*, ...., hvordan ville jeg så gøre det? (Udover slave-metoden)
13. april 2008 - 21:24
#5
De er ikke fortløbenede. Det må være switch eller en if med ==||==||== eller array lookup.
13. april 2008 - 21:25
#6
Altså: if(c=='+' || c=='-' || ...)
13. april 2008 - 21:25
#7
og et svar
13. april 2008 - 21:27
#8
- hvordan laver man et array-lookup?
13. april 2008 - 21:33
#9
Array-loopup'et kunne vel være i stil med: for(i=0; i< <ANTAL TEGN I ARRAY>; i++) if(<INDTASTEDE CHAR> == ARRAYNAVN[i]) .. . ?
13. april 2008 - 22:05
#10
med array lookup mener jeg 21:15:56 teknikken
13. april 2008 - 22:35
#11
Hmm, jeg kan ikke helt få array-loopup'et til at fungere: int BOGSTAV[2] = {'a','b'}; unsigned char GAET; cin >> GAET; if(BOGSTAV[gaet]) { cout << "Ja"; } else { cout << "Nej"; }
13. april 2008 - 22:37
#12
arrayet skal være 256 langt hvis du sætter index 97 og 98 til 1 og resten til 0 så vil din if teste for om det er a eller b
13. april 2008 - 22:44
#13
Det vil sige, at jeg skal skrive alle 256 tegn ind? Og hvorfor lige tallet 256?
13. april 2008 - 22:55
#14
Der er 256 forskellige char værdier. Det nemmeste må være: int BOGSTAV[256] = { 0 }; ... BOGSTAV['a'] = 1; BOGSTAV['b'] = 1; ... if(BOSTAV[gaet])
13. april 2008 - 22:57
#15
Hvis du gerne vil have mere end 2 kategorier så lav noget a la: #include <stdio.h> int cat[256] = { 0 }; #define A_OR_B 1 #define X_OR_AST 2 #define OTHER 3 void init() { int i; cat['a'] = A_OR_B; cat['b'] = A_OR_B; cat['x'] = X_OR_AST; cat['*'] = X_OR_AST; } int main() { unsigned char c; init(); c = 'x'; if(cat[c] == A_OR_B) { printf("c er enten 'a' eller 'b'\n"); } else if(cat[c] == X_OR_AST) { printf("c er enten 'x' eller '*'\n"); } else { printf("c er noget andet\n"); } return 0; }
13. april 2008 - 23:05
#16
Fedt nok - det funker. Tak for hjælpen og tålmodigheden.
Kurser inden for grundlæggende programmering