Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Relevanta dokument
Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

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

Spelschema för årets fotbollsmästerskap! island tyskland Söndag 14/7 Växjö Arena, Växjö. Söndag 14/7 Kalmar Arena, Kalmar

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

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

Programmering i C, 7,5 hp

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

Enkla uppgifter. Uppgift 1. Uppgift 2

Loopar och datatyper. Föreläsning 3

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

Belopp Belopp > procent

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

Funk%oner. Vad är det och hur definierar vi en Top- down- programmering lokala globala variabler void och flera inparametrar

översiktskurs (5DV031)

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

Funktioner och programstruktur. Föreläsning 5

Loopar och datatyper. Föreläsning 3

C++ Slumptalsfunktioner + switch-satsen

Blandat. Föreläsning 5

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

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

10% Ps. Fråga Anna i butiken om våra varor. Hon rider själv och vet allt om vad häst och ryttare behöver. ...

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

7 Programmeringsteknik

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

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

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

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

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

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 3

SKOLVIS LISTA ÖVER TURER. Sida 1 av 5

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

*Pekarvärden *Pekarvariabler & *

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Arrays (indicerade variabler) Föreläsning 6

Föreläsning 1 & 2 INTRODUKTION

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

Uttryck och villkor. Föreläsning 2

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

Föreläsning 9. Repetition och exempelproblem

Kompilatorer och interpretatorer

Programmeringsuppgifter 1

Uttryck och villkor. Föreläsning 2

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

Föreläsning 13. In- och utmatning

Funktioner och programstruktur. Föreläsning 5

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

Sanningar om programmering

Arrays (indicerade variabler) Föreläsning 4

Indicerade variabler

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

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

Programmering Grundkurs (HI1900) Teoridel

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

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

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

tentamensdags och lab 3

Föreläsning 1 & 2 INTRODUKTION

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

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

Vecka:1 Måndag Tisdag Onsdag Torsdag Fredag Lördag Söndag. Info: Färgade block - Bokade aktiviteter Fria block - Lediga tider för självträning

Data, typ, selektion, iteration

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg

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

Indexerade variabler

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Enkla datatyper minne

UPPGIFT 1 V75 FIGUR 1.

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

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

SKOLVIS LISTA ÖVER TURER. Sida 1 av 5

Sommarschema Vecka 24. Måndag 10/6 Tisdag 11/6 Onsdag 12/6 Torsdag 13/6 Fredag 14/6 Lördag 15/6 Söndag16/

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Tecken & Strängar. Kapitel 7

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

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

Ickelinjära ekvationer

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

Planering Programmering grundkurs HI1024 HT 2014

Föreläsning 9. struct

Föreläsning 3. Iteration while-satsen

Användning av stack: evaluera uttryck i RPN

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Iteration while-satsen

OOP Tenta

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

Västerås PROGRAMTABLÅ vecka 46 för ÖPPNA KANALEN VÄSTERÅS

Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM

STYRANDE SATSER. 1) Skriv ett program som räknar ut hur många år du har till pensionen. Vi räknar här med att man pensioneras det år man fyller 65 år.

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

Exempel ( )

Block 5: Ickelineära. ekvationer? Läroboken. Löpsedel: Icke-lineära. ekvationer. Vad visade laborationen? Vad visade laborationen?

Föreläsning 12. struct

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

En kort text om programmering i C.

Tentamen , Introduktion till Java, dtaa98, dtea53

Kompilatorer och interpretatorer

Introduktion till programmering

Algoritmer, datastrukturer och komplexitet

Transkript:

Problemlösning Veckodagsproblemet Gissa talet Siffersumman

Veckodagsproblemet Vi vill skriva ett program som kan berätta för oss vad det är för veckodag om x dagar.

Arbetsgång Förstå problemet Strukturera problemet (dela upp problemet) Konstruera algoritmer, skriva pseudokod Skriva programmet (detta steg består då av många steg och många iterationer man programmerar kanske top-down) Testning, dokumentering

Förstå problemet Vilka indata behöver vi för att lösa problemet? Vilka utdata förväntar sig användaren? Vilka problem kan uppstå, vilka ogiltiga data kan användaren ge. Hur skall det grafiska gränssnittet fungera?

Strukturera problemet Först måste vi skaffa indata och lagra dessa i något bra format Sedan måste vi beräkna utdata (när man löser stora problem brukar man i detta steg också dela upp beräkningarna i flera delar) Sist ska vi presentera utdata

Indata Snyggast hade varit att programmet själv tog reda på dagens veckodag. Vi skall här välja den något enklare varianten att användaren får ange dagens veckodag Dessutom skall vi för att göra det ännu enklare be användaren ange 0 för måndag, 1 för tisdag, osv Antal dagar får användaren ange med ett heltal

Algoritm Hur skulle vi själva lösa problemet? Hur skall vi beskriva lösningen så att en idiot skulle kunna förstå. Dvs beskriv en steg för steg lösning av problemet. Detta är algoritmen som löser problemet. Skriv om det i pseudokod (se exempel)

Hur skulle vi själva lösa problemet? Först skulle vi ta bort alla hela multiplar av 7 från x. Sedan skulle vi räkna fram veckodagarna från dagens dag. Dagens dag onsdag, x = 52 7*7 = 49, 52 49 = 3 så vi behöver räkna fram 3 dagar torsdag, fredag, lördag

Algoritm 0-måndag, 1-tisdag, 2-onsdag, idag = dagens veckodag, x = antal dagar Om x > = 7 dra bort 7 från x. Fortsätt tills x < 7. Beräkna resultat = idag + x Om resultat >= 7 dra bort 7 (vi kan inte räkna fram längre än 6 enligt första punkten ) Avläs vilken veckodag det motsvarar

Pseudokod läs in idag, x medans x >= 7 x = x 7 resultat = idag + x om resultat >= 7 så resultat = resultat 7 om resultat = 0 presentera måndag om resultat = 1 presentera tisdag. Ibland kan algoritm och pseudokod göras samtidigt. Oftast är pseudokoden mera detaljrik och närmare det färdiga programmet. Obs att detta är en lösning, det finns många fler en del både snitsigare och effektivare. Poängen är att denna lösning följer nära hur vi skulle löst problemet. Det har inte behövts några snilledrag!

Utdata Vi skriver här bara rätt veckodag med siffra till kommandotolken

#include <stdio.h> int main(void) int idag, antaldagar, soktdag; printf("0-mandag, 1-tisdag, 2-onsdag, 3-torsdag, 4-fredag, 5-lordag, 6-sondag\n"); printf("ange dagens dag:"); scanf("%d",&idag); printf("om hur manga dagar vill du veta vad det ar for veckodag?"); scanf("%d",&antaldagar); while(antaldagar>=7) antaldagar=antaldagar-7; soktdag=antaldagar+idag; if(soktdag>=7) soktdag=soktdag-7; printf("den dagen är det %d\n",soktdag); return 0;

Gissa talet Skriv programmet Gissa ett tal! Datorn tänker på ett tal genom att slumpa ett heltal i intervallet [1,100]. Användaren skall försöka gissa det hemliga talet. Datorn besvarar gissningarna med Större!, Mindre! eller Rätt!. Jag tänker nu på ett tal i intervallet [1..100]. Gissa talet! 37 Större! Gissa talet! 65 Mindre! Gissa talet! 52 Större! Gissa talet! 56 Rätt! Du gissade rätt på 4 gissningar.

#include <stdio.h> #include <stdlib.h> // Gissa ett tal i intervallet [1..100] int main(void) int svar, gissning, antal=0; srand(time(0)); svar=(rand()%100)+1; printf("jag tänker nu på ett tal i intervallet [1..100]. \n"); do printf("gissa talet! "); scanf("%d",&gissning); antal++; if(gissning<svar) printf("större! "); else if(gissning>svar) printf("mindre! "); while (gissning!=svar); printf("rätt! \n"); printf("du gissade rätt på %d gissningar.",antal);

Siffersumman Skriv ett program som läser in ett positivt heltal, och skriver ut talets siffersumma (d v s summan av de siffror som ingår i talet).(i exemplet nedan får vi siffersumman som 1+6+3+2=12.) Mata in ett tal: 1632 Siffersumman är 12.

#include <stdio.h> #include <stdlib.h> // Programmet beräknar siffersumman av ett tal >=0 void main(void) int tal, siffersumma=0; printf("mata in ett tal : "); scanf("%d",&tal); while(tal>0) siffersumma=siffersumma+tal%10; tal=tal/10; printf("siffersumman är %d",siffersumma);