Hopp til innhold

Oppgave

Fra prosent til vekstfaktor og tilbake

Vi har ofte bruk for å regne ut vekstfaktoren når vi holder på med prosentvis vekst, men vi har nesten like ofte bruk for å gå den andre veien.

LK20

PS-50

I det første eksempelet med prisøkning i artikkelen "Vekstfaktor og prosentvis endring" øker en vare i pris med 25 prosent. Originalprisen er 1 500 kroner. Vi skal finne prisen etter prisøkningen. Slike oppgaver er greie å løse ved å bruke vekstfaktor.

Vi ønsker å lage et program som kan brukes til å regne prosentoppgaver med vekstfaktor. Brukeren av programmet skal kunne skrive inn tallene i oppgaven.

a) Algoritme

Vi begynner med vekstfaktoren. Skriv algoritmen til et program som tar imot et prosenttall fra brukeren av programmet og regner ut vekstfaktoren ved en økning med dette prosenttallet. Husk å få med forklarende tekster til programmet.

Løsningsforslag

Forslag til algoritme:

  • Skriv til skjermen "Dette programmet regner ut vekstfaktoren ved en økning på en bestemt prosent. Skriv inn denne prosenten:".

  • Ta imot svaret fra brukeren, og lagre det i variabelen prosent.
  • Regn ut 1+prosent/100, og lagre resultatet i variabelen vekstfaktor.
  • Skriv til skjermen "Vekstfaktoren ved en økning på <prosent> prosent er <vekstfaktor>.".

Med "<prosent>" mener vi den verdien variabelen prosent har. Tilsvarende gjelder for "<vekstfaktor>".

b) Koding

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

Løsningsforlag

Forslag til kode:

Python

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

PS-51

Vi skal lage et program som skal kunne regne ut hva en vare med en viss pris vil koste etter en prisoppgang på en viss prosent. Brukeren av programmet skal kunne skrive inn både førprisen og prosenten.

a) Algoritme

Skriv algoritmen til et slikt program.

Løsningsforslag

Forslag til algoritme:

  • Skriv til skjermen "Dette programmet regner ut den nye prisen på en vare som får en prisøkning på en viss prosent.".

  • Skriv til skjermen "Skriv inn nåværende pris på varen:".
  • Ta imot svaret fra brukeren, og lagre det i variabelen gammelpris.
  • Skriv til skjermen "Skriv inn prosenten for prisøkningen:".
  • Ta imot svaret fra brukeren, og lagre det i variabelen prosent.
  • Regn ut 1+prosent/100, og lagre resultatet i variabelen vekstfaktor.
  • Multipliser vekstfaktor med gammelpris, og lagre resultatet i variabelen nypris.
  • Skriv til skjermen "Når en vare som koster <gammelpris> kroner får en prisøkning på <prosent> prosent, blir den nye prisen <nypris> kroner.".

Med "<gammelpris>" mener vi den verdien variabelen gammelpris har. Tilsvarende gjelder for "<prosent>" og "<nypris>".

b) Koding

Skriv koden til algoritmen i a).

Løsning

Forslag til kode:

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# informasjon til brukeren av programmet

print("Dette programmet regner ut den nye prisen på en vare"
  " som får en prisøkning på en viss prosent.")
  
# ta imot informasjon fra brukeren av programmet

gammelpris = float(input("Skriv inn nåværende pris på varen: "))
prosent = float(input("Skriv inn prosenten for prisøkningen: "))

vekstfaktor = 1 + prosent/100

nypris = gammelpris*vekstfaktor

print(f"Når en vare som koster {gammelpris} kroner får en prisøkning"
  f" på {prosent} prosent, blir den nye prisen {nypris} kroner.")

c) Algoritme

Det er ikke alltid at det er en pris som skal øke i prosent. Det kan være hva som helst. Endre på de forklarende tekstene i algoritmen i a) slik at programmet "passer" uansett hva det er som skal få en prosentøkning.

Løsning

Forslag til algoritme:

  • Skriv til skjermen "Dette programmet regner ut den nye verdien av et tall som skal øke med en viss prosent.".

  • Skriv til skjermen "Skriv inn tallet som skal endres:".
  • Ta imot svaret fra brukeren, og lagre det i variabelen tall.
  • Skriv til skjermen "Skriv inn prosenten for økningen:".
  • Ta imot svaret fra brukeren, og lagre det i variabelen prosent.
  • Regn ut 1+prosent/100, og lagre resultatet i variabelen vekstfaktor.
  • Multipliser vekstfaktor med tall, og lagre resultatet i variabelen nyverdi.
  • Skriv til skjermen "Når tallet <tall> økes med <prosent> prosent, øker det til <nytall>.".

PS-52

Vi ønsker å lage et program der brukeren av programmet skal kunne skrive inn et tall og en prosent og bestemme om det opprinnelige tallet skal øke eller minke med denne prosenten.

a) Algoritme

Skriv algoritmen til et slikt program.

Løsning
  • Skriv til skjermen "Dette programmet regner ut den nye verdien på et tall som skal øke eller minke med en viss prosent.".
  • Skriv til skjermen "Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.".
  • Ta imot svaret fra brukeren, og lagre det i variabelen svar.
  • Skriv til skjermen "Skriv inn tallet som skal få en prosentvis endring:".
  • Ta imot svaret fra brukeren, og lagre det i variabelen tall.
  • Skriv til skjermen "Skriv inn prosenten tallet skal endres med:".
  • Ta imot svaret fra brukeren, og lagre det i variabelen prosent.
  • Dersom variabelen svar har verdien "a":

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

    • Sett variabelen endring lik "øker".

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

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

    • Sett variabelen endring lik "minker".

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

Merk at vi bruker variabelen endring til å lage en svarsetning som gir mening, til slutt.

b) Koding

Lag programmet etter den ferdige algoritmen ovenfor.

Tips

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

Løsning

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# informasjon til brukeren av programmet
print("Dette programmet regner ut den nye verdien på et tall "
  "som skal øke eller minke med en viss prosent.")
  
# ta imot informasjon fra brukeren av programmet
svar = input("Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.")
tall = float(input("Skriv inn tallet som skal få en prosentvis endring: "))
prosent = float(input("Skriv inn prosenten tallet skal endres med: "))

# veivalg mellom økning eller minking
if svar == "a":
  vekstfaktor = 1 + prosent/100
  endring = "øker"    # bruker 'endring' til å lage svar som gir mening

elif svar == "m":
  vekstfaktor = 1 - prosent/100
  endring = "minker"

nytall = tall*vekstfaktor

print(f"Når tallet {tall} {endring} med {prosent} prosent, "
  f"{endring} det til {nytall}.")

Utfordring: Lag programmet slik at brukeren får meldinga "Skriv inn tallet som skal få en økning" dersom tallet skal økes, og tilsvarende om tallet skal minkes.

PS-53

Det hender at brukeren av et program skriver feil. Dersom brukeren av programmet i forrige oppgave er uheldig og skriver noe annet enn "a" eller "m" på det første spørsmålet, vil programmet krasje. Vi ønsker at brukeren skal få en ny sjanse til å svare rett på dette spørsmålet – helt til hen klarer å svare riktig, det vil si enten "a" eller "m".

a) Algoritme

Endre på algoritmen til programmet i forrige oppgave slik at dette ønsket blir oppfylt.

Tips

Vi trenger en struktur som er slik at så lenge for eksempel variabelen svar har en annen verdi enn "a" eller "m", skal brukeren bli bedt om å skrive svaret på nytt.

Løsning

Den øverste delen av algoritmen:

  • Skriv til skjermen "Dette programmet regner ut den nye verdien på et tall som skal øke eller minke med en viss prosent.".
  • La variabelen svar få verdien "feil".
  • Så lenge svar har verdien "feil":

    • Skriv til skjermen "Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.".
    • Ta imot svaret fra brukeren, og lagre det i variabelen svar.
    • Dersom svar ikke har verdien "a" eller "m", skriv til skjermen "Du skrev noe programmet ikke forsto.", 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 trenger du en while-struktur.

Løsning

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# informasjon til brukeren av programmet
print("Dette programmet regner ut den nye verdien på et tall "
  "som skal øke eller minke med en viss prosent.")
  
# ta imot informasjon fra brukeren av programmet
svar = "feil"
while svar == "feil":
  svar = input("Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.")
  if svar != "a":
    if svar != "m":
      print("Du skrev inn verken 'a' eller 'm'.")
      svar = "feil"

tall = float(input("Skriv inn tallet som skal få en prosentvis endring: "))
prosent = float(input("Skriv inn prosenten tallet skal endres med: "))

# veivalg mellom økning eller minking
if svar == "a":
  vekstfaktor = 1 + prosent/100
  endring = "øker"    # bruker 'endring' til å lage et svar som gir mening

elif svar == "m":
  vekstfaktor = 1 - prosent/100
  endring = "minker"

nytall = tall*vekstfaktor

print(f"Når tallet {tall} {endring} med {prosent} prosent, "
  f"{endring} det til {nytall}.")

c) Algoritme

Hvorfor er den andre instruksjonen i algoritmen over viktig?

Svar

Testingen er bygd opp rundt verdien av variabelen svar. svar må derfor være definert og ha fått en verdi før vi bruker den i testen på tredje linje i algoritmen. I tillegg må den verdien svar skal få i den andre linja, være "feil", ellers blir ikke noe av det som hører til under tredje linje, kjørt i det hele tatt.

PS-54

Vi ønsker nå at programmet i forrige oppgave skal kunne regne ut den nye verdien etter flere omganger med samme prosentvise endring, det vil si når vi har eksponentiell vekst.

a) Algoritme

Endre på algoritmen til programmet i forrige oppgave slik at brukeren kan skrive inn hvor mange ganger tallet skal endres med den samme prosenten.

Løsning

Vi har forkortet algoritmen så den ikke skal ta så stor plass.

  • Skriv startmelding og ta imot informasjon fra brukeren om økning eller minking.

  • Kjør testen på om brukeren skriver inn 'a' eller 'm'.

  • Ta imot tallet, prosenten og hvor mange ganger tallet skal endres, fra brukeren.

  • Regn ut vekstfaktor etter om det skal være økning eller minking.

  • Multipliser tallet med vekstfaktoren opphøyd i antall ganger tallet skal endres.

  • Skriv en passende svarmelding.

b) Koding

Skriv koden til programmet etter algoritmen i a).

Løsning

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# informasjon til brukeren av programmet
print("Dette programmet regner ut den nye verdien på et tall "
  "som skal øke eller minke med en viss prosent et visst antall ganger.")
  
# ta imot informasjon fra brukeren av programmet
svar = "feil"
while svar == "feil":
  svar = input("Dersom tallet skal øke, skriv 'a'. Dersom tallet skal minke, skriv 'm'.")
  if svar != "a":
    if svar != "m":
      print("Du skrev inn verken 'a' eller 'm'.")
      svar = "feil"

tall = float(input("Skriv inn tallet som skal få en prosentvis endring: "))
prosent = float(input("Skriv inn prosenten tallet skal endres med: "))
n = float(input("Skriv inn hvor mange ganger tallet skal endres: "))

# veivalg mellom økning eller minking
if svar == "a":
  vekstfaktor = 1 + prosent/100
  endring = "øker"    # bruker 'endring' til å lage svar som gir mening

elif svar == "m":
  vekstfaktor = 1 - prosent/100
  endring = "minker"

nytall = tall*vekstfaktor**n

print(f"Når tallet {tall} {endring} med {prosent} prosent "
  f"{n} ganger, {endring} det til {nytall}.")


PS-55

a) Regning

Noen ganger vet vi hvor stort et tall er både før og etter en prosentvis endring, men vi vet ikke prosenten. For å finne prosenten her må vi gjøre to regneoperasjoner. Hvilke to regneoperasjoner er det? Igjen er vekstfaktoren et stikkord.

Svar
  1. Vi må regne ut vekstfaktoren ut ifra de to tallene.
  2. Vi må regne ut prosenten ut ifra vekstfaktoren.

b) Regning

Vi ønsker å lage et program som kan regne ut den prosentvise økningen ut ifra verdien på et tall før og etter økningen. Vi ser nå på trinn nummer 2 ovenfor. Hvordan regner vi ut prosenten dersom vi vet vekstfaktoren?

Tips

Formelen for vekstfaktoren ved prosentvis økning er

vekstfaktor=1+prosent100

Prøv å snu på formelen slik at den blir på formen

prosent = ....

Tips for hvordan du snur en formel, finner du i artikkelen "Formelregning".

Løsningsforslag

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

c) Regning

Formelen ovenfor gjelder ved prosentvis økning. Finn tilsvarende formel for prosentvis nedgang.

d) Algoritme og koding

I første omgang skal vi lage et program som regner ut prosenten ut ifra to tall når det har vært prosentvis økning. Skriv algoritmen til et slikt program. (Husk å få med gode forklarende tekster.) Lag programmet etterpå.

Løsningsforslag
  • Skriv til skjermen "Dette programmet regner ut den prosentvise økningen når et tall øker fra en verdi til en annen.".
  • Skriv til skjermen "Skriv inn det opprinnelige tallet:".
  • Ta imot tallet fra brukeren, konverter det til et ekte tall, og lagre det i variabelen gammelverdi.
  • Skriv til skjermen "Skriv inn hva tallet er etter den prosentvise økningen:".
  • Ta imot tallet fra brukeren, konverter det til et ekte tall, og lagre det i variabelen nyverdi.
  • Regn ut nyverdi dividert med gammelverdi, og sett resultatet inn i variabelen vekstfaktor.
  • Regn ut 100 multiplisert med vekstfaktor, og trekk fra 100. Sett resultatet inn i variabelen prosent.
  • Skriv til skjermen "Når et tall øker fra <gammelverdi> til <nyverdi>, er økningen på <prosent> prosent.".

e) Algoritme og koding

Endre på algoritmen til programmet slik at det kan håndtere både prosentvis nedgang og prosentvis økning. Lag programmet etterpå.

Tips

Trenger vi å spørre brukeren om det har vært nedgang eller økning?

f) Algoritme og koding

Endre på algoritmen til programmet slik at det kan håndtere at det har vært den samme prosentvise endringen et visst antall ganger som brukeren kan skrive inn. Lag programmet etterpå.

PS-56

Bygg sammen de to programmene i de to oppgavene over slik at du får et ekte "prosentprogram" som kan takle alle oppgaver med vekstfaktor.

Sist oppdatert 31.05.2022
Skrevet av Bjarne Skurdal

Læringsressurser

Prosent og prosentvis vekst