Umeå Universitet
Institutionen för datavetenskap
Programmeringsteknik för tekniska fysiker
Niklas Frykholm, 24 februari 1999
Gruppövning 1
a) Finn sex fel
#include <stdio.h>
/* Detta program beräknar sinus eller cosinus av ett
tal. /*
int main(void)
{
int val;
double tal;
printf("Vad vill du göra?\n");
printf("(1 = beräkna sinus, 2 = beräkna cosinus): ");
scanf("%lf", &val);
printf("Ange talet: ");
scanf("%lf", tal);
if (val=1)
printf("sin(%lf) = %lf\n", tal, sin(tal))
else
printf("cos(%lf) = %lf\n", tal, cos(tal));
return 0;
}
b) Operatorer och uttryck
Vilka värden har följande uttryck? Anta att i och
j är heltalsvariabler som har värdena 3 respektive 7
för varje uttryck.
i <= j
i = j
2 + j % i
j / i * 2
j == i
i && i - 3
c) Problemlösning och programmering
Att lösa ett programmeringsproblem innebär oftast att försöka
besvara tre frågor:
- Hur löser vi detta problem?
- Hur kan vi formulera lösningen som en algoritm?
- Kan vi omvandla algoritmen till ett C-program?
Lös programmeringsproblemen nedan genom att använda denna metod
- Beräkna hur mycket färg det går åt för att måla ett krocketklot
av en viss diameter.
- Avgör utifrån en persons födelsedatum hur gammal den personen
är idag.
d) Problemlösning
För problemen nedan kan vi inte tillräckligt mycket om C ännu för
att göra steg 3, men se om du kan göra steg 1-2.
- Avgör om ett tal n är ett primtal.
- Beräkna summan av alla tal mellan 1 och n.
- Hitta det största primtalet mellan två tal a och b.
- Avgör om ett tal n är perfekt. Ett tal är perfekt om talet är
lika med summan av alla tal som talet är delbart med (utom talet själv).
T ex är talet 6 perfekt eftersom 6 delas av 1, 2 och 3 och 6 = 1 + 2 + 3.
- Hitta den engelska översättningen av ett svenskt ord. Till vår hjälp
har vi ett svenskt-engelskt lexikon.
- Samma uppgift som ovan men nu har vi ett engelskt-svenskt lexikon.
Vilken av uppgifterna är enklast? Syns denna skillnad i din algoritm?
- Översätta en hel text från svenska till engelska ord för ord.
- Hitta det största talet i en lista av tal.
- Sortera en lista av tal i storleksordning.
- Hitta ut ur en labyrint.
- Avgöra om två personer som står i en labyrint kan se varandra.
© Niklas Frykholm, februari 1999