Technologia Informacyjna - Wykład 3 Dodatkowe, ściągnięte, IT, technologia informacyjna(4)


Przykładowy algorytm realizujący proces konwersji liczby

na jej reprezentację słowną.

  1. Założenia projektowe.

Przy projektowaniu algorytmu wykorzystano własność powtarzalności procesu konwersji dla każdego rzędu wielkości czyli możliwość podziału konwertowanej liczby na trzycyfrowe “sekcje” odpowiadające poszczególnym rzędom wielkości danej liczby.

Przy takim podejściu można wyodrębnić funkcję (w tym przykładzie funkcję o nazwie Słownie) odpowiedzialną za zamianę na zapis słowny dowolnej liczby trzycyfrowej (również ujemnej) i uzupełnienie jej końcówką odpowiadającą rozpatrywanemu rzędowi wielkości (przy wywołaniu funkcji rząd wielkości jest sygnalizowany dodatkowym parametrem : 0 - konwersja bez końcówki , 1- końcówka “tysiące”, 2 - końcówka “miliony”; naturalnie w odpowiedniej formie)

Z przyjętych założeń wynika ograniczenie zakresu konwertowanych liczb do przedziału:
<-999999999.. 999999999>. Natrualnie w prosty sposób można algorytm rozbudować o kolejne rzędy wielkości “miliardy” , “biliony” itd.

Przyjmuje się ponadto, że liczba konwertowana musi być liczbą całkowitą.

  1. Algorytmy.

Algorytm ogólny - przedstawia strukturę procedury bez określenia sposobu działania funkcji Słownie, która jest przedstawiona w drugim algorytmie.

Ponadto ze względu na dużą złożoność algorytmu funkcji Słownie dla poprawienia jej czytelności przedstawiony jest listing funkcji realizującej ten algorytm (wykorzystanej w niniejszym dokumencie do prezentacji działania całej procedury - patrz koniec dokumentu) napisana w języku Visual Basic (zintegrowanym z aplikacją Word 97)

0x08 graphic

0x01 graphic

Ilustracja 1 Algorytm funkcji Słownie3 część 1.

0x01 graphic

Ilustracja 2 Algorytm funkcji Słownie3 część 2.

0x01 graphic

Ilustracja 3 Algorytm funkcji Słownie3 część 3.

Private Function Slownie3$(wartosc, rzad)

Dim tmp

Dim c3

Dim c2

Dim c1

Dim wynik1$

Dim wynik2$

Dim wynik3$

Dim w0$

' wartosc - wartość do konwersji na wyrażenie słowne,

' rzad - rząd wielkości (setki,tysiące,miliony)

tmp = wartosc

c3 = tmp Mod 10

c2 = WordBasic.Int((tmp Mod 100) / 10)

c1 = WordBasic.Int(tmp / 100)

Select Case c1

Case 0

wynik1$ = ""

Case 1

wynik1$ = "sto"

Case 2

wynik1$ = "dwieście"

Case 3

wynik1$ = "trzysta"

Case 4

wynik1$ = "czterysta"

Case 5

wynik1$ = "pięćset"

Case 6

wynik1$ = "sześćset"

Case 7

wynik1$ = "siedemset"

Case 8

wynik1$ = "osiemset"

Case 9

wynik1$ = "dziewięćset"

End Select

Select Case c2

Case 0

wynik2$ = ""

Case 1

Select Case c3

Case 0

wynik2$ = "dziesięć"

Case 1

wynik2$ = "jedenaście"

Case 2

wynik2$ = "dwanaście"

Case 3

wynik2$ = "trzynaście"

Case 4

wynik2$ = "czternaście"

Case 5

wynik2$ = "piętnaście"

Case 6

wynik2$ = "szesnaście"

Case 7

wynik2$ = "siedemnaście"

Case 8

wynik2$ = "osiemnaście"

Case 9

wynik2$ = "dziewiętnaście"

End Select

Case 2

wynik2$ = "dwadzieścia"

Case 3

wynik2$ = "trzydzieści"

Case 4

wynik2$ = "czterdzieści"

Case 5

wynik2$ = "pięćdziesiąt"

Case 6

wynik2$ = "sześćdziesiąt"

Case 7

wynik2$ = "siedemdziesiąt"

Case 8

wynik2$ = "osiemdziesiąt"

Case 9

wynik2$ = "dziewięćdziesiąt"

End Select

If c2 = 1 Then

wynik3$ = ""

If rzad = 2 Then w0$ = "tysięcy"

If rzad = 3 Then w0$ = "milionów"

Else

Select Case c3

Case 0

wynik3$ = ""

If rzad = 2 Then w0$ = "tysięcy"

If rzad = 3 Then w0$ = "milionów"

Case 1

wynik3$ = "jeden"

If c1 > 0 Or c2 > 0 Then

If rzad = 2 Then w0$ = "tysięcy"

If rzad = 3 Then w0$ = "milionów"

Else

If rzad = 2 Then w0$ = "tysiąc"

If rzad = 3 Then w0$ = "milion"

End If

Case 2

wynik3$ = "dwa"

If rzad = 2 Then w0$ = "tysiące"

If rzad = 3 Then w0$ = "miliony"

Case 3

wynik3$ = "trzy"

If rzad = 2 Then w0$ = "tysiące"

If rzad = 3 Then w0$ = "miliony"

Case 4

wynik3$ = "cztery"

If rzad = 2 Then w0$ = "tysiące"

If rzad = 3 Then w0$ = "miliony"

Case 5

wynik3$ = "pięć"

If rzad = 2 Then w0$ = "tysięcy"

If rzad = 3 Then w0$ = "milionów"

Case 6

wynik3$ = "sześć"

If rzad = 2 Then w0$ = "tysięcy"

If rzad = 3 Then w0$ = "milionów"

Case 7

wynik3$ = "siedem"

If rzad = 2 Then w0$ = "tysięcy"

If rzad = 3 Then w0$ = "milionów"

Case 8

wynik3$ = "osiem"

If rzad = 2 Then w0$ = "tysięcy"

If rzad = 3 Then w0$ = "milionów"

Case 9

wynik3$ = "dziewięć"

If rzad = 2 Then w0$ = "tysięcy"

If rzad = 3 Then w0$ = "milionów"

End Select

End If

If wartosc <> 0 Then

Slownie3$ = wynik1$ + wynik2$ + wynik3$ + w0$

Else

Slownie3$ = "zero"

End If

End Function

0x08 graphic

0x01 graphic

0x01 graphic



Wyszukiwarka

Podobne podstrony:
Technologia Informacyjna wykład 1, ściągnięte, IT, Technologia Informacyjna(5)
Technologia Informacyjna 22.11.2008, ściągnięte, IT, Technologia Informacyjna(5)
ti zapasowe, ściągnięte, IT, Technologia informacyjna(3)
GENERATOR KWARCOWY STEROWANY NAPIĘCIEM 0 LINIOWEJ, ściągnięte, IT, Technologia informacyjna(3)
technologia informacyjna - notatki, ściągnięte, IT, Technologia informacyjna(6)
technologia - pytania + odp, ściągnięte, IT, Technologia informacyjna(6)
Technologia Inforamcyjna2, ściągnięte, IT, Technologia Informacyjna
Technologia informacyjna, ściągnięte, IT, Zadania Technologia Informacyjna
Technologia Informacyjna 22.11.2008, ściągnięte, IT, Technologia Informacyjna(5)
Propedeutyka Pediatrii wykłady dodatkowe
dr Robaczyński, Wykłady dodatkowe, 14/05/2010
wykady pozyt, Wykład dodatk , Wykład I (dodatkowy)
wykład, Funkcje cyklometryczne wykład dodatkowy, Funkcje cyklometryczne
wykłady dodatkowo- nowe, Ekonomia, Studia, I rok, Finanase publiczne, Wykłady-stare, Wykłady
Ekonomia menedzerska wyklady dodatkowe id 155947
Wykład dodatkowy I Płuca i opłucna
BPZ wykłady dodatkowe

więcej podobnych podstron