assignment2

background image

Laboratorium Podstaw Programowania

Laboratorium Poprawkowe

Uwagi Wstępne

Poniżej znajdują się trzy zadania. Za każde można otrzymać do 10 pkt. Zwróć uwagę, aby Twój kod był czytelny (np.
aby nazwy zmiennych odzwierciedlały do czego służą). Wskazane jest robienie funkcji pomocniczych. Uważnie czytaj
treść zadań. W razie konieczności dopytaj prowadzącego.

1

Zadanie 1

Celem tego zadania jest napisanie programu rozwiązującego równanie kwadratowe postaci:

ax

2

+ bx + c = 0

(1)

Stwórz klasę Trojmian. Klasa powinna mieć trzy pola odpowiedzialne za każdy ze współczynników trójmianu kwadra-
towego (a, b oraz c) oraz dwa odpowiedzialne za przechowywanie jego rozwiązania. Klasa powinna mieć następujące
metody:

Konstruktor. W konstruktorze klasa powinna przyjmować wartości współczynników trójmianu kwadratowego.

rozwiaz - ta metoda nie powinna mieć żadnych parametrów i powinna zwracać wartość typu boolean w zależności

od tego, czy istnieją pierwiastki trójmianu o zadanych współczynnikach (true, jeśli istnieją i false w przeciwnym
przypadku). Metoda powinna ustawiać publiczne pola w klasie zawierające wartość pierwiastków trójmianu (po jego
rozwiązaniu).

Uwagi

• Aby obliczyć pierwiastek z liczby, skorzystaj z metody sqrt() klasy Math (java.lang.Math).

• Jeśli istnieje pierwiastek podwójny, obydwa rozwiązania powinny przyjąć tę samą wartość.

• Jeśli istnieje tylko jedno rozwiązanie, należy zwrócić true i ustawić tylko jedno pole.

• Jeśli istnieje nieskończenie wiele rozwiązań, należy zwrócić true nie ustawiając żadnego z pól.

• Jeśli nie istnieje żadne rozwiązanie należy zwrócić false.

2

Zadanie 2

Celem tego zadania jest napisanie prostego Translatora.
W pliku kot.txt dostępnym na eportalu znajduje się tekst napisany w języku polskim. Zadanie polega na napisaniu
programu korzystającego ze słownika w postaci java.util.Hashmap, którego zadaniem jest przetłumaczyć ten tekst na
język angielski. Algorytm tłumacza jest niezwykle prosty, iteruje on po wszystkich słowach z zadanego tekstu i jeśli
ma dane słowo w słowniku, do wyniku dodaje wartość ze słownika, jeśli zaś nie ma, do wyniku dodaj oryginalne słowo.
Program powinien wypisać tłumaczenie na ekran.

Przykład

Dla następującego zbioru danych:

Ala ma kota w głowie.

program powinien zwrócić (wypisać na ekranie) Ala has a cat in head.

Politechnika Wrocławska

Mateusz Lis

Strona 1 z 4

background image

Laboratorium Podstaw Programowania

Laboratorium Poprawkowe

Wskazówka

Zwróć uwagę, iż słownik oraz wczytywanie danych z pliku są już zaimplementowane. Twoim zadaniem jest napisać tylko
algorytm tłumacza.
Skorzystaj z funkcji String.split(), która dzieli dany łańcuch znaków na podłańcuchy wykorzystując zadany znak.
Zwraca ona tablicę łańcuchów znaków.

Listing 1: Szablon rozwiązania zadania 2

import

j a v a

.

u t i l

.

HashMap

;

import

j a v a

.

u t i l

.

L i s t

;

import

j a v a

.

u t i l

.

A r r a y L i s t

;

import

j a v a

.

i o

.

B u f f e r e d R e a d e r

;

import

j a v a

.

i o

.

F i l e R e a d e r

;

import

j a v a

.

i o

.

I O E x c e p t i o n

;

public c l a s s

T r a n s l a t o r

{

public s t a t i c void

main

(

S t r i n g

[ ]

a r g s

)

{

// d e k l a r a c j a

s l o w n i k a

i

w y p e l n i e n i e s l o w a m i

HashMap

<

S t r i n g

,

S t r i n g

>

s l o w n i k

=

new

HashMap

<

S t r i n g

,

S t r i n g

>() ;

s l o w n i k

.

put

(

" kot "

,

" a cat "

) ;

s l o w n i k

.

put

(

" k o t a "

,

" a cat "

) ;

s l o w n i k

.

put

(

" ma "

,

" has "

) ;

s l o w n i k

.

put

(

" w "

,

" in "

) ;

s l o w n i k

.

put

(

" g

o w a "

,

" h e a d "

) ;

s l o w n i k

.

put

(

" g o w i e "

,

" h e a d "

) ;

// k o n i e c

s l o w n i k a

A r r a y L i s t

<

S t r i n g

>

s l o w a

=

new

A r r a y L i s t

<

S t r i n g

>() ;

// T u t a j n a l e z y p r z e c h o w a c s l o w a z p l i k u

try

{

B u f f e r e d R e a d e r

w e j s c i e

=

new

B u f f e r e d R e a d e r

(

new

F i l e R e a d e r

(

" kot . txt "

) ) ;

S t r i n g

l i n i a

;

// dana

l i n i a

z p l i k u

while

( (

l i n i a

=

w e j s c i e

.

r e a d L i n e

( ) ) !=

n u l l

)

{

// T u t a j n a p i s z kod ,

k t o r y p o z w o l i w c z y t a c w s z y s t k i e s l o w a z

//

l i n i i

}

}

catch

(

I O E x c e p t i o n e

)

{

e

.

p r i n t S t a c k T r a c e

( ) ;

}

// N a p i s z kod t l u m a c z a c y

t e k s t

w e j s c i o w y

}

}

Zadanie 3

Celem tego zadania jest implementacja programu obsługi kont bankowych.
Na listingu na końcu tego zadania znajduje się implementacja klasy konto. Konto umożliwia następujące operacje:

• wpłacanie pieniędzy,

• wypłacanie pieniędzy,

• udostępnianie stanu konta,

• udostępnianie numeru konta.

Napisz dwie klasy dziedziczące po klasie Konto:

Politechnika Wrocławska

Mateusz Lis

Strona 2 z 4

background image

Laboratorium Podstaw Programowania

Laboratorium Poprawkowe

Klasa KontoOszczedzaj

Klasa KontoOszczedzaj powinna dziedziczyć po klasie abstrakcyjnej Konto. Dodatkowe funkcjonalności klasy:

• konto oszczędnościowe ma oprocentowanie, które powinno zostać przyjęte jako argument konstruktora,

• metoda aktualizuj dla konta oszczędnościowego kapitalizuje odsetki do konta, doliczając oprocentowanie do aktual-

nego stanu (możesz pominąć podatek „Belki”). Doliczanie odsetek powinno odbywać się wg następującego wzoru:

S

n+1

= S

n

+ S

n

· k

(2)

gdzie:

S

n+1

to nowy stan konta,

S

n

to poprzedni stan konta,

k to wartość oprocentowania (k ∈ [0, 1]).

Klasa ROR

Klasa ROR (rachunek rozliczeniowo-oszczędnościowy). Powinien dziedziczyć po klasie Konto. Dodatkowe funkcjonalności:

• ROR powinien mieć pole minimalnyStan (wartość określana w konstruktorze, po przekroczeniu którego, klient otrzy-

muje informację zwrotną,

• metoda aktualizuj klasy ROR powinna wyświetlać na ekranie powiadomienie, jeśli przekroczony został minimalny

stan.

Klasa Bank

Ostatnim krokiem realizacji zadania jest implementacja klasy Bank. Klasa powinna zawierać listę Kont. Napisz dwie
metody:

• zalozKonto() przyjmującą obiekt klasy konto i dodającą dane konto do banku.

• aktualizujKonta(), która dla każdego z dostępnych kont wywoła metodę aktualizuj() oraz wypisze stan każdego

z kont.

Na końcu w metodzie main() stwórz obiekt klasy Bank oraz dodaj kilka kont danego rodzaju (na konta powinny zostać
wpłacone i wypłacone jakieś kwoty). Wywołaj metodę aktualizujKonta().

Listing 2: Klasa Konto

public abstract c l a s s

Konto

{

protected double

s t a n

;

// Aktualny s t a n k o n t a

private i n t

numerKonta

;

// zmienna prywatna !

public

Konto

(

i n t

numerKonta

)

{

s t a n

= 0 . 0 ;

t h i s

.

numerKonta

=

numerKonta

;

}

public void

wp l ac

(

double

kwota

)

{

i f

(

kwota

> 0 )

s t a n

+=

kwota

;

e l s e

System

.

o u t

.

p r i n t l n

(

" Nie m o z n a w p l a c i c t a k i e j k w o t y "

) ;

}

public void

wyplac

(

double

kwota

)

{

i f

(

kwota

> 0 )

s t a n

−=

kwota

;

// s t a n moze byc ujemny !

e l s e

Politechnika Wrocławska

Mateusz Lis

Strona 3 z 4

background image

Laboratorium Podstaw Programowania

Laboratorium Poprawkowe

System

.

o u t

.

p r i n t l n

(

" Nie m o z n a w y p l a c i c t a k i e j k w o t y "

) ;

}

public double

d a j S t a n

( )

{

return

s t a n

;

}

public double

dajNumerKonta

( )

{

return

numerKonta

;

}

public abstract void

a k t u a l i z u j

( ) ;

}

Politechnika Wrocławska

Mateusz Lis

Strona 4 z 4


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron