Programmering grundkurs och Programmering C
för D1 m fl, även distanskursen
torsdag 21 augusti 2008 kl 08:00 - 13:00
Gäller som tentamen för:
DT1016 Datateknik A, Programmering grundkurs, provkod 0100
DT1007 Datateknik A, Tillämpad datavetenskap, provkod 0410
DT1006 Datateknik A, Programmering C, distans, provkod 0100
PRG045 Programmering C, provkod 0110 (och 0100, och 0101)
TDD121 Tillämpad datavetenskap A, provkod 0700 (och 0400)
TDP118 Programmering C, distans, provkod 0110 (och 0100)
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 36.
För godkänt betyg (3 respektive G) krävs 18 poäng. |
Resultat och lösningar: | Meddelas via e-post eller på campuskursens hemsida, http://www.aass.oru.se/~tpy/c/2007-2008-p2/, senast torsdag 11 september 2008. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-73 47 013. |
Prioritet | Kategori | Operator | Associativitet |
---|---|---|---|
Högsta | Unära postfixoperatorer | (), [], ->, ., ++, -- | vänster |
Unära prefixoperatorer | !, ++, --, +, -, *, &, sizeof, (typ) | höger | |
Multiplikation mm | *, /, % | vänster | |
Addition mm | +, - | vänster | |
Jämförelser | <, <=, >=, > | vänster | |
Likhetsjämförelser | ==, != | vänster | |
Logiskt OCH | && | vänster | |
Logiskt ELLER | || | vänster | |
Lägsta | Tilldelning | =, +=, -=, *=, /=, %= | höger |
a) 1 / 2 * 3 + 4
b) 1 / (2 * 3) + 4
x = 1; y = 5; while (x < y) { ++x; y--; z = x + y; }
Vi vill hjälpa flygledarna i kontrolltornet att hålla reda på alla sina flygplan. Därför ska vi skapa en posttyp som heter struct Flygplan, och som innehåller data om ett flygplan.
Ett flygplan har ett nummer, som är ett heltal, och en position som består av tre koordinater: x, y och h (som betyder "höjd"). Koordinaterna är flyttal. Dessutom har flygplanet en beteckning, till exempel SE-SXN.
Definiera posttypen struct Flygplan.
Nummer: 193 Beteckning: DK-KRX Position: x = 1525.33, y = 5923.22, h = 103.00
Du får själv välja om du vill att funktionshuvudet ska se ut så här:
struct Flygplan las_flygplan()
eller så här:
void las_flygplan(struct Flygplan *p)
I den här och alla andra uppgifter på tentan gäller: Om du ska använda något från en tidigare uppgift eller deluppgift, till exempel anropa en funktion som skrevs i den tidigare uppgiften, så behöver du inte skriva samma kod igen. Du får också göra uppgiften även om du inte gjort den tidigare uppgiften. |
x-, y- och h-koordinaterna för flygplanen är uttryckta i meter, så om det ena flygplanet har koordinaterna x1, y1 och h1, och det andra flygplanet har koordinaterna x2, y2 och h2, anges avståndet mellan dem av den här formeln:
Välj själv om det ska vara en text- eller en binärfil, och hur inmatningen av flygplan ska avslutas. Tala i bägge fallen om vad du valde!
Vi kan anta att det inte finns mer än 1000 flygplan på filen.
Programmet ska använda funktionen avstand för att beräkna avståndet mellan varje par av flygplan. För varje par av flygplan som är närmare varandra än 1000 meter, ska programmet skriva ut en varning. En sådan varning kan till exempel se ut så här:
Varning! Dessa två flygplan befinner sig bara 118.66 meter från varandra: Nummer: 193 Beteckning: DK-KRX Position: x = 1525.33, y = 5923.22, h = 103.00 Nummer: 7929 Beteckning: SE-KRK Position: x = 1582.39, y = 6001.09, h = 172.00
Tips 1: Läs först in alla flygplanen till en array ("vektor"). Beräkna sen, för vart och ett av flygplanen i arrayen, avståndet till vart och ett av de andra planen i arrayen.
Tips 2: Man kan anropa funktionen visa_flygplan för utskriften i varningen.