L?sningsforslag til ukeoppgaver uken 9. til 15. september 2008 Oppgave 1 --------- enum Farge { Svart, Hvit; } enum Brikketype { Konge, Dronning, L?per, Springer, T?rn, Bonde; char merke() { return toString().charAt(0); } } Oppgave 2 --------- int main () { int c, LF; LF = 10; c = getchar(); while (c != LF) { if (c < '0') { } else { if (c <= '9') { putchar(c); } else { if (c < 'A') { } else { if (c <= 'Z') { putchar(c); } else { if (c < 'a') { } else { if (c <= 'z') { c = c - 32; putchar(c); } } } } } } c = getchar(); } putchar(LF); } En annen l?sning er denne: int main () { int c, LF, test1, test2, test1and2, test3, test4, test3and4, test5, test6, test5and6; LF = 10; c = getchar(); while (c != LF) { test1 = c >= '0'; test2 = c <= '9'; test1and2 = test1 * test2; test3 = c >= 'A'; test4 = c <= 'Z'; test3and4 = test3 * test4; test5 = c >= 'a'; test6 = c <= 'z'; test5and6 = test5 * test6; /* Merk: * som fungerer som && her og + fungerer som ||. */ if (test1and2 + test3and4) { putchar(c); } if (test5and6) { c = c - 32; putchar(c); } c = getchar(); } putchar(LF); } Oppgave 3 --------- 1. Utrolig mange l?sninger, for eksempel ADD R0,R0,R0 SUB R1,R1,R0 JUMPNEQ R0,R0,0 JUMPEQ R0,R0,Neste Neste: 2. SET R21,R0,1 ADD R1,R1,R21 eller SET R1,R1,1 3. SET R21,R1,0 SET R1,R11,0 SET R11,R21,0 4. SET R21,R0,'0' SET R22,R0,'9' GTREQ R23,R1,R21 LESSEQ R24,R1,R22 MUL R1,R23,R24 eller SET R21,R0,'0' GTREQ R21,R1,R21 JUMPEQ R21,R0,Nei SET R21,R0,'9' LESSEQ R21,R1,R21 JUMPEQ R21,R0,Nei SET R1,R0,1 JUMPEQ R0,R0,Ferdig Nei: SET R1,R0,0 Ferdig: 5. SET R21,R0,'A' SET R22,R0,'Z' SET R23,R0,'a' SET R24,R0,'z' GTREQ R25,R1,R21 LESSEQ R26,R1,R22 GTREQ R27,R1,R23 LESSEQ R28,R1,R24 MUL R29,R25,R26 # Simulerer AND MUL R30,R27,R28 # Simulerer AND ADD R1,R29,R30 # Simulerer OR GTR R1,R1,R0 # (Kan egentlig sl?yfes, siden et tegn # aldri kan v?re b?de stort og lite.) eller SET R21,R0,'A' GTREQ R21,R1,R21 JUMPEQ R21,R0,Nei SET R21,R0,'Z' LESSEQ R21,R1,R21 JUMPNEQ R21,R0,Ja SET R21,R0,'a' GTREQ R21,R1,R21 JUMPEQ R21,R0,Nei SET R21,R0,'z' LESSEQ R21,R1,R21 JUMPEQ R21,R0,Nei Ja: SET R1,R0,1 JUMPEQ R0,R0,Ferdig Nei: SET R1,R0,0 Ferdig: