TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 8:15-13:15. Onsdagen 10 juni 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

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

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

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

Enkla uppgifter. Uppgift 1. Uppgift 2

Belopp Belopp > procent

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

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

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

Programmering Grundkurs (HI1900) Teoridel

HI1024 Programmering, grundkurs TEN

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

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

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

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

UPPGIFT 1 TVÅPOTENSER. UPPGIFT 2 HISSEN I LUSTIGA HUSET.

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

Följande, ur problemsynpunkt enkla uppgifter, är till för att nöta in dagens teori.

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

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

HI1024 Programmering, grundkurs TEN

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

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

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

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

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

Tentamen ges för: Tentamensdatum: Tid:

HI1024 Programmering, grundkurs TEN

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

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

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

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

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

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

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

Tentamen i Programmering grundkurs och Programmering C

Arrays (indicerade variabler) Föreläsning 6

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

Programmering Grundkurs Laboration 1

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,

Uppgifter att lösa 1,1,2,3,5,8,13,21...

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

Planering Programmering grundkurs HI1024 HT data

Föreläsning 3. Programmering, C och programmeringsmiljö

Indicerade variabler

TENTAMEN. HF1002, 6H3120, 6H3117 Diskret Matematik. Skrivtid 13:15-18:00. Fredag 28 maj Tentamen består av 4 sidor.

Programmering i C, 7,5 hp

Tentamen i Programmering

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,

En kort text om programmering i C.

Planering Programmering grundkurs HI1024 HT 2014

HI1024 Programmering, grundkurs TEN

Planering Programmering grundkurs HI1024 HT TIDAA

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

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

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Loopar och datatyper. Föreläsning 3

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

Problemlösning (3/5) Lösningar

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

Arrays (indicerade variabler) Föreläsning 4

Loopar och datatyper. Föreläsning 3

Tentamen *:58/ID100V Programmering i C Exempel 3

*Pekarvärden *Pekarvariabler & *

översiktskurs (5DV031)

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

Föreläsning 9. Repetition och exempelproblem

Uttryck och villkor. Föreläsning 2

Uttryck och villkor. Föreläsning 2

Enkla datatyper minne

Fråga 15. Följande deklarationer är givna

Tentamen i Programmering grundkurs och Programmering C

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

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,

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

UPPGIFT 1 EURO. Utdata: Två rader, som för indata ovan, ser ut som följer: Före resan: bank 1 Efter resan: bank 3

a = a a a a a a ± ± ± ±500

TENTAMEN. HF1002, 6H3120, 6H3117 Diskret Matematik. Skrivtid 13:15-18:15. Onsdagen 21 maj Tentamen består av 6 sidor.

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

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

tentamensdags och lab 3

Tentamen i Programmering grundkurs och Programmering C

Tentamen TEN1 HI

TENTAMEN. HF1002, 6H3120, 6H3117 Diskret Matematik. Skrivtid 13:15-17:15. Måndag 19 december Tentamen består av 5 sidor.

Tecken & Strängar. Kapitel 7

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

2 Pekare och dynamiska variabler.

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

Tentaupplägg denna gång

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540) Ansvarig: Jan Skansholm, tel eller

Tentamen i Introduktion till programmering

Transkript:

TENTAMEN Programmering Grundkurs (HI1900) Skrivtid 8:15-13:15 Onsdagen 10 juni 2009 Tentamen består av 8 sidor Hjälpmedel Förutom dator med installerad Borland C++ 5.02, och DevCPP 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! Håkan Strömberg Håkan Strömberg 1 KTH STH

Uppgift 1. Den enarmade banditen Figur 1: En enarmad bandit har tre hjul. Det vänstra med siffrorna 1,..., 4, det mittersta med siffrorna 1,..., 6 och det högra med siffrorna 1,..., 9. Vinst delas ut då siffrorna från vänster till höger stiger med 1. Vinstlistan är alltså: 123, 234, 345, 456, som alla ger lika stor vinst. Att dra i armen kostar 1 kr. Alla möjliga kombinationer är lika sannolika. Simulera med ett program banditen genom 100000 spel och bestäm hur stor vinsten ska vara, då någon av kombinationerna ovan inträffar, för att den totala utbetalade vinsten efter 100000 spel ska bli ungefär 100000 kr. Håkan Strömberg 2 KTH STH

Uppgift 2. Gungbrädet Figur 2: Bertil och och några av hans dagiskompisar har satt sig på gungbrädan, se figur 2. När nu Adam hoppar upp på brädan på utvald plats (frågetecknets plats) uppstår jämvikt. Eftersom det är precis 1 meter mellan sittplatserna och vi vet hur mycket alla utom Adam väger kan vi räkna ut hans vikt. Skriv ett program som tar emot uppgift om var de n < 10 barnen sitter och hur mycket alla barnen utom Adam väger och som bestämmer Adams vikt då gungbrädan antar jämvikt. Placeringen ges som ett heltal i intervallet 10...10 meter (alltså är gungbädan lite längre än i figuren). Uppgifterna finns på filen gunga.txt, som inleds med ett tal n som anger hur många barn som sitter på brädan. På nästa rad hittar vi Adams placering. Därefter följer n 1 rader med två heltal på varje. Först barnets placering och sedan dess vikt, ett positivt heltal. Ett körningsexempel Adam väger 20 kg I våra testexempel blir Adams vikt alltid ett heltal. Håkan Strömberg 3 KTH STH

Uppgift 3. Summering Figur 3: Efter två val har vi uppnått summan 23 och har i nästa steg 10 tal att välja på Vi utgår från den vänstra kvadraten i figur 3, där vi väljer ut ett av de 25 talen. Därefter stryker vi alla tal i den rad och den kolumn, som talet vi valde finns i (se kvadraten i mitten). I andra steget väljer så ett tidigare ej valt eller struket tal och stryker på samma sätt talen i denna rad och kolumn (se högra kvadraten). Efter fem val finns inte längre något tal att välja. Resultatet av vår ansträngning är summan av de valda talen. Skriv ett program som läser in aktuell kvadrat från filen kvadrat.txt. Filen innehåller 5 rader med 5 heltal i varje rad. Därefter ska programmet skriva ut den ursprungliga kvadraten och fråga efter den rad och den kolumn, som det tal vi väljer finns i. Den förändrade kvadraten skrivs ut igen, där strukna och valt tal har ersatts med talet 0. Denna process fortsätter tills fem val har gjorts. Programmet avslutas då med att summan av de fem valda talen skrivs ut. 19 16 11 13 9 0 0 0 0 0 17 14 9 11 7 17 0 0 11 0 20 17 12 14 10 0 0 0 0 0 15 12 7 9 5 0 0 0 0 0 22 19 14 16 12 22 0 0 16 0 Rad? 1 Rad? 5 Kolumn? 3 Kolumn? 4 0 0 0 0 0 0 0 0 0 0 17 14 0 11 7 17 0 0 0 0 20 17 0 14 10 0 0 0 0 0 15 12 0 9 5 0 0 0 0 0 22 19 0 16 12 0 0 0 0 0 Rad? 4 Rad? 2 Kolumn? 2 Kolumn? 1 0 0 0 0 0 Summan blev 66 17 0 0 11 7 20 0 0 14 10 0 0 0 0 0 22 0 0 16 12 Rad? 3 Kolumn? 5 För just denna kvadrat blir alltid summan 66. Hur man konstruerar en sådan är ett helt annat problem. Håkan Strömberg 4 KTH STH

Uppgift 4. Utskrift Skriv ett program som kan skriva ut en given text med en önskad radlängd (i tecken räknad). Programmet ska inledas med att ta emot information om önskad radlängd, < 80. Därefter ska en rad med lika många tecken som angiven radlängd skrivas ut. Tecknet är entalssiffran för aktuell position (se körningsexempel). Den givna texten finns på filen texten.txt. Filen inleds med ett tal som anger hur många ord den innehåller. Därefter följer lika många rader med ett ord på varje. Samtliga ord ska skrivas ut på skärmen utan att avstavas eller delas. Orden ska vara åtskilda av precis ett mellanslag och så att aktuell radlängd aldrig överskrids. Ett körningsexempel: Radlängd? 40 1234567890123456789012345678901234567890 Saab tappade 72 procent. Antalet nyregistrerade bilar för Saab Automobile rasade till 559 bilar i maj i år, ned från 2020 under samma månad i fjol. Nedgången för Saab i maj är därmed på drygt 72 procent, enligt statistik från branschen Bil Sweden. Enligt Saab Automobile beror försäljningsraset på en kombination av en allmänt svag marknad och osäkerhet kring framtiden för biltillverkaren i Trollhättan. Det är många som väntar och vill ha lite mer klarhet i hur Saabs framtid ser ut, innan de köper en bil från oss, säger Gunilla Gustavs på Saab Automobiles informationsavdelning. Givetvis kan inte radlängden sättas till ett tal som är mindre än antalet tecken i det längsta ordet. Håkan Strömberg 5 KTH STH

Uppgift 5. Lagervärde Ett lager består av ett antal produkter, som alla har ett produktnummer i intervallet [1000... 2000]. På filen lager.txt finns angivet hur många enheter för ett visst produktnummer det finns i lagret, samt priset för produkten. Uppgiften består i att skriva ett program som bestämmer lagrets totala värde. Filen inleds med ett tal n, som anger antalet olika produkter i lagret. Därefter följer n rader med två positiva heltal på varje, produktnummer och antal av denna produkt. Direkt efter följer ytterligare n rader med två heltal på varje. Denna gång med produktnummer och pris/styck i kronor. Observera att ordningen inom dessa två grupper inte är definierad. Körningsexempel: Totala lagervärdet är 2550613 kr Uppgift 6. Nummerplåtsleken När Adam och Bertil är ute på vägarna spelar de ofta ett spel som de kallar för nummerplåtsleken. Som bekant inleds registreringsnumret på svenska bilar med tre bokstäver. Den som först kan säga ett ord där de tre bokstäverna hos en mötande bil återfinns i samma ordning får en poäng. Skriv ett program som tar emot en sträng med tre stora bokstäver och som listar samtliga ord i ord.txt där de givna tre bokstäverna förekommer i denna ordning i ordet. Filen inleds med ett tal som anger hur många ord den innehåller. Därefter följer lika många rader med ett ord på varje. Bokstäverna J, Q, V, Å, Ä, Ö förekommer inte. Programmet ska avslutas med en rad som anger hur många ord som återfunnits. Ett körningsexempel: Vilka bokstäver? WOF COWBOYFILM PLYWOODFABRIK WORKFLOW Det finns 3 ord Håkan Strömberg 6 KTH STH

Uppgift 7. Sommarläsning Inför sommarens bokläsande lanserar bokhandeln PärmTillPärm ett rabatterbjudande. Från topplistan över mest sålda böcker ger de rabatt enligt följande: Plats i listan Rabatt i % 1 40 2-5 20 6-10 10 Topplistan finns på binärfilen bokhandel.dat och innehåller 25 böcker ordnade från den mest sålda och nedåt. Posterna på filen har följande utseende struct bok{ char titel[52]; char forfattare[52]; int pris; }; Skriv ett program som bestämmer hur mycket en kund ska betala för sina beställda böcker. Ordern finns på textfilen order.txt och inleds med ett tal som anger antalet beställda böcker. Därefter följer lika många rader med en titel på varje. Programmet ska skriva ut titeln, priset före rabatt, priset efter rabatt samt totalt vad kunden ska betala. Priserna efter rabatt ska vara avrundade till hela kronor. Ett körningsexempel: Först när givaren är död 169 152 Lyckan är en sällsam fågel 189 113 Sommardöden 39 39 Igelkottens elegans 175 140 Totalt att betala 444 Håkan Strömberg 7 KTH STH

Uppgift 8. Talens uthärdlighet Persistences of numbers, som vi här kallar talens uthärdlighet, har definierats av N.J.A. Sloane. Ett heltals uthärdlighet är antalet steg som krävs för att reducera talet till en enda siffra genom att successivt multiplicera dess ingående siffror. Ett exempel 88 64 24 8 8 8 = 64, 6 4 = 24, 2 4 = 8. Efter 3 steg har talet reducerats till ett tal < 10 och vi säger att talet 88 har uthärdligheten 3. Samma uthärdlighet har talet 79. Talet 19 däremot har bara uthärdligheten 1. Skriv ett program som frågar efter en uthärdlighet u, 1 u 9 och bestämmer det minsta talet med denna uthärdlighet. Körningsexempel: Uthärdlighet? 5 Minsta talet är 679 Det minsta talet med uthärdligheten 10 är 3 778 888 999, som är för stort för våra undersökningar. Sloane påstår att inget tal har uthärdlighet > 11. Detta är dock ännu ej bevisat! Håkan Strömberg 8 KTH STH

Uppgift 1. Den enarmade banditen 1 #include <stdio.h> 2 #include <time.h> 3 #include <stdlib.h> 4 int main(void){ 5 int h1,h2,h3,i,antal=0; 6 srand(time(0)); 7 for (i=1;i<=100000;i++){ 8 h1=rand()%4+1; 9 h2=rand()%6+1; 10 h3=rand()%9+1; 11 if (h1+1==h2 && h2+1==h3) 12 antal++; 13 } 14 printf("vinst %d kr\n",100000/antal); 15 } Resultatet blir att man för vinst ska ge mellan 52 och 54 kr. Håkan Strömberg 1 KTH STH

Uppgift 2. Gungbrädet 1 #include <stdio.h> 2 int main(void){ 3 int tot=0,i,antal,plats,avstand,massa; 4 FILE *fil; 5 fil=fopen("gunga3.txt","rt"); 6 fscanf(fil,"%d",&antal); 7 fscanf(fil,"%d",&plats); 8 for (i=1;i<=antal-1;i++){ 9 fscanf(fil,"%d %d",&avstand,&massa); 10 tot=tot+avstand*massa; 11 } 12 printf("adams vikt %d kg\n",-tot/plats); 13 } Håkan Strömberg 2 KTH STH

Uppgift 3. Summering 1 #include <stdio.h> 2 void skrivut(int tab[5][5]){ 3 int i,j; 4 for (i=0;i<5;i++){ 5 for (j=0;j<5;j++) 6 printf("%3d",tab[i][j]); 7 printf("\n"); 8 } 9 } 10 void laesin(int tab[5][5],int *sum){ 11 int rad,kol,i; 12 do{ 13 printf("rad? "); 14 scanf("%d",&rad); 15 printf("kolumn? "); 16 scanf("%d",&kol); 17 }while(tab[rad-1][kol-1]==0); 18 *sum=*sum+tab[rad-1][kol-1]; 19 for (i=0;i<5;i++){ 20 tab[rad-1][i]=0; 21 tab[i][kol-1]=0; 22 } 23 } 24 int main(void){ 25 FILE *fil; 26 int i,j,tab[5][5],sum=0; 27 fil=fopen("kvadrat.txt","rt"); 28 for (i=0;i<5;i++) 29 for (j=0;j<5;j++) 30 fscanf(fil,"%d",&tab[i][j]); 31 fclose(fil); 32 for (i=1;i<=5;i++){ 33 skrivut(tab); 34 laesin(tab,&sum); 35 } 36 printf("summan blev %d\n",sum); 37 } Håkan Strömberg 3 KTH STH

Uppgift 4. Utskrift 1 #include <stdio.h> 2 #include <string.h> 3 int main(void){ 4 FILE *fil; 5 int ntkn=0,bredd,i,langd,n; 6 char ord[30]; 7 8 printf("bredd? "); 9 scanf("%d",&bredd); 10 for (i=1;i<=bredd;i++) 11 printf("%d",i%10); 12 printf("\n"); 13 fil=fopen("texten.txt","rt"); 14 fscanf(fil,"%d",&n); 15 for (i=1;i<=n;i++){ 16 fscanf(fil,"%s",ord); 17 langd=strlen(ord); 18 if (langd+ntkn>bredd){ 19 printf("\n"); 20 ntkn=0; 21 } 22 printf("%s ",ord); 23 ntkn=ntkn+langd+1; 24 } 25 printf("\n"); 26 } Håkan Strömberg 4 KTH STH

Uppgift 5. Lagervärde 1 #include <stdio.h> 2 int main(void){ 3 FILE *fil; 4 int i,j,s=0,tab[2001][2],n; 5 int vara,antal,pris; 6 for (i=0;i<=2000;i++) 7 for (j=0;j<3;j++) 8 tab[i][j]=0; 9 fil=fopen("lager.txt","rt"); 10 fscanf(fil,"%d",&n); 11 for (i=0;i<n;i++){ 12 fscanf(fil,"%d %d",&vara,&antal); 13 tab[vara][0]=antal; 14 } 15 for (i=0;i<n;i++){ 16 fscanf(fil,"%d %d",&vara,&pris); 17 tab[vara][1]=pris; 18 } 19 fclose(fil); 20 for (i=1000;i<2000;i++) 21 if (tab[vara]!=0) 22 s=s+tab[i][0]*tab[i][1]; 23 printf("lagrets värde: %d\n",s); 24 } Håkan Strömberg 5 KTH STH

Uppgift 6. Nummerplåtsleken 1 #include <stdio.h> 2 #include <string.h> 3 #include <conio.h> 4 5 int finns(char o[],char t){ 6 int i,j,k; 7 for (i=0;i<strlen(o);i++) 8 if (o[i]==t){ 9 k=0; 10 for (j=i+1;j<strlen(o);j++) 11 o[k++]=o[j]; 12 o[k]= \0 ; 13 return 1; 14 } 15 return 0; 16 } 17 18 int main(void){ 19 FILE *fil; 20 char string[4],ordet[30],ord[30]; 21 int i,j,n,ok,antal=0; 22 23 printf("vilka bokstäver? "); 24 scanf("%s",string); 25 fil=fopen("ord.txt","rt"); 26 fscanf(fil,"%d",&n); 27 for (i=1;i<=n;i++){ 28 fscanf(fil,"%s",ordet); 29 ok=1; 30 strcpy(ord,ordet); 31 for (j=0;j<3;j++) 32 if (!finns(ordet,string[j])){ 33 ok=0; 34 break; 35 } 36 if (ok){ 37 antal++; 38 printf("%s\n",ord); 39 } 40 } 41 fclose(fil); 42 printf("det finns %d ord\n",antal); 43 } Håkan Strömberg 6 KTH STH

Uppgift 7. Sommarläsning 1 #include <stdio.h> 2 #include <string.h> 3 struct bok{ 4 char titel[52]; 5 char forfattare[52]; 6 int pris; 7 }; 8 9 int main(void){ 10 FILE *fil,*infil; 11 int antal,i,j,expris,tot=0; 12 char titel[52]; 13 struct bok enbok; 14 15 fil=fopen("bokhandel.dat","rb"); 16 infil=fopen("order.txt","rt"); 17 fscanf(infil,"%d\n",&antal); 18 for (i=1;i<=antal;i++){ 19 fgets(titel,52,infil); 20 titel[strlen(titel)-1]= \0 ; 21 rewind(fil); 22 for (j=0;j<25;j++){ 23 fread(&enbok,sizeof(struct bok),1,fil); 24 if (strcmp(titel,enbok.titel)==0){ 25 expris=enbok.pris; 26 if (j==0) 27 expris=(int)(0.6*enbok.pris+0.5); 28 if (j>=1 && j<=4) 29 expris=(int)(0.8*enbok.pris+0.5); 30 if (j>=5 && j<=9) 31 expris=(int)(0.9*enbok.pris+0.5); 32 printf("%-30s %3d %3d\n",titel,enbok.pris,expris); 33 tot=tot+expris; 34 } 35 } 36 } 37 printf("total att betala %21d\n",tot); 38 } Håkan Strömberg 7 KTH STH

Uppgift 8. Talens uthärdlighet 1 #include <stdio.h> 2 #include <conio.h> 3 int main(void){ 4 int tal=9,ok,v,varv=0,p,t; 5 6 printf("antal varv? "); 7 scanf("%d",&v); 8 while (varv<v){ 9 tal=tal+1; 10 varv=1; 11 ok=0; 12 t=tal; 13 while (!ok){ 14 p=1; 15 while (t>0){ 16 p=p*(t%10); 17 t=t/10; 18 } 19 if (p>=10){ 20 varv++; 21 t=p; 22 } 23 else 24 ok=1; 25 } 26 } 27 printf("%d\n",tal); 28 } Håkan Strömberg 8 KTH STH