ĆWICZENIE
ĆWICZENIE
3.45
program cw3_45;
{ Program znajduje największe wspólne dzielniki podawanych }
{ liczb tak długo, jak użytkownik bedzie chciał. },
{ Katalog r3_09 : 3_45.pas }
var
A, B, Pom : Integer;
Znak : Char;
begin repeat Writeln;
Write ('Podaj A: ’); Readln (A);
Write ('Podaj B: '); Readln (B);
Write ('NWD (', A, ', ', B,
while (A«B) do
begin
if A<B then begin
Pom A; A B; B Pom; end;
A A - B; end;
Writeln (A);
Write (Czy chcesz liczyc dalej (T/N) '); Readln (Znak); until (Upcase (Znak) - 'N'); end.
Udało nam się zrobić zagnieżdżone dwie pętle. Nowa — zewnętrzna (repeat) jest odpowiedzialna za kolejne obliczenia (aż użytkownik się zniechęci). Wewnętrzna (while) to zapis algorytmu obliczającego NWD dla pojedynczych danych. Zauważ, że posłużyliśmy się znowu funkcją Upcase, aby zamienić wpisaną literę na dużą i wynik porównać z N. Pozwoli nam to na wyśledzenie wpisania zarówno małego, jak i dużego „n”.
Program będzie wykonywał kolejne obliczenia nie wtedy, gdy użytkownik wpisze „t” lub „T”, lecz dopóki nie wpisze „n” lub „N”. Pomyśl, jak przerobić program, aby reagował pozytywnie tylko na literę T. A może przy czytaniu litery dodasz sprawdzenie, czy jest poprawna (t lub n), a jak nie, poprosisz o ponowne wpisanie?
ĆWICZENIE
3.46
Pamiętasz schemat Homera, który rozważaliśmy w ćwiczeniu 1.14? Wykorzystamy go do napisania tego programu. Jak widać, wystarczy czytać kolejne współczynniki wielomianu i wykonywać prostą operację w pętli, aż nastąpi koniec wprowadzanych danych. Musimy się jeszcze umówić, po czym poznamy ów koniec. Umówmy się, że będzie to liczba 10e8 (kłopot nastąpi, gdy będziemy chcieli wykorzystać ją jako jeden ze współ-