Løsningsforslag til ukeoppgaver uken 12. til 17. september 2007 Oppgave 1 --------- enum Farge { Svart, Hvit; } enum Brikketype { Konge, Dronning, Løper, Springer, Tårn, Bonde; char merke() { return toString().charAt(0); } } Oppgave 2 --------- func 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: func 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 JUMPEQ R0,R0,Neste Neste: 2. SET R21,R0,1 ADD R1,R1,R21 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: