TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 8:15-13:15. Måndagen 18 oktober Tentamen består av 8 sidor

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

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

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

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

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

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

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

har du råd med höjd bensinskatt? har du råd med höjd bensinskatt?

Programmering Grundkurs (HI1900) Teoridel

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

Antal anmälda dödsfall i arbetsolyckor efter län, där arbetsstället har sin postadress

Enkla uppgifter. Uppgift 1. Uppgift 2

Kammarkollegiet Bilaga 2 Statens inköpscentral Prislista Personaluthyrning Dnr :010

Pressmeddelande för Västerbotten. juli 2015

Vilken är din dröm? Redovisning av fråga 1 per län

TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 8:15-13:15. Onsdagen 10 juni Tentamen består av 8 sidor

Appendix 1. Valresultatet i kommuner och landsting

Pressmeddelande för Västerbotten. maj 2015

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

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

Kvinnors andel av sjukpenningtalet

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

För ytterligare information: Stefan Håkansson, pressekreterare Svenska kyrkan, E post:

Pressmeddelande för Norrbotten. december 2013

HI1024 Programmering, grundkurs TEN

Levnadsvanor diskuteras i samband med besök i primärvården

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

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

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

HI1024 Programmering, grundkurs TEN

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

Partisympatier i valkretsar, november 2007 Partisympatiundersökningen (PSU) november 2007

HI1024 Programmering, grundkurs TEN

Kon_register. Fodar_register. Opinionskoll Creator: Annika Bengtsson Göteborgs universitet, Tore Andersson Göteborgs universitet

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

Variabelförteckning Open Opinion Uppdaterad

Antal hyreshusenehter per län för hyreshustaxeringen 2016

Företagarpanelen Q Dalarnas län

TENTAMEN. HF1002, 6H3120, 6H3117 Diskret Matematik. Skrivtid 8:15-13:15. Måndag 8 juni Tentamen består av 4 sidor.

Dagens problem. Tal på fil. Förvandla heltal till sträng. Dialog

Kömiljard 1 (jan., feb., mars) 2010: ersättning per landsting

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

Rapport från Soliditet. Svenskarnas skulder hos Kronofogden April 2009

40% 35% 30% 25% 20% 15% 10% Kalmar. Östergötland Sverige. Kronoberg. Norrbotten. Stockholm. Halland Jämtland. Uppsala. Blekinge.

Företagarpanelen om el och energi Januari 2016

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

Företagarpanelen Q Hallands län

Belopp Belopp > procent

HI1024 Programmering, grundkurs TEN

De 10 branscher med flest antal konkurser i riket innevarande år

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Samtliga 21 landsting och regioner

Ett urval ur WWF:s undersökning till privatpersoner för Svenska pärlor 2013

Transportolycksfall med fordon företrädesvis avsedda för vägtrafik

Företagarpanelen Q Kalmar län

1 Sifferkryss 21,15,9,22,15,8. i vårt exempel. Programmet ska i en tabell skriva ut de 9 talen, som för vårt exempel ger. Håkan Strömberg 1 KTH STH

HI1024 Programmering, grundkurs TEN

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Nu till dagens ämne: Vi rekapitulerar det första problemet ur ProblemI:

Antal självmord Värmland och Sverige

Antal självmord Värmland och Sverige

Var tredje svensk saknar eget pensionssparande. Undersökning av Länsförsäkringar 2008

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Programmering Grundkurs Laboration 1

Tentamen ges för: Tentamensdatum: Tid:

Billigt att bo dyrt att flytta

Rapport. Politikerpanelen. Demoskop

Bilaga med tabeller. Källa: Försäkringskassan.

Svenska valdata: Riksdagsvalen Statistiska centralbyrån

Fastighetsmäklarna bedömer prisutvecklingen

Småföretagare får låg pension

Diagram 1. Andel aktiviteter efter verksamhetsform 2008 Diagram 1. Share of activities by type of activity 2008

Kvinnors och mäns företag i Sverige och i länen

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

Föräldrar villiga bidra mer till bostaden än barnen tror Utkast för analys

Pressmeddelande. december 2013

FASTIGHETSFAKTA. Kvartalsrapport

Är du orolig för att du i framtiden inte kommer att klara dig på din pension? Undersökning från Länsförsäkringar november 2010

Hur representativa är politikerna? En undersökning gjord av Sveriges Radio. Statistik för Dalarnas län.

Skogsmarksfastighetspriser och statistik för olika regioner

Biodling, gårdsbutiker och gårdsnära livsmedelsproduktion

TENTAMEN. HF1002, 6H3120, 6H3117 Diskret Matematik. Skrivtid 13:15-18:15. Torsdagen 7 juni Tentamen består av 5 sidor.

Rangordning Personaluthyrning Dnr

Tentamen i Programmering

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

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

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,

ÖVNINGSTENTAMEN. HF1002, 6H3120, 6H3117 Diskret Matematik. Skrivtid 10:15-13:15. Torsdagen 20 maj Tentamen består av 4 sidor.

Resultat. Politikerpanelen. Demoskop

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

Mottagande av nyanlända flyktingar och ensamkommande barn

Partisympatier i valkretsar, november 2015 Stockholms kommun Partisympati ("bästa parti"). Procent Antal svarande ÖVR. s:a med partisympati

Swedish electoral data: General elections Statistics Sweden

Företagarpanelen Q Extrafrågor

Kömiljard - utveckling under 2012 samt statsbidrag per landsting

Utvecklingen i riket och länen

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

Vem vill du ska få värdet av din pension om du avlider innan du hinner gå i pension? Undersökning från Länsförsäkringar Hösten 2009

FASTIGHETSFAKTA. Kvartalsrapport

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 uppgifterna sätts ut på kurssidan på nätet i dag kl 13. Omtentamen i Programmering C, 5p, A1, D1, PA1, Fri,

Transkript:

TENTAMEN Programmering Grundkurs (HI1900) Skrivtid 8:15-13:15 Måndagen 18 oktober 2010 Tentamen består av 8 sidor Hjälpmedel Förutom dator med installerad Code::Blocks, Utforskaren, Acrobat reader och Notepad (inga andra program), den kurslitteratur som använts under kursen, samt egna anteckningar, programlistningar och böcker. Dock inga egna disketter, CD-ROM eller USB-minne. Under W:\PROV\C finns program- och datafiler som kan komma till användning vid lösandet av uppgifterna. Kopiera över dessa till ditt konto. Till alla uppgifter ska ett program levereras i form av källkod (C eller CPP-fil). Dina bidrag lägger du i en katalog i roten på H:. Katalogen ska ha samma namn som prefixet i din mailadress. Exempelvis för Kalle Kula: HDI02KEKA. Namnen på lösningarna ska ges UPPG1.C till UPPG8.C. De är endast dessa filer som kommer att bedömas. Rättningen görs genom att programmen körs ett antal gånger för olika indata. Om resultatet överensstämmer med det förväntade bedöms programmet som korrekt och ger 2 poäng. Om ett program ej kan kompileras utan fel, är det knappast troligt att det kommer att ge några poäng. I det fall där programmet läser från och eller skriver till en fil, testas programmet oftast med en annan fil än den bifogade. Betygsgränser (HI1900): Poäng 14-16 12-13 10-11 8-9 7 6 Betyg A B C D E Fx Resultatet anslås på kursens hemsida ingforum.haninge.kth.se/c i kodat skick. Lycka till! Johnny Panrike, Håkan Strömberg Johnny Panrike, Håkan Strömberg 1 KTH STH

Uppgift 1. Krysset Skriv ett program som, efter att ha frågat efter storleken, skriver ut en kvadrat på skärmen, fylld med minustecken (-), utom i diagonalerna som ska markeras med plustecken (+). Storleken hos kvadratens sida ska kunna variera i intervallet [1... 24] Ett körningsexempel: Storlek? 10 +--------+ -+------+- --+----+-- ---+--+--- ----++---- ----++---- ---+--+--- --+----+-- -+------+- +--------+ Uppgift 2. Ord med bokstäver i bokstavsordning. På filen finns de ord i SAOL (Svenska akademiens ordlista) som inte innehåller vare sig Å, Ä eller Ö (för enkelhetens skull). Orden har återgivits med versaler (stora bokstäver). Skriv ett program som tar reda på hur många ord det finns på filen SAOL.txt, där bokstäverna befinner sig i bokstavsordning. BELOPP, är exempel på ett sådant ord. Däremot inte BELYSA. Filen inleds med ett tal n, som anger hur många ord den innehåller. Därefter följer n ord med ett ord på varje. Inget ord innehåller fler än 30 bokstäver. Körningsexempel Det finns 281 sådana ord Johnny Panrike, Håkan Strömberg 2 KTH STH

Uppgift 3. Vokaler, behövs de? Frågan är: kan man gissa sig till ordet även då vokalerna tagits bort? Givet följande huvudfunktion: int main(void){ char ord[31]; int antalvokaler; laesin(ord); tabortvokaler(ord,&antalvokaler); skrivutasterisker(ord); printf("%d borttagna vokaler \n",antalvokaler); } Programmet ska ta emot en sträng innehållande upp till 30 gemena (små) bokstäver i intervallet a... z genom funktionen laesin. Programmet ska sedan från denna sträng avlägsna samtliga vokaler, (a,e,i,o,u,y), och samtidigt returnera detta antal, genom funktionen tabortvokaler. Programmet ska sedan skriva ut den återstående strängen, helt omgiven av asterisker (*), genom funktionen skrivutasterisker, se körninsexemplet Programmet avslutas med att skriva ut antalet avlägsnade vokaler. Din uppgift är nu att skriva de tre funktionerna, laesin, tabortvokaler och skrivutasterisker, så att programmet producerar ett resultat likt det i körningsexemplet. Observera att du inte får ändra på någonting i main! Bygg vidare på koden given i uppg3.c. Strängen? programmeringskurs *************** *prgrmmrngskrs* *************** 5 borttagna vokaler Johnny Panrike, Håkan Strömberg 3 KTH STH

Uppgift 4. Riksdagsvalet 2010 På den binära filen riksval2010.dat finns uppgifter om resultatet från riksdagsvalet 2010 uppdelat på Sveriges 290 kommuner. Följande postbeskrivning, som behandlar en kommun, har använts: struct kommuntyp{ char namn[24]; int laen; int roster[11]; }; namn innehåller kommunens namn. laen innehåller att tal som motsvarar tillhörande län, se figur 1. roster innehåller antalet röster på olika partier samt antalet ogiltiga röster, se figur 2. 1 Blekinge län 2 Dalarnas län 3 Gotlands län 4 Gävleborgs län 5 Hallands län 6 Jämtlands län 7 Jönköpings län 8 Kalmar län 9 Kronobergs län 10 Norbottens län 11 Skåne län 12 Stockholms län 13 Södermanlands län 14 Uppsala län 15 Värmlands län 16 Västerbottens län 17 Västernorrlands län 18 Västermanlands län 19 Västra Götalands län 20 Örebro län 21 Östergötlands län Figur 1: Tabell över Sveriges län och tillhörande nummer 0 Moderata Samlingspartiet 1 Centerpartiet 2 Folkpartiet liberalerna 3 Kristdemokraterna 4 Arbetarepartiet-Socialdemokraterna 5 Vänsterpartiet 6 Miljöpartiet de gröna 7 Sverigedemokraterna 8 Övriga partier 9 Ogiltiga röster - blanka 10 Ogiltiga röster - övriga Figur 2: Innehållet i roster med tillhörande index Skriv ett program som frågar efter numret för ett län och som tar reda på och skriver namnet på den kommun i givet län som har den lägsta procentuella andelen röster på Sverigedemokaterna. Observera att de ogiltiga rösterna (9 och 10) inte räknas in i denna andel. Ett körningsexempel: Vilket län? 11 Lund har lägsta andelen SD, 4.98 %, i län 11 Johnny Panrike, Håkan Strömberg 4 KTH STH

Uppgift 5. Tentamen i C-programmering En praktisk tentamen i C har 8 uppgifter. De svårare uppgifterna brukar komma sist. Studenterna som följer en kurs i programmering förväntas lägga ner cirka 20 arbetstimmar i veckan på att träna C-programmering under 7 veckor och kanske 10 timmar i tentamensveckan. Totalt cirka 150 timmar. Låt oss anta att man kan mäta förmågan att programmera i procent (ett tal mellan 0 och 100) och att 150 timmars träning ger 100% förmåga. Vi antar här att ökningen är linjär, alltså 1.5 timmars träning ger 1% programmeringsförmåga. Låt oss nu kalla den uppnådda förmågan till C-programmering för p (som då är ett tal mellan 0.0 och 100.0). Vi antar vidare att sannolikheten att man klarar den första uppgiften är 0.9 p, sannolikheten att man klarar den andra är 0.85 p, sannolikheten att man klarar den tredje är 0.8 p, och så vidare med 0.05 mindre chans för varje uppgift. Sannolikheten att man klarar den sista uppgiften blir således 0.55 p. För att klara en tentamen ska man klara minst4av uppgifterna. För att få genomföra en komplettering för godkänt ska man klara 3 av uppgifterna. Skriv ett program som med hjälp av 100 000 simuleringar, beräknar sannolikheten för att man klarar tentamen samt sannolikheten att man får komplettera, för ett givet antal arbetstimmar. Körningsexempel: Antal timmar tränat? 150 Sannolikhet att klara tentamen är 96.54 procent. Sannolikhet att få komplettering är 2.94 procent. Johnny Panrike, Håkan Strömberg 5 KTH STH

Uppgift 6. Bankkonton På filen konton.txt finns uppgifter om ett antal bankkonton och transaktioner dem mellan. Filen inleds med ett tal n < 100 som anger antalet konton som ska hanteras. Därefter följer n rader med två tal på varje, kontonummer (ett fyr- eller femsiffrigt tal) och kontoställning i kronor. Direkt efter dessa rader följer ett tal t som anger antalet transaktioner följt av t rader med tre tal på varje, från vilket konto pengarna kommer, till vilket konto pengarna ska, samt beloppet. Alla belopp är heltal. Skriv ett program som bestämmer kontoställningarna för de nk kontona efter att transaktionerna genomförts. Ett körningsexempel: Konto Belopp ----- ------ 14705 124053 25704 24468 2715 2995 11841 76184 Johnny Panrike, Håkan Strömberg 6 KTH STH

Uppgift 7. Schacktornen Figur 3: Schack spelas på ett bräde med 8 8 rutor. Man spelar genom att flytta pjäser på brädet. Olika pjäser kan flyttas på olika sätt. Tornet är kanske den lättaste pjäsen att flytta, den kan endast flyttas rakt i alla riktningar, hur långt som helst. Vi ser i figur 3, tre torn. För två av tornen har vi ritat ut röda prickar som visar de rutor som de kan nå genom att flytta dem. Det tredje tornet har vi inte ritat ut prickar för. Man säger att två pjäser garderar varandra, om båda pjäserna kan flyttas till den ruta, som den andra pjäsen står på. I figur 3 ovan, med tre torn, garderar de två tornen till höger varandra, medan det tredje inte garderas av eller garderar något av de andra. Beräkna sannolikheten för att tre slumpvis utplacerade torn alla är garderade av åtminstone ett annat torn. Simulera utplaceringen av tre torn på ett schackbräde 100 000 gånger. Programmet ska ange den beräknade sannolikheten med två decimaler. Körningsexempel: Den beräknade sannolikheten är 9.68 % Johnny Panrike, Håkan Strömberg 7 KTH STH

Uppgift 8. Bingo Figur 4: En typisk bingobricka Bingo är som bekant ett slags lotteri eller turspel. Till den här varianten finns ett antal bingobrickor, liknande de i figur 4. Varje bricka består av tre rader med fem tal (1...90) på varje. Varje spelare har en egen bricka. I en urna finns 90 bollar, numrerade 1...90. Spelledaren drar en kula i taget från urnan och meddelar numret. Spelaren markerar dragna nummer som förekommer på dennes bricka. Vinner gör den som först lyckas fylla en hel rad. Spelaren har fått BINGO! På filen brickor.txt finns beskrivning av n < 100 brickor. Filen inleds med ett tal n som anger hur många. Därefter följer 3n rader med 5 tal på varje. En bricka beskrivs alltså med tre på varandra följande rader. Brickorna tänks numrerade 1 till n i den ordning de återfinns på filen. På filen urna.txt finns en rad med talen 1 till 90 i den ordning de kommer att dras av spelledaren. Skriv ett program tar reda på vilken bricka som vinner, först lyckas få en rad med fem dragna nummer, och efter hur många dragna kulor detta inträffar. Om flera spelare samtidigt får BINGO räcker det med att ditt program presenterar en av dessa. Ett körningsexempel: Bricka nr 29 vann efter 14 dragna nummer Johnny Panrike, Håkan Strömberg 8 KTH STH

Uppgift 1. Krysset 2 int main(void){ 3 int i,j,storlek; 4 printf("storlek? "); 5 scanf("%d",&storlek); 6 for(i=1;i<=storlek;i++){ 7 for(j=1;j<=storlek;j++) 8 if(i==j i+j-1==storlek) 9 printf("+"); 10 else 11 printf("-"); 12 printf("\n"); 13 } 14 } Uppgift 2. Ord med bokstäver i bokstavsordning. 2 #include <string.h> 3 4 int koll(char s[]){ 5 int i; 6 for (i=1;i<strlen(s);i++) 7 if (s[i-1]>s[i]) 8 return 0; 9 return 1; 10 } 11 12 int main(void){ 13 FILE *fil; 14 int i,antal,funna=0; 15 char ordet[50]; 16 17 fil=fopen("ord.txt","rt"); 18 fscanf(fil,"%d",&antal); 19 for (i=1;i<=antal;i++){ 20 fscanf(fil,"%s",ordet); 21 if (koll(ordet)){ 22 printf("%s\n",ordet); 23 funna++; 24 } 25 } 26 printf("vi har funnit %d\n",funna); 27 fclose(fil); 28 } Johnny Panrike, Håkan Strömberg 9 KTH STH

Uppgift 3. Vokaler behövs de? 2 #include <string.h> 3 void laesin(char s[]){ 4 printf("ordet? "); 5 scanf("%s",s); 6 } 7 8 void tabortvokaler(char s[],int *b){ 9 char vokaler[]="aeiouy",t[31]=""; 10 int i,j,n=0,ok; 11 for (i=0;i<strlen(s);i++){ 12 ok=0; 13 for (j=0;j<6;j++) 14 if (vokaler[j]==s[i]) 15 ok=1; 16 if (!ok) 17 t[n++]=s[i]; 18 } 19 t[n]= \0 ; 20 *b=strlen(s)-strlen(t); 21 strcpy(s,t); 22 } 23 24 void skrivutasterisker(char s[]){ 25 int i; 26 for (i=1;i<=strlen(s)+2;i++) 27 printf("*"); 28 printf("\n*%s*\n",s); 29 for (i=1;i<=strlen(s)+2;i++) 30 printf("*"); 31 printf("\n"); 32 } 33 34 int main(void){ 35 char ord[31]; 36 int antalbort; 37 laesin(ord); 38 tabortvokaler(ord,&antalbort); 39 skrivutasterisker(ord); 40 printf("%d borttagna vokaler \n",antalbort); 41 } Johnny Panrike, Håkan Strömberg 10 KTH STH

Uppgift 4. Riksdagsvalet 2010 2 #include <string.h> 3 4 struct kommuntyp{ 5 char namn[24]; 6 int laen; 7 int roster[11]; 8 }; 9 10 int main(void){ 11 FILE *fil; 12 int antal,i,j,sum,laen; 13 double sd, sdmin=100.0; 14 char sdminnamn[24]; 15 16 struct kommuntyp kommun; 17 printf("vilket laen? "); 18 scanf("%d",&laen); 19 20 fil=fopen("riksval2010.dat","rb"); 21 fseek(fil,0,seek_end); 22 antal=ftell(fil)/sizeof(struct kommuntyp); 23 rewind(fil); 24 25 for (i=0;i<antal;i++){ 26 fread(&kommun,sizeof(struct kommuntyp),1,fil); 27 if (kommun.laen==laen){ 28 sum=0; 29 for (j=0;j<9;j++) 30 sum=sum+kommun.roster[j]; 31 sd=(double)kommun.roster[7]/sum*100; 32 if (sd<sdmin){ 33 sdmin=sd; 34 strcpy(sdminnamn,kommun.namn); 35 } 36 } 37 } 38 printf("%s har lägsta andeln SD, %.2f %%, i län %d\n", 39 sdminnamn,sdmin,laen); 40 } Johnny Panrike, Håkan Strömberg 11 KTH STH

Uppgift 5. Tentamen i C-programmering 2 #include <stdlib.h> 3 #include <time.h> 4 5 int main(void){ 6 int tim,i,j,godk=0,kompl=0,klarat; 7 double p1,p2,s; 8 printf("hur många timmar har du tränat? "); 9 scanf("%d",&tim); 10 srand(time(0)); 11 p1=tim/150.0; 12 for (i=1;i<=100000;i++){ 13 klarat=0; 14 for (j=1;j<=8;j++){ 15 p2=p1*(0.95-j*0.05); 16 s=(double)rand()/rand_max; 17 if (s<=p2) 18 klarat++; 19 } 20 if (klarat>=4) 21 godk++; 22 if (klarat==3) 23 kompl++; 24 } 25 printf("sannolikhet för godkänd är %.2f\n",godk/1000.0); 26 printf("sannolikhet för komplettering är %.2f\n",kompl/1000.0); 27 } Johnny Panrike, Håkan Strömberg 12 KTH STH

Uppgift 6. Bankkonton 2 3 void flytta(int k[][2],int f,int t,int b,int nk) { 4 int i,fran,till; 5 for(i=0; i<nk; i++) { 6 if(f==k[i][0]) 7 fran=i; 8 if(t==k[i][0]) 9 till=i; 10 } 11 k[fran][1]-=b; 12 k[till][1]+=b; 13 } 14 15 int main(void) { 16 FILE *fil; 17 int konton[100][2],i,fran,till,belopp,nk,nt; 18 19 fil=fopen("konton.txt","rt"); 20 fscanf(fil,"%d",&nk); 21 for(i=0; i<nk; i++) 22 fscanf(fil,"%d %d",&konton[i][0],&konton[i][1]); 23 fscanf(fil,"%d",&nt); 24 for(i=0; i<nt; i++) { 25 fscanf(fil,"%d %d %d",&fran,&till,&belopp); 26 flytta(konton,fran,till,belopp,nk); 27 } 28 for(i=0; i<nk; i++) 29 printf("%7d %7d\n",konton[i][0],konton[i][1]); 30 fclose(fil); 31 } Johnny Panrike, Håkan Strömberg 13 KTH STH

Uppgift 7. Schacktornen 2 #include <stdlib.h> 3 #include <time.h> 4 5 void slumpa(int p[][2]){ 6 int i,j,klart; 7 for(i=0;i<3;i++){ 8 do{ 9 p[i][0]=rand()%8+1; 10 p[i][1]=rand()%8+1; 11 klart=1; 12 for(j=0;j<i;j++) 13 if(p[i][0]==p[j][0] && p[i][1]==p[j][1]) 14 klart=0; 15 }while(!klart); 16 } 17 } 18 19 int garderar(int p[][2]){ 20 int i,j,k,antal=0; 21 for(i=0;i<2;i++) 22 for(j=i+1;j<3;j++) 23 for(k=0;k<2;k++) 24 if(p[i][k]==p[j][k]) 25 antal++; 26 return antal; 27 } 28 29 int main(void){ 30 int plats[3][2],i,gard=0; 31 srand(time(0)); 32 for(i=1;i<=100000;i++){ 33 slumpa(plats); 34 if(garderar(plats)>=2) 35 gard++; 36 } 37 printf("den sökta sannolikheten %.2f\n",gard/1000.0); 38 } Johnny Panrike, Håkan Strömberg 14 KTH STH

Uppgift 8. Bingo 2 #include <conio.h> 3 4 int main(void) { 5 int brickor[100][3][6]; 6 FILE *bfil,*ufil; 7 int b,r,k,klart=0,nr,antal=0,n; 8 9 bfil=fopen("brickor.txt","rt"); 10 ufil=fopen("urna.txt","rt"); 11 fscanf(bfil,"%d",&n); 12 13 for(b=0; b<n; b++) 14 for(r=0; r<3; r++) { 15 for(k=0; k<5; k++) 16 fscanf(bfil,"%d",&brickor[b][r][k]); 17 brickor[b][r][5]=0; 18 } 19 fclose(bfil); 20 21 while(1) { 22 fscanf(ufil,"%d",&nr); 23 antal++; 24 for(b=0; b<n; b++) 25 for(r=0; r<3; r++) 26 for(k=0; k<5; k++) 27 if(brickor[b][r][k]==nr) { 28 brickor[b][r][5]++; 29 if(brickor[b][r][5]==5) { 30 printf("bricka nr %d vann efter %d dragna nummer\n", 31 b+1,antal); 32 goto ut; 33 } 34 } 35 } 36 ut: 37 fclose(ufil); 38 } Johnny Panrike, Håkan Strömberg 15 KTH STH