Umu logo

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:

  1. Hur löser vi detta problem?
  2. Hur kan vi formulera lösningen som en algoritm?
  3. Kan vi omvandla algoritmen till ett C-program?

Lös programmeringsproblemen nedan genom att använda denna metod

  1. Beräkna hur mycket färg det går åt för att måla ett krocketklot av en viss diameter.
  2. 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.

  1. Avgör om ett tal n är ett primtal.
  2. Beräkna summan av alla tal mellan 1 och n.
  3. Hitta det största primtalet mellan två tal a och b.
  4. 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.
  5. Hitta den engelska översättningen av ett svenskt ord. Till vår hjälp har vi ett svenskt-engelskt lexikon.
  6. Samma uppgift som ovan men nu har vi ett engelskt-svenskt lexikon. Vilken av uppgifterna är enklast? Syns denna skillnad i din algoritm?
  7. Översätta en hel text från svenska till engelska ord för ord.
  8. Hitta det största talet i en lista av tal.
  9. Sortera en lista av tal i storleksordning.
  10. Hitta ut ur en labyrint.
  11. Avgöra om två personer som står i en labyrint kan se varandra.


© Niklas Frykholm, februari 1999