Belopp Belopp > procent

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

Enkla uppgifter. Uppgift 1. Uppgift 2

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

Fråga 11. Vad skrivs ut? Fråga 12. Vad skrivs ut? Fråga 13. Vad skrivs ut? x=x+y; y=x-y; x=x-y;

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

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

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

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

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

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

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

Kontroll 13. Uppgift 1. Uppgift 2. Uppgift 3. Uppgift 4. Uppgift 5. Uppgift 6. Uppgift 7

Loopar och datatyper. Föreläsning 3

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

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

Loopar och datatyper. Föreläsning 3

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

Programmering i C, 7,5 hp

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

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

Programmering Grundkurs (HI1900) Teoridel

Problemlösning (3/5) Lösningar

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

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

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

Pseudokod. Arbetets gång

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

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

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

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

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

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

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

UPPGIFT 1 V75 FIGUR 1.

Föreläsning 9. Repetition och exempelproblem

Programmering Grundkurs Laboration 1

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

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

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

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

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

Arrays (indicerade variabler) Föreläsning 6

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

Funktioner och programstruktur. Föreläsning 5

Fråga 5. Vad krävs av funktionen undersok(a) för att b ska ökas med 1 respektive minskas med 1?

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

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

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

f (a) sin

Arrays (indicerade variabler) Föreläsning 4

C++ Slumptalsfunktioner + switch-satsen

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

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

Data, typ, selektion, iteration

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

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

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

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

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

f(t 2 ) f(t 1 ) = y 2 y 1 Figur 1:

En kort text om programmering i C.

Föreläsning 6. Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

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

Indicerade variabler

Föreläsning 10. Pekare (Pointers)

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,

17.1 Kontinuerliga fördelningar

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

Programmeringsteknik med C och Matlab

kl Tentaupplägg

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

OOP Tentamen

Uttryck och villkor. Föreläsning 2

Funktioner och programstruktur. Föreläsning 5

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

översiktskurs (5DV031)

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

Kompilatorer och interpretatorer

52 = Vi kan nu teckna hur mycket pengar han har, just när han har satt in sina 280 kr den tredje måndagen

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 18:e augusti klockan

DUGGA Tentaupplägg

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Problemlösning Lösningar

Tentamen *:58/ID100V Programmering i C Exempel 3

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Uttryck och villkor. Föreläsning 2

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

JAVAUTVECKLING LEKTION 4

Funktioner. Jan Erik Moström,

Kontrollera att följande punkter är uppfyllda innan rapporten lämnas in: Första sidan är ett försättsblad (laddas ned från kurshemsidan)

Föreläsning 3. Iteration while-satsen

Sidor i boken f(x) = a x 2 +b x+c

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

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

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,

Transkript:

Dagens problem Försäljarprovision Lönen för en försäljare är helt grundad på provision, direkt kopplad till den omsättning han lyckas skapa under en månad. Tabellen nedan anger procentsatser för olika intervall av omsättningens belopp Belopp Belopp > procent 100 000 10 100 000 150 000 12 150 000 200 000 15 200 000 20 För den delen av omsättningen som är 100000 erhåller han 10% kr i lön. För delen som hamnar mellan 100000 kr och 150000 kr får han 12% i lön och så vidare. Skriv ett program som tar emot uppgift om, för hur många månader( 5) beräkningen ska utföras, och därefter lika många månadsbelopp för omsättningen. Programmet ska skriva ut den totala lönen under perioden med två decimaler och i övrig fungera som i exemplen nedan: Antal månader: 2 Antal månader: 3 Månad 1: 150000 Månad 1: 31250 Månad 2: 175000 Månad 2: 130100 Lön under perioden: 35750.00 Månad 3: 250785 Lön under perioden: 50394.00 Håkan Strömberg 1 STH KTH

Löneförhöjning Adam och Bertil ska båda just till att påbörja en ny anställning. Adam kommer inledningsvis att tjäna a kr/mån och Bertil b kr/mån. Även om a är mindre än b, har Adam fått ett löneavtal som ger honom ap% i löneförhöjning varje halvår. Bertil kommer att få lönen höjd med bp% varje helår. Skriv ett program som tar emot data om a,b,ap och bp och som bestämmer hur många månader det dröjer innan Adams månadslön är högre än Bertils. Programmet ska också beräkna hur lång tid (i månader) det tar för Adams totala inkomst att bli större än Bertils. Ett körningsexempel visar dialogen. A månadslön (kr) : 20000 A höjning(proc/halvår): 3 B månadslön (kr) : 23000 B höjning(proc/år) : 4 A har högre månadslön efter 78 månader A har tjänat totalt mer efter 149 månader Tester kommer endast att göras med indata som leder till Adam verkligen kommer att få en högre lön än Bertil Siffersumma Skriv ett program som tar reda på hur många sexsiffriga tal i ett givet intervall (inklusive gränser) det finns, där summan av de tre första siffrorna är lika med summan av de tre sista. Från och med talet: 123456 Till och med talet: 654321 Det finns 31607 sådana tal Det första talet innehåller alltså alltid sex siffror och är mindre än eller lika med det andra talet som också innehåller sex siffror. Håkan Strömberg 2 STH KTH

Stridande arméer Vi ska här simulera en strid mellan två arméer, där striden är indelad i ett antal perioder. Indata till simuleringen är arméernas storlekar, i antal soldater räknat, och sannolikhet att en soldat i den ena armén under en period ska lyckas likvidera en soldat i den andra armén. Här ett exempel på indata: Arme 1 Antal : 1000 Arme 1 Träffproc : 0.02 Arme 2 Antal : 1500 Arme 2 Träffproc : 0.01 Den första armén har alltså från början 1000 soldater. Varje soldat har 2% chans att slå ut en soldat i den andra armén under en tidsperiod. Med hjälp av följande formler kan vi bestämma läget i striden efter period n: { xn+1 = x n t y y n y n+1 = y n t x x n x n och y n är antalet soldater i de två arméerna efter period n. x n+1 och y n+1 är antalet soldater efter period n + 1 t x och t y är motsvarande sannolikheter. Skriv ett program som tar emot indata enligt ovan och som bestämmer efter hur många perioder striden är över. Det kan vara lämpligt att även skriva ut en tabell som visar antalet soldater i de två arméerna period för period. Testdata ovan ger utskriften: Arme 2 har vunnit striden efter 125 perioder. Observera att trots att ordet sannolikhet förekommer i texten så ska inga slumptal användas här. Håkan Strömberg 3 STH KTH

Lösningsförslag Försäljarprovision 1 void main(void){ 2 int belopp,n,i; 3 float tot=0.0; 4 clrscr(); 5 printf("antal månader: "); 6 scanf("%d",&n); 7 for(i=1;i<=n;i++){ 8 printf("månad %d: ",i); 9 scanf("%d",&belopp); 10 if(belopp<=100000) 11 tot=tot+belopp 0.10; 12 else { 13 tot=tot+100000 0.10; 14 if(belopp<=150000) 15 tot=tot+(belopp 100000) 0.12; 16 else { 17 tot=tot+50000 0.12; 18 if(belopp<=200000) 19 tot=tot+(belopp 150000) 0.15; 20 else 21 tot=tot+50000 0.15+(belopp 200000) 0.20; 22 23 24 25 printf("total lön under perioden: %.2f\n",tot); 26 Ja så här började tentamen! Jag blev nog lite chockad när jag förstod att formuleringen av problemet inte gick fram. En ursäkt till de första som frågade då jag bara klappade dem på axeln och uppmanade dem att tänka till. Så småningom föll jag till föga och jag hoppas att alla som ville ha, fick en tillräcklig förklaring. Men varför en sådan uppgift? Jag står på mig det är lika viktigt (om inte viktigare) att kunna läsa en text och tolka dess innehåll, som att kunna skriva ett program i C. Visst men det var första uppgiften och nästan första tentan på hela utbildningen och ni blev nervösa. 8-25 Lösningsförslaget ovan består av en for-sats. Ett varv för varje månad. 11-24 Uppdelandet i olika intervall kan lösas med hjälp av en if-else konstruktion. När man som här undviker att definiera konstanter med define får man en ganska ful kod. Håkan Strömberg 4 STH KTH

Ett alternativ kan vara att lagra konstanterna (belopp och procent) i en matris. Koden blir då något kortare, samtidigt som kodningen blir något svårare. Löneförhöjning #include <stdio.h> void main(void){ float alon,ahoj,blon,bhoj,atot=0.0,btot=0.0; int man=0,totlon=0,manlon=0; printf("a månadslön (kr) "); scanf("%f",&alon); printf("a höjning(%/halvår) "); scanf("%f",&ahoj); printf("b månadslön (kr) "); scanf("%f",&blon); printf("b höjning(%/år) "); scanf("%f",&bhoj); while(manlon==0 totlon==0){ if(alon>blon && manlon==0){ printf("a har högre månadslön efter %d månader\n",man); manlon=1; man++; atot=atot+alon; btot=btot+blon; if(man%6==0) alon=alon*(1+ahoj/100); if(man%12==0) blon=blon*(1+bhoj/100); if(atot>btot && totlon==0){ printf("a har tjänat totalt mer efter %d månader\n",man); totlon=1; Håkan Strömberg 5 STH KTH

Siffersumma 1 void main(void){ 2 int fran,till,antal=0,sum1,sum2,tal,i,j; 3 clrscr(); 4 printf("från och med tal: "); 5 scanf("%d",&fran); 6 printf("till och med tal: "); 7 scanf("%d",&till); 8 for(i=fran;i<=till;i++){ 9 sum1=0; sum2=0; tal=i; 10 for(j=1;j<=3;j++){ 11 sum1=sum1+tal%10; 12 tal=tal/10; 13 14 for(j=1;j<=3;j++){ 15 sum2=sum2+tal%10; 16 tal=tal/10; 17 18 if(sum1==sum2) 19 antal++; 20 21 printf("\ndet finns %d sådana tal\n",antal); 22 8-20 En for-loop, där ett varv tar hand om ett tal i det givna intervallet. För att den övre gränsen ska tas med ska avbrottsvillkoret skrivas i<=till. 10-13 En for-loop som bestämmer summan av de tre sista siffrorna. tal huggs av med en siffra i varje varv. En konstruktion som vi övat på flera gånger under kursen. 14-17 När vi når den loop som ska beräkna summan av talets tre första siffror består tal lagom av just tre siffror. 18-19 Vi har nu två summor, sum1 och sum2 att jämföra. Är de lika är det dags räkna upp antal 21 När vi kommer hit, vet vi hur många tal det finns av den typ vi söker. Håkan Strömberg 6 STH KTH

Stridande arméer #include <stdio.h> int main(void){ float arme1,arme2,t1,t2,tmp; int period=0; printf("arme 1 : "); scanf("%f",&arme1); printf("träffproc : "); scanf("%f",&t1); printf("arme 2 : "); scanf("%f",&arme2); printf("träffproc : "); scanf("%f",&t2); do{ tmp=arme1-t2*arme2; arme2=arme2-t1*arme1; arme1=tmp; period++; printf("%4d %5.0f %5.0f\n",period,arme1,arme2); while(arme1>0 && arme2>0); Håkan Strömberg 7 STH KTH