Rešena naloga: ŠTEVKE Z DESNE

Rešena naloga: ŠTEVKE Z DESNE

Avtor: Maja Vrenko

BESEDILO NALOGE

V danem naravnem številu je zadnja neničelna števka najbolj desna neničelna števka v desetiškem zapisu števila. Na primer, zadnja neničelna števka števila 123 je 3, pri številu 45600 je to 6, pri številu 100 pa 1.
Napiši funkcijo, ki za vsako števko od 1 do 9 ugotovi, kolikokrat se pojavi kot zadnja neničelna števka v zaporedju M,M + 1,M + 2, . . . ,N − 2,N − 1,N. Funkcija naj zapiše rezultat v tabelo tipa int[9]. Na primer, če je M = 118 in N = 122, pomeni, da obravnavamo zaporedje 118, 119, 120, 121, 122. Zadnje neničelne števke so 8, 9, 2, 1 in 2. Torej mora tabela vsebovati elemente 1, 2, 0, 0, 0, 0, 0, 1, 1, ker enica, osmica in devetka nastopajo kot zadnja neničelna števka enkrat, dvojka pa dvakrat.
Pozor: Razlika med številoma N in M je lahko tako velika, da je bolje, če ne obravnavamo vsakega števila med M in N posebej, ker bi podprogram predolgo tekel. Tvoja podprogram naj bo učinkovit!

OPIS PROBLEMA

Podano je zaporedje števil. Prešteti je potrebno vse zadnje neničelne števke v zaporedju. Na koncu vrnemo tablo števil velikosti 9. V tabeli mora biti število ponovitev števil od 1 do 9 kot zadnje neničelne števke.

IDEJA REŠITVE

Najprej ustvarimo tabelo velikosti 9, v katero se bo beležilo število ponovitev. Nato preverimo, kolikokrat je dolžina vhodne tabele deljiva z 10. Deljivost z 10 nam pove kolikokrat se ponovijo vsa števila kot zadnje števke. Potem ugotovimo, katero število predstavlja zadnjo števko pri prvem število v tabeli. Tako ustrezno-krat povečamo vsa števila. Na koncu povečamo še števila, ki se končajo z 0. Posebej obravnavamo možnost, da se že prvo število v tabeli konča z 0.

RAZLAGA ALGORITMA

Program stevkeZDesne bo kot vhodni podatek prejel tabelo zaporedja celih števil. Najprej ustvarimo tabelo velikosti 9 in nastavimo vse vrednosti vhodne tabele na 0.

Nato deklariramo več različnih spremenljivk in sicer:

  • Celoštevilsko spremenljivko dolzina, v katero zabeležimo dolžino vhodne tabele.
  • Celoštevilsko spremenljivko ponavljanje, v katero zabeležimo število ponovitev zadnjih števk v tabeli.
  • Celoštevilsko spremenljivko ponavljanje2, ki je za ena manjša od celoštevilske spremenljivke ponavljanje. Celoštevilsko spremenljivko ponavljanje2 uporabimo pri računanju vrednosti zadnjih števk števil, ki se končajo z 0.
  • Celoštevilsko spremenljivko ostanek, ki predstavlja število števk, ki se še dodatno ponovijo na zadnjem mestu števila.
  • Celoštevilsko spremenljivko stevec, katera je namenjena prehajanju po tabeli.
  • Celoštevilsko spremenljivko trenutni, v katero shranimo prvo število iz vhodne tabele.
  • Besedno spremenljivko niz, ki služi kot pomožna spremenljivka za spreminjanje celoštevilske spremenljivke trenutni v niz.
  • Besedno spremenljivko zadnji, v katero shranimo zadnji znak spremenljivke niz.

    (stevkeZDesne_prva.jpg)

V naslednji vrstici uporabimo if stavek, kateri omogoči izvajanje while zanke. Znotraj while zanke se ponavljajo for stavki, ki polnijo na začetku zgrajeno tabelo devetih števil, dokler je število ponavljan večje od 1.

(stevkeZDesne_druga.jpg)

Nato ponovno uporabimo if stavek, s katerim preverimo ali je spremenljivka zadnji enaka ali različna od »0«. Če je različna, potem znotraj if stavka prevermo, kateremu izmed števil od 1 do 9 je enaka spremenljivka zadnja. Za katerega je enakost izpolnjena naredimo naslednje:

  • Napolnimo na začetku narejeno tabelo devetih števil za števila od števila, ki se skriva v spremenljivki zadnji pa vse do tega števila povečanega za ostanek.
  • Nato preverimo še zadnje od nič različne števke pri številih, ki imajo na koncu ničle. Ustrezna polja v tabeli povečamo.
(stevkeZDesne_tretja.jpg)

Če je zadnja števka enaka 0 potem naredimo naslednje:

  • Najprej izračunamo zadnjo od 0 različno števko prvega števila v tabeli. Ustrezno število v tabeli devetih števil na podlagi tega povečamo.
  • Nato napolnimo na začetku narejeno tabelo devetih števil za števila od števila 1 do števila 1 povečanega za ostanek.
  • Nato preverimo vsa ostala števila, ki se končajo z 0 in ustrezno povečamo števila v začetni devet-številčni tabeli.
(stevkeZDesne_petaA.jpg) (stevkeZDesne_petaB.jpg)

Na koncu izpišemo tabelo s številom ponovitev zadnjih od nič različnih števk.

TESTNI PRIMERI

Za testne primere sem si izbrala različne tabele števil. Poudarek pri različnosti je bil v tem, da se je prvo število v tabeli vedno končalo z drugim številom. Tako sem sestavila 10 testnih primerov.

(stevkeZDesne_peta.jpg)

FILMČEK TESTIRANJA REŠITVE

0%
0%