70 likes | 233 Views
Teisendada antud 10nd arv mingisse teise positsioonilisse arvusüsteemi. Vastav täpsustatud ülesanne Antud : positiivne arv a tüüpi double, uue süsteemi alus taisarv p , p > 1, p ≠ 10 ning täpsus (tulemuse murdosa kohtade arv) täisarv k , k > 0
E N D
Teisendada antud 10nd arv mingisse teise positsioonilisse arvusüsteemi Vastav täpsustatud ülesanne Antud: positiivne arv a tüüpi double, uue süsteemi alus taisarv p, p > 1, p ≠ 10 ning täpsus (tulemuse murdosa kohtade arv) täisarv k, k > 0 Tulemus: sõne, mis on arvu a esituseks p-nd süsteemis; murdosas on k kohta; murdosa on ümardamata; täis- ja murdosa eraldajaks on koma • Alamülesandeid: • Teisendada täisarv 10 -> p • Teisendada murdosa 10 -> p: leida k kohta • Leida arvu täisosa • Leida arvu murdosa
Algoritm Antud: a,p ,k Tulemus: sõne s – arvu a kujutis p-nd süsteemis, k kohta peale koma s := tühi;t := a täisosa; m := a murdosa + t = 0 s := s + “0” - Teisendada tp-nd süsteemi; s := teisenduse tulemus s := s + “,” + m = 0 s := s + “0” - Lisada sõnele s arvu mk kohta peale koma p-nd süsteemis
Alamülesanne: leida murdosa kohad Täpsustatud ülesanne: Antud: m, p ja k (0 < m < 1, p > 1 , k > 0) Tulemus: sõne pikkusega k, mis kujutab arvu m numbrikohti p-nd süsteemis tulem := tühi; b := m k korda: c := b x p t := c täisosa; b := c murdosa tulem := tulem + tp-nd numbrina
String sõneks(double m, int p, int k) Antud:m, p ja k (0 < m < 1, p > 1 , k > 0) Tulemus: tagastatakse sõne pikkusega k, mis kujutab arvu m numbri- kohti p-nd süsteemis String tulem = “”; double b = m; * i = 1 .. k double c = b * p; int t = (int)c; t on c täisosa b = c - t; b on c murdosa tulem = tulem + t p-nd numbrina: tulem = tulem + Integer.toString(t, p); return tulem; Antud: m, p ja k (0 < m < 1, p > 1 , k > 0) Tulemus: sõne pikkusega k, mis kujutab arvu m numbrikohti p-nd süsteemis tulem := tühi; b := m k korda: c := b x p t := c täisosa; b := c murdosa tulem := tulem + tp-nd numbrina
Antud: a,p ,k Tulemus: sõne s – arvu a kujutis p-nd süsteemis, k kohta peale koma String s = “”; int t = (int)a; double m = a – t; if(t == 0) s = s + “0”; else s = s + Integer.toString(t, p); s = s + “,”; if(m == 0) s = s + “0”; else s = s + sõneks(m, p, k); s := tühi; t := a täisosa; m := a murdosa + t = 0 s := s + “0” - Teisendada tp-nd süsteemi; s := teisenduse tulemus s := s + “,” + m = 0 s := s + “0” - Lisada sõnele s arvu mk kohta peale koma p-nd süsteemis