BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

Relevanta dokument
Föreläsning 9. Repetition och exempelproblem

HI1024 Programmering, grundkurs TEN

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

HI1024 Programmering, grundkurs TEN

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Detta är andra problemlösningsföreläsningen, vi diskuterar problemen ur Problem II.

Programmering Grundkurs (HI1900) Teoridel

HI1024 Programmering, grundkurs TEN

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012

#include <stdio.h> #include <string.h>

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

HI1024 Programmering, grundkurs TEN

Programmering, grundkurs, 8.0 hp HI1024, extra tentamen, TEN1, för TIDAA1. Fredagen den 11 mars 2011,

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Funktioner och programstruktur. Föreläsning 5

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Indicerade variabler

översiktskurs (5DV031)

TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 13:15-18:15. Tisdagen 26 april Tentamen består av 8 sidor

Arrays (indicerade variabler) Föreläsning 6

Några småsaker. switch break, continue, goto Kommentarer

Funktioner och programstruktur. Föreläsning 5

Uppgifter till praktiska tentan, del A. (7 / 27)

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Switch, Array (fält) switch break, continue, goto (scary) Sammansatta tilldelningar Kommentarer Array Sortering

Programmering Grundkurs (6H2950) Grundläggande Programmering (6A2001)

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Övning från förra gången: readword

C++ Slumptalsfunktioner + switch-satsen

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

Föreläsning 12. struct

Föreläsning 9. struct

TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 13:15-18:15. Fredagen 14 januari Tentamen består av 8 sidor

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

Fråga 13. Skriv en loop som fyller arrayen int v[100] med talen

Tentamen *:58/ID100V Programmering i C Exempel 3

Enkla uppgifter. Uppgift 1. Uppgift 2

En kort text om programmering i C.

Arrays (indicerade variabler) Föreläsning 4

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Tentamen i Programmering grundkurs och Programmering C

Abstrakta datastrukturer

1,3,5,7,9,...,99. Skriv ett program som genererar en multiplikationstabell med följande utseende

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Föreläsning 10. Pekare (Pointers)

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs Verónica Gaspes. IDE-sektionen.

Föreläsning 13. In- och utmatning

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Planering Programmering grundkurs HI1024 HT TIDAA

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

PROGRAMMERING-JAVA TENTAMINA

Lämna in en ifylld kursvärdering tillsammans med tentan! Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

7 Programmeringsteknik

Introduktion C-programmering

Tentamen TEN1 HI

HI1024 Programmering, grundkurs TEN

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

Repetition C-programmering

Deklarera en struct som kan användas för att representera en rät linje

Planering Programmering grundkurs HI1024 HT data

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 2011

Planering Programmering grundkurs HI1024 HT 2014

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

*Pekarvärden *Pekarvariabler & *

Indexerade variabler

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

4 Sammansatta datatyper

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

Föreläsning 6 pekare och pekare tillsammans med arrayer

Uttryck och villkor. Föreläsning 2

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Tentamen TEN1 HI

Tentamen i Programmering grundkurs och Programmering C

Tentamen FYTA11 Javaprogrammering

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13. Omtentamen i Programmering C, 5p, A1, D1, PA1, Fri,

tentamensdags och lab 3

Transkript:

HI1024 TEN2 2013-10-28 Betygsgränser: Fx-8, E-9, D-11, C-12, B-14, A-16 (MAX-18) Generella rättningsnormer: Mycket dåliga variabelnamn ger -1p totalt på provet vid andra tillfället Inga eller dåliga kommentarer ger -0p på provet Dålig struktur ger avdrag varje gång Generellt gäller: -1p per avvikelse, minst -1p om koden ej kompilerar 1. BMI (Body Mass Index) 4p Skriv ett program som ger användaren möjlighet att beräkna BMI värden. Programmet ska fråga användaren efter dennes vikt i kg och sedan efter dennes längd i cm och sedan presentera BMI. Därefter får användaren välja om denne vill göra en ny beräkning eller avsluta. Resultatet ska presenteras med en decimals noggrannhet. En körning ska kunna se ut så här: Hur mycket vager du (kg)? 83 Hur lang ar du (cm)? 182 Da har du BMI: 25.1 kg/m2 Vill du gora en berakning till (1-ja 0-nej)?0 Tack och valkommen ater! BMI = (vikt i kg) / (längd i m) 2 Lösningsförslag #include <stdio.h> int main() int fortsatt=1; int vikt,langd; while(fortsatt) printf("hur mycket vager du (kg)?"); scanf("%d",&vikt); printf("hur lang ar du (cm)?"); scanf("%d",&langd); printf("da har du BMI: %.1f kg/m2\n",((float)vikt*10000)/(langd*langd)); printf("vill du gora en berakning till (1-ja 0-nej)?"); scanf("%d",&fortsatt); return 0; Rättning uppgift 1: %f istället för %.1f, while(i) med icke-initierad variabel och sortfel (cm) gav -1p vardera.

2. Åldersstatistik 4p Skriv ett program som slumpar fram X personers ålder där X bestäms av användaren under körning (0<X<10000). Åldern skall för varje person slumpas fram så att alla åldrar 20 år till 40 år är lika sannolika (åldern anges endast som hela år). Programmet ska sedan presentera medelvärde och typvärde. Programmet skall använda en array för att lagra åldrarna och skall använda funktioner på ett bra sätt. En körning ska kunna se ut så här: Hur manga personer vill du gora statistik pa? 100 Medelvardet blev 32.6 ar Typvardet blev 38 ar. Typvärdet är det vanligaste värdet. Om flera värden delar förstaplatsen är de alla typvärden men det duger om ditt program anger ett av dem. Använd inga globala variabler. Lösningsförslag #include <stdio.h> #include <stdlib.h> #define MAX 10000 void init(int aldrar[], int *antal) srand(7); printf("hur manga personer vill du gora statistik pa?"); scanf("%d",antal); int i; for(i=0;i<*antal;i++) aldrar[i]=rand()%21+20; float medel(int aldrar[],int antal) float medel=0; int i; for(i=0;i<antal;i++) medel+=aldrar[i]; medel/=(float)antal; return medel; int typvarde(int aldrar[], int x) int i; int antal[41]; for(i=20;i<41;i++) antal[i]=0; for(i=0;i<x;i++)

antal[aldrar[i]]++; //for(i=20;i<41;i++) // printf("%d,",antal[i]); int maxantal=0; int typvarde; for(i=20;i<41;i++) if(maxantal<antal[i]) typvarde=i; maxantal=antal[i]; return typvarde; int main() int x,i; int aldrar[max]; init(aldrar,&x); //for(i=0;i<x;i++) // printf("%d,",aldrar[i]); printf("\nmedelvardet blev %.1f ar\n",medel(aldrar,x)); printf("typvardet blev %d ar.\n",typvarde(aldrar,x)); return 0; Rättning uppgift 2: fel typvärde (-1p) algoritm för typvärde saknas, irrelevant eller knappt påbörjad (-1p) fel medelvärde (oftast felaktig heltalsdivision) (-1p) ingen funktion används (-2p) dåligt använda funktioner (-1p) ingen array används (-3p) dåligt använd array (-2p) indexgräns överskrides (-1p) global variabel används (-1p) fel antal slumpade tal som ger åldrar i [20,40] (-1p) smärre slarvfel typ [20,39] istället för [20,40], eller något förvirrande struktur. (ej avdr.) flera grova fel utöver ovan nämnda (-2p) ett grovt fel utöver ovan nämnda (-1p)

3. I denna uppgift ska vi representera personer och deras positioner med en struct: struct person float x,y; char namn[20]; ; typedef struct person Person; a) Skriv en funktion som tar två in-parametrar av typen Person och returnerar avståndet mellan dem som en float. Skriv också en main som initierar två variabler av typen Person och som anropar funktionen med dessa som in-parametrar och skriver ut resultatet. Initiera personerna som: Armin på position (1,3) och Nedjelika på position (4,7). Avståndet mellan (x 1,y 1 ) och (x 2,y 2 ): avstån det ( x x ) ( y y 2p 2 2 2 1 2 1) b) I samma fil som ovan skriv en funktion som man kan anropa för att byta x-koordinat på en variabel av typen Person till valfritt värde. Anropa funktionen innan du anropar avståndsfunktionen och ändra x-värdet på Armin till 0. 2p c) Fortfarande i samma fil lägg till en funktion som man kan anropa för att byta namn på en variabel av typen Person. Anropa funktionen med en av variablerna och gör en utskrift i main så att du ser att det fungerar. 2p Lösningsförslag #include <stdio.h> #include <math.h> #include <string.h> struct person float x,y; char namn[20]; ; typedef struct person Person; void andrax(person *p, float nyttx) p->x=nyttx; void andranamn(person *p,char namn[]) strcpy(p->namn,namn);

float avstand(person p1, Person p2) return sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)); int main() Person p1=1,3,"armin",p2=4,7,"nedjelika"; andrax(&p1,0.0); andranamn(&p1,"kalle"); printf("avstand: %.1f till %s\n",avstand(p1,p2),p1.namn); return 0;

4. I denna lite mera kreativa uppgift ska du konstruera ett program som låter användaren spela sänka skepp mot programmet. Programmet slumpar fram positionen för en båt i ett 5*5 koordinatsystem. Båten tar upp tre rutor vågrätt. Användaren får sedan välja koordinater att bomba. Om denne träffar båten svarar programmet träff annars miss. Om tredje rutan av båten träffas svarar programmet träff och sänkt och programmet avslutar. Om användaren inte sänkt båten efter 6 försök avslutas programmet och meddelar användaren att denne misslyckats. I en körning där programmet slumpat fram båten enligt nedan: 1 2 3 4 5 1 2 3 4 5 skulle en körning kunna se ut så här: Vilken position vill du beskjuta? 2 3 MISS Vilken position vill du beskjuta? 4 4 TRAFF Vilken position vill du beskjuta? 4 3 TRAFF Vilken position vill du beskjuta? 4 2 TRAFF och SANKT Den första siffran anger rad och den andra kolumn. För full poäng krävs förutom ett fungerande program att programmet är välstrukturerat och har bra variabelnamn. 4p Lösningsförslag #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #include <string.h>

void printhav(int hav[][6]) int i,j; for(i=1;i<6;i++) for(j=1;j<6;j++) printf("%d,",hav[i][j]); printf("\n"); int sankt(int hav[][6]) int i,j,sankt=1; for(i=1;i<6;i++) for(j=1;j<6;j++) if(hav[i][j]!=0) sankt=0; return sankt; int init(int hav[][6]) int i,j; srand(time(0)); for(i=1;i<6;i++) for(j=1;j<6;j++) hav[i][j]=0; int poskol =rand()%3+1; int posrad =rand()%5+1; hav[posrad][poskol]=1; hav[posrad][poskol+1]=1; hav[posrad][poskol+2]=1;

int spela(int hav[][6]) int vunnit=0; int i,rad,kol; for(i=0;i<6;i++) printf("vilken position vill du beskjuta?"); scanf("%d %d",&rad,&kol); if(hav[rad][kol]==1) printf("traff"); hav[rad][kol]=0; else printf("miss"); if(sankt(hav)) printf(" OCH SANKT\n"); vunnit=1; break; printf("\n"); return vunnit; int main() int i,j,hav[6][6]; init(hav); printhav(hav); if(spela(hav)) printf("du vann!"); else printf("du misslyckades"); return 0; Rättning uppgift 4: Löst endast delar av problemet max 2p Löst ett till stora delar annat problem som är enklare tex ej kräver minne max 1p Hårdkodat positionen och använt detta i lösningen i övrigt max 1p Man kan sänka båten med tre träffar på samma ruta max 2p