Hopp til innhald

Oppgåver og aktivitetar

Frå prosent til vekstfaktor og tilbake

Vi har ofte bruk for å rekne ut vekstfaktoren når vi held på med prosentvis vekst, men vi har nesten like ofte bruk for å gå den andre vegen.

PS-50

I det første dømet med prisauke i artikkelen "Vekstfaktor og prosentvis endring" aukar ei vare i pris med 25 prosent. Originalprisen er 1 500 kroner. Vi skal finne prisen etter prisauken. Slike oppgåver er greie å løyse ved å bruke vekstfaktor.

Vi ønsker å lage eit program som kan brukast til å rekne prosentoppgåver med vekstfaktor. Brukaren av programmet skal kunne skrive inn tala i oppgåva.

a) Algoritme

Vi byrjar med vekstfaktoren. Skriv algoritmen til eit program som tek imot eit prosenttal frå brukaren av programmet og reknar ut vekstfaktoren ved ein auke med dette prosenttalet. Hugs å få med forklarande tekstar til programmet.

Løysingsforslag

Forslag til algoritme:

  • Skriv til skjermen "Dette programmet reknar ut vekstfaktoren ved ein auke på ein bestemd prosent. Skriv inn denne prosenten:".

  • Ta imot svaret frå brukaren, og lagre det i variabelen prosent.
  • Rekn ut 1+prosent/100, og lagre resultatet i variabelen vekstfaktor.
  • Skriv til skjermen "Vekstfaktoren ved ein auke på <prosent> prosent er <vekstfaktor>.".

Med "<prosent>" meiner vi den verdien variabelen prosent har. Tilsvarande gjeld for "<vekstfaktor>".

b) Koding

Lag programmet med ein programmeringseditor, og test at det fungerer slik det skal.

Løysingsforlag

Forslag til kode:

Python

1print("Dette programmet reknar ut vekstfaktoren "
2"ved ein auke på ein bestemd prosent.")
3prosent = float(input("Skriv inn denne prosenten:"))
4vekstfaktor = 1 + prosent/100
5print(f"Vekstfaktoren ved ein auke "
6f"på {prosent} prosent er {vekstfaktor}.")

PS-51

Vi skal lage eit program som skal kunne rekne ut kva ei vare med ein viss pris vil koste etter ein prisoppgang på ein viss prosent. Brukaren av programmet skal kunne skrive inn både førprisen og prosenten.

a) Algoritme

Skriv algoritmen til eit slikt program.

Løysingsforslag

Forslag til algoritme:

  • Skriv til skjermen "Dette programmet reknar ut den nye prisen på ei vare som får ein prisauke på ein viss prosent.".

  • Skriv til skjermen "Skriv inn noverande pris på vara:".
  • Ta imot svaret frå brukaren, og lagre det i variabelen gammalpris.
  • Skriv til skjermen "Skriv inn prosenten for prisauken:".
  • Ta imot svaret frå brukaren, og lagre det i variabelen prosent.
  • Rekn ut 1+prosent/100, og lagre resultatet i variabelen vekstfaktor.
  • Multipliser vekstfaktor med gammalpris, og lagre resultatet i variabelen nypris.
  • Skriv til skjermen "Når ei vare som kostar <gammalpris> kroner får ein prisauke på <prosent> prosent, blir den nye prisen <nypris> kroner.".

Med "<gammalpris>" meiner vi den verdien variabelen gammalpris har. Tilsvarande gjeld for "<prosent>" og "<nypris>".

b) Koding

Skriv koden til algoritmen i a).

Løysing

Forslag til kode:

python

1# informasjon til brukaren av programmet
2
3print("Dette programmet reknar ut den nye prisen på ei vare"
4  " som får ein prisauke på ein viss prosent.")
5  
6# ta imot informasjon frå brukaren av programmet
7
8gammalpris = float(input("Skriv inn noverande pris på vara: "))
9prosent = float(input("Skriv inn prosenten for prisauken: "))
10
11vekstfaktor = 1 + prosent/100
12
13nypris = gammalpris*vekstfaktor
14
15print(f"Når ei vare som kostar {gammalpris} kroner får ein prisauke"
16  f" på {prosent} prosent, blir den nye prisen {nypris} kroner.")

c) Algoritme

Det er ikkje alltid at det er ein pris som skal auke i prosent. Det kan vere kva som helst. Endre på dei forklarande tekstane i algoritmen i a) slik at programmet "passar" same kva det er som skal få ein prosentauke.

Løysing

Forslag til algoritme:

  • Skriv til skjermen "Dette programmet reknar ut den nye verdien av eit tal som skal auke med ein viss prosent.".

  • Skriv til skjermen "Skriv inn talet som skal endrast:".
  • Ta imot svaret frå brukaren, og lagre det i variabelen tal.
  • Skriv til skjermen "Skriv inn prosenten for auken:".
  • Ta imot svaret frå brukaren, og lagre det i variabelen prosent.
  • Rekn ut 1+prosent/100, og lagre resultatet i variabelen vekstfaktor.
  • Multipliser vekstfaktor med tal, og lagre resultatet i variabelen nyverdi.
  • Skriv til skjermen "Når talet <tal> blir auka med <prosent> prosent, aukar det til <nytal>.".

PS-52

Vi ønsker å lage eit program der brukaren av programmet skal kunne skrive inn eit tal og ein prosent og avgjere om det opphavlege talet skal auke eller minke med denne prosenten.

a) Algoritme

Skriv algoritmen til eit slikt program.

Løysing
  • Skriv til skjermen "Dette programmet reknar ut den nye verdien på eit tal som skal auke eller minke med ein viss prosent.".
  • Skriv til skjermen "Dersom talet skal auke, skriv 'a'. Dersom talet skal minke, skriv 'm'.".
  • Ta imot svaret frå brukaren, og lagre det i variabelen svar.
  • Skriv til skjermen "Skriv inn talet som skal få ei prosentvis endring:".
  • Ta imot svaret frå brukaren, og lagre det i variabelen tal.
  • Skriv til skjermen "Skriv inn prosenten talet skal endrast med:".
  • Ta imot svaret frå brukaren, og lagre det i variabelen prosent.
  • Dersom variabelen svar har verdien "a":

    • Rekn ut 1+prosent/100, og lagre resultatet i variabelen vekstfaktor.

    • Set variabelen endring lik "aukar".

  • Dersom svar ikkje har verdien "a", men verdien "m":

    • Rekn ut 1-prosent/100, og lagre resultatet i variabelen vekstfaktor.

    • Set variabelen endring lik "minkar".

  • Multipliser vekstfaktor med tal, og lagre resultatet i variabelen nyverdi.
  • Skriv til skjermen "Når talet <tal> <endring> med <prosent> prosent, <endring> det til <nytal>.".

Merk at vi bruker variabelen endring til å lage ei svarsetning som gir meining, til slutt.

b) Koding

Lag programmet etter den ferdige algoritmen ovanfor.

Tips

Her kan du få bruk for kommandoordet if. Sjå artikkelen "Vegval – if-elif-else".

Løysing

python

1# informasjon til brukaren av programmet
2print("Dette programmet reknar ut den nye verdien på eit tal "
3  "som skal auke eller minke med ein viss prosent.")
4  
5# ta imot informasjon frå brukaren av programmet
6svar = input("Dersom talet skal auke, skriv 'a'. Dersom talet skal minke, skriv 'm'.")
7tal = float(input("Skriv inn talet som skal få ei prosentvis endring: "))
8prosent = float(input("Skriv inn prosenten talet skal endrast med: "))
9
10# vegval mellom auke eller minking
11if svar == "a":
12  vekstfaktor = 1 + prosent/100
13  endring = "aukar"    # bruker 'endring' til å lage svar som gir meining
14
15elif svar == "m":
16  vekstfaktor = 1 - prosent/100
17  endring = "minkar"
18
19nytal = tal*vekstfaktor
20
21print(f"Når talet {tal} {endring} med {prosent} prosent, "
22  f"{endring} det til {nytal}.")

Utfordring: Lag programmet slik at brukaren får meldinga "Skriv inn talet som skal få ein auke" dersom talet skal aukast, og tilsvarande om talet skal minkast.

PS-53

Det hender at brukaren av eit program skriv feil. Dersom brukaren av programmet i den førre oppgåva er uheldig og skriv noko anna enn "a" eller "m" på det første spørsmålet, vil programmet krasje. Vi ønsker at brukaren skal få ein ny sjanse til å svare rett på dette spørsmålet – heilt til hen klarer å svare rett, det vil seie anten "a" eller "m".

a) Algoritme

Endre på algoritmen til programmet i den førre oppgåva slik at dette ønsket blir oppfylt.

Tips

Vi treng ein struktur som er slik at så lenge til dømes variabelen svar har ein annan verdi enn "a" eller "m", skal brukaren bli beden om å skrive svaret på nytt.

Løysing

Den øvste delen av algoritmen:

  • Skriv til skjermen "Dette programmet reknar ut den nye verdien på eit tal som skal auke eller minke med ein viss prosent.".
  • La variabelen svar få verdien "feil".
  • Så lenge svar har verdien "feil":

    • Skriv til skjermen "Dersom talet skal auke, skriv 'a'. Dersom talet skal minke, skriv 'm'.".
    • Ta imot svaret frå brukaren, og lagre det i variabelen svar.
    • Dersom svar ikkje har verdien "a" eller "m", skriv til skjermen "Du skreiv noko programmet ikkje forstod.", og la variabelen svar få verdien "feil".
  • (Resten av algoritmen er som før.)

b) Koding

Endre deretter på programkoden, og kontroller at programmet fungerer slik det skal.

Tips

Her treng du ein while-struktur.

Løysing

python

1# informasjon til brukaren av programmet
2print("Dette programmet reknar ut den nye verdien på eit tal "
3  "som skal auke eller minke med ein viss prosent.")
4  
5# ta imot informasjon frå brukaren av programmet
6svar = "feil"
7while svar == "feil":
8  svar = input("Dersom talet skal auke, skriv 'a'. Dersom talet skal minke, skriv 'm'.")
9  if svar != "a":
10    if svar != "m":
11      print("Du skreiv inn verken 'a' eller 'm'.")
12      svar = "feil"
13
14tal = float(input("Skriv inn talet som skal få ei prosentvis endring: "))
15prosent = float(input("Skriv inn prosenten talet skal endrast med: "))
16
17# vegval mellom auke eller minking
18if svar == "a":
19  vekstfaktor = 1 + prosent/100
20  endring = "aukar"    # bruker 'endring' til å lage eit svar som gir meining
21
22elif svar == "m":
23  vekstfaktor = 1 - prosent/100
24  endring = "minkar"
25
26nytal = tal*vekstfaktor
27
28print(f"Når talet {tal} {endring} med {prosent} prosent, "
29  f"{endring} det til {nytal}.")

c) Algoritme

Kvifor er den andre instruksjonen i algoritmen over viktig?

Svar

Testinga er bygd opp rundt verdien av variabelen svar. svar må derfor vere definert og ha fått ein verdi før vi bruker han i testen på tredje linje i algoritmen. I tillegg må den verdien svar skal få i den andre linja, vere "feil", elles blir ikkje noko av det som høyrer til under tredje linje, køyrt i det heile.

PS-54

Vi ønsker no at programmet i den førre oppgåva skal kunne rekne ut den nye verdien etter fleire omgangar med den same prosentvise endringa, det vil seie når vi har eksponentiell vekst.

a) Algoritme

Endre på algoritmen til programmet i den førre oppgåva slik at brukaren kan skrive inn kor mange gonger talet skal endrast med den same prosenten.

Løysing

Vi har forkorta algoritmen så han ikkje skal ta så stor plass.

  • Skriv startmelding og ta imot informasjon frå brukaren om auke eller minking.

  • Køyr testen på om brukaren skriv inn 'a' eller 'm'.

  • Ta imot talet, prosenten og kor mange gonger talet skal endrast, frå brukaren.

  • Rekn ut vekstfaktor etter om det skal vere auke eller minking.

  • Multipliser talet med vekstfaktoren opphøgd i talet på gonger talet skal endrast.

  • Skriv ei passande svarmelding.

b) Koding

Skriv koden til programmet etter algoritmen i a).

Løysing

python

1# informasjon til brukaren av programmet
2print("Dette programmet reknar ut den nye verdien på eit tal "
3  "som skal auke eller minke med ein viss prosent eit visst tal på gonger.")
4  
5# ta imot informasjon frå brukaren av programmet
6svar = "feil"
7while svar == "feil":
8  svar = input("Dersom talet skal auke, skriv 'a'. Dersom talet skal minke, skriv 'm'.")
9  if svar != "a":
10    if svar != "m":
11      print("Du skreiv inn verken 'a' eller 'm'.")
12      svar = "feil"
13
14tal = float(input("Skriv inn talet som skal få ei prosentvis endring: "))
15prosent = float(input("Skriv inn prosenten talet skal endrast med: "))
16n = float(input("Skriv inn kor mange gonger talet skal endrast: "))
17
18# vegval mellom auke eller minking
19if svar == "a":
20  vekstfaktor = 1 + prosent/100
21  endring = "aukar"    # bruker 'endring' til å lage svar som gir meining
22
23elif svar == "m":
24  vekstfaktor = 1 - prosent/100
25  endring = "minkar"
26
27nytal = tal*vekstfaktor**n
28
29print(f"Når talet {tal} {endring} med {prosent} prosent "
30  f"{n} gonger, {endring} det til {nytal}.")


PS-55

a) Rekning

Nokre gonger veit vi kor stort eit tal er både før og etter ei prosentvis endring, men vi veit ikkje prosenten. For å finne prosenten her må vi gjere to rekneoperasjonar. Kva to rekneoperasjonar er det? Igjen er vekstfaktoren eit stikkord.

Svar
  1. Vi må rekne ut vekstfaktoren ut frå dei to tala.
  2. Vi må rekne ut prosenten ut frå vekstfaktoren.

b) Rekning

Vi ønsker å lage eit program som kan rekne ut den prosentvise auken ut frå verdien på eit tal før og etter auken. Vi ser no på trinn nummer 2 ovanfor. Korleis reknar vi ut prosenten dersom vi veit vekstfaktoren?

Tips

Formelen for vekstfaktoren ved prosentvis auke er

vekstfaktor=1+prosent100

Prøv å snu på formelen slik at han blir på forma

prosent = ....

Tips for korleis du snur ein formel, finn du i artikkelen "Formelrekning".

Løysingsforslag

vekstfaktor = 1+prosent100                        | ·100100·vekstfaktor = 100·1+100·prosent100= 100+prosent100·vekstfaktor-100 = prosentprosent = 100·vekstfaktor-100

c) Rekning

Formelen ovanfor gjeld ved prosentvis auke. Finn tilsvarande formel for prosentvis nedgang.

d) Algoritme og koding

I første omgang skal vi lage eit program som reknar ut prosenten ut frå to tal når det har vore prosentvis auke.

Skriv algoritmen til eit slikt program. (Hugs å få med gode forklarande tekstar.) Lag programmet etterpå.

Løysingsforslag
  • Skriv til skjermen "Dette programmet reknar ut den prosentvise auken når eit tal aukar frå ein verdi til ein annan.".
  • Skriv til skjermen "Skriv inn det opphavlege talet:".
  • Ta imot talet frå brukaren, konverter det til eit ekte tal, og lagre det i variabelen gammalverdi.
  • Skriv til skjermen "Skriv inn kva talet er etter den prosentvise auken:".
  • Ta imot talet frå brukaren, konverter det til eit ekte tal, og lagre det i variabelen nyverdi.
  • Rekn ut nyverdi dividert med gammalverdi, og set resultatet inn i variabelen vekstfaktor.
  • Rekn ut 100 multipliserte med vekstfaktor, og trekk frå 100. Set resultatet inn i variabelen prosent.
  • Skriv til skjermen "Når eit tal aukar frå <gammalverdi> til <nyverdi>, er auken på <prosent> prosent.".

e) Algoritme og koding

Endre på algoritmen til programmet slik at det kan handtere både prosentvis nedgang og prosentvis auke. Lag programmet etterpå.

Tips

Treng vi å spørje brukaren om det har vore nedgang eller auke?

f) Algoritme og koding

Endre på algoritmen til programmet slik at det kan handtere at det har vore den same prosentvise endringa eit visst tal på gonger som brukaren kan skrive inn. Lag programmet etterpå.

PS-56

Bygg saman dei to programma i dei to oppgåvene over slik at du får eit ekte "prosentprogram" som kan takle alle oppgåver med vekstfaktor.

Relatert innhald

Her ser vi på prosentvis vekst i fleire periodar, det vi kallar eksponentiell vekst.

CC BY-SASkrive av Bjarne Skurdal.
Sist fagleg oppdatert 31.05.2022

Læringsressursar

Samling av programmeringsoppgåver