Programmering grundkurs och Programmering C
för D1 m fl, även distanskursen
lördag 22 november 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 40.
För godkänt betyg (3 respektive G) krävs 20 poäng. |
Resultat och lösningar: | Meddelas via e-post eller på campuskursens hemsida, http://www.aass.oru.se/~tpy/c/2008-2009-p2/, senast lördag 13 december 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
b = 1; a = 5; while (a > b) { b = b + 2; --a; c = a * b; }
b) (1p) Variablerna filip och fredrik är heltalsvariabler. Skriv ett anrop till funktionen bytplats, som gör att variablernas innehåll byter plats.
c) (1p) Bör man verkligen kalla variabler för filip och fredrik? Ge exmepel på en situation där det kan vara motiverat att kalla ett par variabler så.
Skriv därför ett komplett C-program som först läser in värden på x och y, beräknar uttrycket, och till sist skriver ut uttryckets värde. Beräkningarna ska ske med flyttal.
Om deluttrycket x-y är noll, eller om hela deluttrycket under roten är mindre än noll, går uttrycket inte att beräkna. I så fall ska programmet inte försöka beräkna uttrycket, utan det ska i stället skriva ut ett informativt och rättvisande felmeddelande om saken.
Universitetslärare skriver ganska mycket på tavlan. Ibland ligger det tavelpennor i klassrummet när man kommer dit, och ibland har läraren med sig egna pennor. För att spara pengar ska Örebro universitet nu strukturera upp användningen av pennor, och vi ska förstås göra ett C-program för att hålla reda på pennorna.
Varje penna ska ha ett unikt nummer, som är ett heltal, och som också skrivs på en etikett på pennan. Dessutom har varje penna ett modellnamn, till exmepel Artline 517, och en färg, till exmepel svart. Pennan har också en vikt mätt i gram, och ett antal föreläsningar som den (hittills) använts på. Vikten är ett flyttal, och antalet föreläsningar är ett heltal.
Definiera posttypen struct Penna.
Skapa också ett alias med hjälp av typedef, som bara heter Penna.
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 exmepel 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. |
Nummer: 2096 Modell: Edding 360 Färg: röd Vikt: 103.16 gram Antal föreläsningar: 4
Du får själv välja hur funktionshuvudet ska se ut. Här är några förslag:
struct Penna las_penna() Penna las_penna() void las_penna(struct Penna *p) void las_penna(Penna *p)
Om det finns flera pennor som är lika tunga som den tyngsta, spelar det ingen roll vilken av dessa som man skriver ut. Samma sak med den eller de pennor som varit med på flest föreläsningar.
2096 Edding 360 röd 103.16 4 2014 Artline 517 svart 48.1 17
Nu vill vi sortera ut alla pennor som använts på mer än tio föreläsningar. Skriv ett C-program som läser filen pennor.txt, och som (på standardutmatningen) skriver ut numren på de pennor som använts på mer än tio föreläsningar. Programmet ska dessutom skapa en ny textfil, kallad ny-pennor.txt, som innehåller de pennor som använts på högst tio föreläsningar.
Tanken är alltså att man ska kasta de pennor vars nummer skrivs ut på standardutmatningen, och att den nya textfilen ska innehålla de pennor som vi sen har kvar.
Med exmepelfilen ovan ska programmet skriva ut nummer 2014, och filen ny-pennor.txt ska innehålla data om penna nummer 2096.