HI1024 Programmering, grundkurs TEN

Relevanta dokument
HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

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

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,

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

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

Planering Programmering grundkurs HI1024 HT 2014

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,

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

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

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

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

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

Grundkurs Programmering

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,

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

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

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,

*Pekarvärden *Pekarvariabler & *

Planering Programmering grundkurs HI1024 HT TIDAA

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Planering Programmering grundkurs HI1024 HT data

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen Grundläggande programmering

Föreläsning 10. Pekare (Pointers)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

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

Tentamen TEN1 HI

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

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

Loopar och datatyper. Föreläsning 3

Programmeringsteknik med C och Matlab

Tentamen TEN1 HI

Programmering Grundkurs (HI1900) Teoridel

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Indexerade variabler

Funktioner och programstruktur. Föreläsning 5

Loopar och datatyper. Föreläsning 3

Funktioner och programstruktur. Föreläsning 5

TDIU01 - Programmering i C++, grundkurs

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

Tentamen i Programmering grundkurs och Programmering C

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

TDIU01 - Programmering i C++, grundkurs

Programmering i C, 7,5 hp

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

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

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 TEN1 HI

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

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

Exempelsamling Assemblerprogrammering

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Datalogi, grundkurs 1. Lösningsförslag till tentamen

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

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

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Föreläsning 11. Strängar

PROGRAMMERING-JAVA TENTAMINA

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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,

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Belopp Belopp > procent

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Föreläsning 12. struct

En kort text om programmering i C.

Uppgift 1 (vadå sortering?)

Tentamen i Programmering grundkurs och Programmering C

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Tentamen i Algoritmer & Datastrukturer i Java

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

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

tentaplugg.nu av studenter för studenter

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

MMA132: Laboration 2 Matriser i MATLAB

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

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

Typkonvertering. Java versus C

Tentamen i Programmering grundkurs och Programmering C

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

TENTAMEN OOP

6 Lågnivåprogrammering

Grundkurs Programmering

Att använda pekare i. C-kod

Transkript:

HI1024 Programmering, grundkurs TEN2 2016-10-28 KTH STH Flemingsberg 08.00-13.30* (*Uppstart tentamiljö: 08.00-08.30. Tentamen 08.30-13.30) Tilla tna hja lpmedel: Kursboken C PROGRAMMING A Modern Approach K. N. King helt utan anteckningar Alternativt C från början Jan Skansholm givetvis också utan antecknigar. Blanka papper, och penna. 0-7 F, 8 Fx, 9-10 E, 11-12 D, 13-14 C, 15-16 B, 17-19 A Examinator: Nicklas Brandefelt Ra ttande la rare: Nicklas Brandefelt, Anders Cajander Lycka Till! 1. (4p) Enkla luftlindade spolar är en viktig komponent radiosammanhang. Formeln för en sådan spoles induktans kan beräknas med följande formel: Programmet ska också innehålla möjligheten att göra en ny beräkning! Ditt program bör likna följande exempel! Single layer coil inductans calcylator. Enter diameter in mm?10 Enter length in mm?10 Enter number of turns?10 Inductans is 0.69 uh! Another calculation [1=Yes, 0=No]?1 Enter diameter in mm?12 Enter length in mm?12 Enter number of turns?12 Inductans is 1.19 uh! Another calculation [1=Yes, 0=No]?0 SLCIC Done. L = (d 2 n 2 )/(l+0.45d) [uh], där d och l anges i meter. Du ska skriva ett enkelt program som frågar efter spolens diameter i mm, spolens längd i mm samt hur många varv tråd spolen består av. Du ska därefter med hjälp av formeln beräkna spolens induktans. Svaret ska presenteras med 2 decimaler och uttryckt i enheten uh. TIPS: Tänk på att int / int blir en int!

2. (4p) När Morse tänkt ut att bokstäver skulle kunna sändas som korta och långa signaler blev frågan vilken kod varje bokstav skulle få. Det sägs att han då tog en bok ur bokhyllan och noterade hur många gånger varje enskild bokstav fanns på en slumpmässigt vald sida. Han fann att bokstaven e var vanligast följt av t, i, a, n och m. Han gav därför de bokstäverna de kortaste koderna., -,..,.-, -. & --'. Nu är frågan: Hade Samuel Morse rätt? För att undersöka det behövs med fördel en lång text men ditt program nöjer sig med att analysera en lång mening. Med andra ord: Uppgiften är att skapa ett program som läser in en lång mening som ska lagras i en array. Därefter ska programmet gå igenom arrayen och notera förekomsten av varje enskild bokstav i en frekvenstabell. Sist ska programmet skriva ut både frekvenstabellen och vilken bokstav som var vanligast. Skulle flera bokstäver få samma toppnotering räcker det om en av dessa presenteras. En körning bör se ut som följande exempel: (Programmet ska enbart hantera A.. Z.) Text Letter Frequence Analyser. warning: this program uses gets(), which is unsafe. Please enter a short text: SITTING IN AN ENGLISH GARDEN WAITING FOR THE SUN IF THE SUN DONT COME YOU GET A TAN FROM STANDING IN THE ENGLISH RAIN A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 7 0 1 3 8 3 7 5 11 0 0 2 2 15 5 0 0 4 6 10 3 0 1 0 1 0 Most frequent letter is 'N' found 15 times. TLFA - Done. 3. (7p) En otroligt vanlig lagringsstruktur är en så kallad först in först ut kö (Eng: First in first out FIFO queue). Visuellt går det att likna kön med en ring av fack samt två index, kallade skriv och läs som initialt pekar på samma fack i ringen. (Eng: r=read & w=write) När information ska lagras i ringen så placeras informationen i facket som pekas ut av indexet skriv, varpå skriv flyttas fram till nästa fack. På samma sätt hämtas ett lagrat värde via indexet läs som därefter flyttas fram till nästa fack. OBS 1: Nästa fack kan ha indexet 0 om nuvarande fack är det sista i ringen! OBS 2: Det ska inte gå att läsa ett värde om ringen är tom, vilket inträffar när läs och skriv index pekar på samma fack. OBS 3: Det ska inte gå att lagra ett värde om ringen är full, vilket inträffar när skriv index +1 är lika med läs index (givet räknereglerna i OBS 1). Den observante inser då att en ring om n fack med denna metod bara kan lagra n-1 värden, men funktionerna blir mycket enkla med denna lilla eftergift. OBS4: Med andra ord, ringkön är i själva verket en array där vi tänker oss att sista elementet följs av det 0:e elementet! Det hela framgår tydligt av figuren på nästa sida:

a) (1p) Skapa ett program som skapar en egen datatyp Queue som är en post som innehåller: En heltalarray om 4 element, själva kön. Ett heltalsindex för att markera nuvarande skrivindex. Ett heltalsindex för att markera nuvarande läsindex. Programmet ska i detta skede enbart innehålla typdeklarationen samt ett tomt huvudprogram. b) (2p) Lägg till i huvudprogrammet en variabeldeklaration där variabeln är av typen Queue. Skapa därefter en funktion qinit, med lämpliga parametrar, som kan initiera en varaibel av Queue-typ på ett lämpligt sätt. Anropa funktionen från huvudprogrammet! c) (1p) Skapa en funktion qview, med lämpliga parametrar, som kan skriva ut en variabel av Queue-typ på det sättet som framgår av efterföljande exempel. D.v.s [ kö ] { läsindex, skrivindex. Anropa funktionen fån huvudprogrammet. d) (3p) Skapa funktionerna qempty, qfull, qput & qget med lämpliga parametrar samt anropa qput & qget från huvudprogrammet så att det framgår att funktionerna fungerar! Exemplet på nästa sida visar en körning där huvudprogrammet försöker lagra informationen 1,2,3,4 vilket går bra utom i sista fallet då kön är full. Därefter försöker programmet läsa fyra värden, vilket går bra utom i sista fallet då kön är tom. Slutligen upprepas proceduren med talen 2, 4,6,8 för att demonstrera hur indexen räknar runt. (Exempelprogrammets qget returnerar -1 om kön är tom.)

Circular Queue Package Test Program. [ ] {0,0 [ 1 ] {0,1 [ 1 2 ] {0,2 [ 1 2 3 ] {0,3 [ OVERFLOW ] [ 1 2 3 ] {0,3 [1] [ 2 3 ] {1,3 [2] [ 3 ] {2,3 [3] [ ] {3,3 [ UNDERFLOW ] [-1] [ ] {3,3 [ 2 ] {3,0 [ 2 4 ] {3,1 [ 2 4 6 ] {3,2 [ OVERFLOW ] [ 2 4 6 ] {3,2 [2] [ 4 6 ] {0,2 [4] [ 6 ] {1,2 [6] [ ] {2,2 [ UNDERFLOW ] [-1] [ ] {2,2 CQPTP Done. 4) (4p) Skapa ett program som innehåller en 2-dimensionell array 10*10 med elementtypen char, där varje element är initierat till ett + tecken. Tänk er därefter att det engelska alfabetet, bokstäverna A till Z, ska placeras ut i tur och ordning med start i position (0,0). När A :et är utplacerat ska B :et placeras ut slumpmässigt i ett angränsande fält, dock inte diagonalt. I detta fall kan bara positionerna (1,0) eller (0,1) komma på tal, då både positionen ovanför och till vänster är utanför spelplanen. Positioner som redan är upptagna av en bokstav är också uteslutna. Notera att det i sällsynta fall kan bli så att nästa bokstav inte kan placeras ut, vilket programmet ska detektera. Svårigheten i denna uppgift är att på ett slumpmässigt sätt välja nästa position givet banbegränsningar och blockerande bokstäver! Programmet behöver inte använda funktioner. En körning kan se ut på följande sätt

Lösningsförslag uppgift 1: Lösningsförslag uppgift 2:

Lösningsförslag uppgift #3: #include <stdio.h> #define QSIZE 4 typedef struct { int queue[qsize]; int r,w; Queue; void qinit(queue *aqueue){ aqueue->r=0; aqueue->w=0; int qempty(queue aqueue) { return (aqueue.w==aqueue.r); int qfull(queue aqueue) { return (((aqueue.w+1)%qsize)==aqueue.r); void qview(queue aqueue){ printf("[ "); for (int i=aqueue.r; i!=aqueue.w; i=(i+1)%qsize) printf(" %d", aqueue.queue[i]); printf(" ] {%d,%d\n",aqueue.r,aqueue.w); void qput(queue *aqueue, int avalue){ if (!qfull(*aqueue)){ aqueue->queue[aqueue->w]=avalue; aqueue->w=(aqueue->w+1)%qsize; else printf("[ OVERFLOW ]\n"); int qget(queue *aqueue){ int avalue=-1; if (!qempty(*aqueue)){ avalue=aqueue->queue[aqueue->r]; aqueue->r=(aqueue->r+1)%qsize; else printf("[ UNDERFLOW ]\n"); return avalue; int main(void){ Queue myqueue; printf("circular Queue Package Test Program.\n"); qinit(&myqueue); qview(myqueue); for (int j=0; j<2; j++) { for (int i=0; i<qsize; i++){ qput(&myqueue, (i+1)*(j+1)); qview(myqueue); for (int i=0; i<qsize; i++){ printf("[%d] ",qget(&myqueue)); qview(myqueue); printf("cqptp Done.\n");

Lösningsförslag uppgift #4: