1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy...

23
1. Przed wykonaniem instrukcji zmienna x typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu refrenu. j:=7; suma:=0; while j<>0 do begin suma:= suma + x mod 10; x:= x div 10; j:= j div10 end; 2. Napisać w Pascalu instrukcję podstawienia nadającą zmiennej boolowskiej OK wartość FALSE, gdy wartość zmiennej całkowitej P jest nieparzysta, a równocześnie - albo P jest ujemne - albo P zawiera się w zakresie 22..55 - albo P jest większe od 200 zaś TRUE dla pozostałych wartości P. 3. Napisać w Pascalu instrukcję, w wyniku wykonania której w przypadku, gdy zmienna całkowita K jest dodatnia, wówczas – ale tylko w przypadku, gdy zmienna boolowska BB ma wartość FALSE – zmienna całkowita S zwiększa swą wartość czterokrotnie, natomiast, gdy K dodatnia nie jest, zmienna S zmniejsza swą wartość o cyfrę jedności. 4. Zapisz w języku Pascal instrukcję wyznaczania wartości niżej zdefiniowanej funkcji f(x) dla zadanego argumentu x, wynik ulokuj w zmiennej WartFun. cos 2 x + 1 x < -/2 f(x) = sin x -/2 x /2 cos x x > /2 5. Zakładamy, że zdefiniowany został typ wyliczeniowy: _KatZnaku=(smg, spg, cyfra, inny) 1

Transcript of 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy...

Page 1: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

1. Przed wykonaniem instrukcji zmienna x typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu refrenu.

j:=7; suma:=0; while j<>0 do begin suma:= suma + x mod 10; x:= x div 10; j:= j div10 end;

2. Napisać w Pascalu instrukcję podstawienia nadającą zmiennej boolowskiej OK wartość FALSE, gdy wartość zmiennej całkowitej P jest nieparzysta, a równocześnie - albo P jest ujemne- albo P zawiera się w zakresie 22..55- albo P jest większe od 200zaś TRUE dla pozostałych wartości P.

3. Napisać w Pascalu instrukcję, w wyniku wykonania której w przypadku, gdy zmienna całkowita K jest dodatnia, wówczas – ale tylko w przypadku, gdy zmienna boolowska BB ma wartość FALSE – zmienna całkowita S zwiększa swą wartość czterokrotnie, natomiast, gdy K dodatnia nie jest, zmienna S zmniejsza swą wartość o cyfrę jedności.

4. Zapisz w języku Pascal instrukcję wyznaczania wartości niżej zdefiniowanej funkcji f(x) dla zadanego argumentu x, wynik ulokuj w zmiennej WartFun.

cos2 x + 1 x < -/2f(x) = sin x -/2 x /2

cos x x > /2

5. Zakładamy, że zdefiniowany został typ wyliczeniowy: _KatZnaku=(smg, spg, cyfra, inny) do odnotowania informacji przydzielającej znak do jednej z czterech kategorii (samogłoska, spółgłoska, cyfra, znak różny od cyfry i litery) oraz funkcja o nagłówku:

FUNCTION Kategoria ({we} znak: char):_KatZnaku;{funkcja przekazuje do punktu wywołania kategorię znaku otrzymanego w parametrze znak}Napisać sekwencję instrukcji nakazującą: wczytanie znaku pod zmienną ZnakBiez typu char, zakwalifikowanie go do jednej z czterech wymienionych kategorii (funkcja Kategoria) i na podstawie wyniku funkcji wyświetlenie jednego z napisów:- wczytany znak jest samogloska- wczytany znak jest spolgloska- wczytany znak jest cyfra- wczytany znak nie jest ani litera ani cyfra.

1

Page 2: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

6. W ciągu danego semestru ucznia obowiązuje K godzin lekcyjnych. Dyrekcja szkoły ustaliła p procentową barierę klasyfikacyjną i liczbową barierę LNU na nieobecności nieusprawiedliwione. Uczeń jest klasyfikowany, jeżeli łączna liczba nieobecności /usprawiedliwionych i nieusprawiedliwionych(w tym godziny karne za spóźnienia)/ nie przekracza p procent ogólnej liczby godzin w semestrze i liczba godzin nieusprawiedliwionych jest mniejsza od LNU.UWAGA: 3 spóźnienia są traktowane jako 1 godzina nieobecności nieusprawiedliwionej, gdy liczba spóźnień nie jest podzielna przez 3 zaokrągla się na korzyść ucznia.Napisać w języku Pascal procedurę o identyfikatorze OcenUcznia, która otrzymując w parametrach wejściowych: K /liczbę godzin w semestrze/, p /procentową barierę klasyfikacyjną/, LNU / liczbową barierę na nieobecności nieusprawiedliwione/, LnbUspr - liczbę godzin nieobecności usprawiedliwionych, LnbNUsor - liczbę faktycznych godzin nieobecności nieusprawiedliwionych, LSp - liczbę spóźnień przekazuje w parametrach wynikowych SumNb - sumaryczną liczbę nieobecności, NbNUspr - liczbę nieobecności nieusprawiedliwionych z uwzględnieniem godzin karnych za spóźnienia, Klasyfikowany - wartość TRUE jeśli uczeń będzie klasyfikowany, w przeciwnym razie FALSE.Zakładamy ponadto, że jest już gotowa procedura:PROCEDURE Pozyskaj kryteria (VAR K, LNU:Word; VAR p:Real);Pozyskuje w trybie konwersacyjnym liczbę godzin w semestrze, barierę na nieobecności nieusprawiedliwione.

7. Zakładamy, że zostały zdefiniowane typy: _punkty= record

x: double; y:double end; {(x, y) – współrzędne punktu}

_prostokaty= record LDolny: _punkty; PGorny: _punkty

end; {lewy dolny i prawy górny wierzchołek prostokąta o bokach równoległych do osi układy współrzędnych

Zakładamy ponadto, że mamy gotową procedurę o nagłówku:procedure PozyskajPunkt (A: _punkty);

która w trybie konwersacyjnym pozyskuje informację o położeniu punktu.

Napisać procedurę o nagłówku:procedure PozyskajProstokat (prost : _prostokaty);

która w trybie konwersacyjnym pobierze od użytkownika informację o położeniu prostokąta (lewy dolny i prawy górny wierzchołek) o bokach równoległych do osi układu współrzędnych. Zastosować pętlę zaporową uniemożliwiającą zaakceptowanie błędnych danych. Uwaga: Do pozyskiwania informacji o jednym punkcie wykorzystać procedurę PozyskajPunkt. Kontrolować i poprawiać parę punktów (pełną informację o prostokącie).

2

Page 3: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

8. Zakładamy, że zostały zdefiniowane typy: _punkty= record

x: double; y:double end; {(x, y) – współrzędne punktu}

_trojkaty= recordWA, WB, WC: _punkty; { wierzchołki trójkąta}

end; Napisać procedurę o nagłówku:

procedure ObliczPoleObw(VAR Tr : _trojkaty; VAR pole, obw:double);

która otrzymując w parametrze Tr informacje o położeniu trójkąta wyznaczy i przekaże w parametrach wynikowych pole i obw pole i obwód tego trójkąta. {zakładamy poprawność danych wejściowych}

9. Zakładamy, że zdefiniowane zostały trzy procedury:

Procedure PozyskajTrojkat ({wy}var x1, y1, x2, y2, x3, y3:double; var poprawne: boolean);

{Procedura pozyskuje w trybie konwersacyjnym współrzędne trzech wierzchołków trójkąta (x1, y1), (x2, y2), (x3, y3) i przekazuje w parametrze poprawne wartość true jeśli wprowadzone dane są poprawne (istnieje trójkąt o podanych wierzchołkach) , w przeciwnym razie false} .

Procedure ZbadajCzyWewnetrzny ({we} x1, y1, x2, y2, x3, y3, x y: double; var PktWewn: boolean);

{Procedura otrzymując w parametrach współrzędne trzech wierzchołków trójkąta (x1, y1), (x2, y2), (x3, y3) i badany punkt (x, y) przekazuje w parametrze PktWewn wartość true jeśli punkt leży wewnątrz trójkąta, w przeciwnym razie false}.

Procedure WyznaczPoleTrojkata ({wy} x1, y1, x2, y2, x3, y3: double; var pole: double);

{Procedura otrzymując w parametrach współrzędne trzech wierzchołków trójkąta (x1, y1), (x2, y2), (x3, y3) oblicza i przekazuje w parametrze pole wartość pola podanego trójkąta} .

Napisać w języku Pascal program (wykorzystując wyżej wymienione procedury), który wczytuje współrzędne trzech punktów, a następnie w przypadku, gdy nie mogą być wierzchołkami trójkąta sygnalizuje ten fakt odpowiednim komunikatem i kończy działanie. Przy danych poprawnych pozyskuje współrzędne badanego punktu, bada czy jest on punktem wewnętrznym, jeśli nie wysyła odpowiedni komunikat i kończy działanie, w przypadku punktu wewnętrznego oblicza i wyświetla pola trzech trójkątów na które podzielą zadany trójkąt odcinki łączące badany punkt z wierzchołkami trójkąta. Uwaga: Wyniki liczbowe wyświetlić w postaci normalnej z dwiema cyframi po kropce i poprzedzić tekstami objaśniającymi. Do przechowywania wartości współrzędnych zadeklarować zmienne Ax, Ay, Bx, By, Cx, Cy, Px, Py, PoleAPB, PoleBPC, PoleAPC oraz w razie potrzeby dodatkowe, którym identyfikatory dobrać samodzielnie.

3

Page 4: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

10. Zakładamy, że wcześniej została już opracowana procedura o nagłówku:RROCEDURE WyznaczObjPolePow

(pr, kat: Double; VAR PowB, PowC, Obj:Double);która dla zadanych w parametrach pr, kat (dane opisują stożek) wartości promienia podstawy i kąta między tworzącą a podstawą (kąt w mierze łukowej) przekazuje w parametrach wynikowych PowB, PowC, Obj wartości pola powierzchni bocznej, całkowitej i objętość badanego stożka.Opisać funkcję logiczną o nagłówku:

FUNCTION Stozek (VAR pr, kat: Double) :Boolean;która w trybie konwersacyjnym pobierze z klawiatury długość promienia podstawy i miarę kąta między tworzącą z podstawą stożka (w radianach) i przekaże do punktu wywołania wartość TRUE w przypadku danych poprawnych i FALSE w przeciwnym razie.Zakładamy, że w programie zadeklarowano zmienne o identyfikatorach: R, alfa, Pc,Pb,V do przechowywania informacji dotyczących stożka (promienia, kąta, pola powierzchni całkowitej, pola powierzchni bocznej, objętości). Napisać polecenia (wykorzystując wyżej wymienioną procedurę i funkcję) nakazujące pozyskanie informacji o stożku i wyświetlenie alternatywnie komunikatu o niemożliwości wykonania obliczeń, bądź wyznaczenie pól powierzchni i objętości i wyświetlenie wyników w postaci:Powierzchnia boczna = +9.99E±999------Powierzcnia calkowita = = +9.99E±999----------------------------Objetosc = = +9.9999E±999.

11. Podać wynik działania sekwencji poleceń (wartość zmiennej nap):nap:=’ Kowalski Artur / I rok informatyki’;poz:=pos (‘/’, nap);nap:= trim(copy(nap,1, poz-1)) + ‘ (‘ +

trimleft (copy(nap, poz+1,100)) + ‘)’;

12. Podać wynik działania sekwencji instrukcji:nap := ‘[34451]Zborowski *Jan’;poz1 := pos(‘[‘,nap);poz2 := pos(‘*’,nap);writeLn (copy(nap,poz1+1,poz2-poz1-1) + ‘ ‘ +

copy(nap,poz2+1,11) + ‘ – ‘, copy(nap,2,poz2-2));

13. Zakładamy, że zostały zdefiniowane typy: _pracownicy = rekord

pesel: string[11];nazw,imie: string[20];StKierown:Boolean;

end;Napisać procedurę o nagłówku:procedure Rozpakuj (var nap:AnsiString;

var prac:_pracownicy);która otrzymując w parametrze nap napis postaci (zakładamy poprawność napisu):

pesel/ nazwisko imię /stanowisko(stanowisko kodowane znakowo - mała lub duża litera t lub n, zapisana bezpośrednio po znaku „/”, przed nazwiskiem, po nazwisku i po imieniu może wystąpić dowolna liczba znaków spacji), rozpakuje go i przekaże poszczególne informacje w parametrze prac.Przykładowa wartość parametru nap: 60060934568/ Kowalski Adam /t

4

Page 5: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

14. Opisać procedurę, która otrzymując w parametrze Nap typu String informację o studencie postaci:

99999999/ nazwisko imię /wysokość stypendium rozpakowuje napis i przekaże te informacje w parametrze RecStud typu rekordowego (4 pola: nazwisko, imię, numer indeksu, wysokość stypendium – typ zdefiniować samodzielnie).Uwaga: Pierwsza informacja jest numerem indeksu, przed i po nazwisku oraz po imieniu może wystąpić dowolna liczba spacji

15. Zakładamy, że zostały zdefiniowane następujące typy:_CenyTow=RECORD

IdTow: String[6]; {identyfikator napisowy towaru}Cena:Double;Podatek:Byte {podatek procentowy}

END;_PozycjeNaFakturze=RECORD

IdTow: String[6]; {identyfikator napisowy towaru}IloscTow: Byte; {ilość zakupionego towaru}Cena:Double;Wartosc: Double; {wartosc towaru bez podatku}Podatek: Double; {wartość podatku za towar}DoZaplaty: Double

{wartość towaru bez podatku + podatek} END;

Zakładamy ponadto, że w zmiennej towar typu _CenyTow zapisana jest informacja o zakupionym towarze, w zmiennej IleZakup ilość zakupionego towaru. Napisać sekwencję rozkazów, które na tej podstawie wypełnią pola w zmiennej PozFaktury typu _PozycjeNaFakturze.

16. Niech będą zdefiniowane stałe i typy:const

MaxDl = 100;type

_ind = 1..MaxDl;_WyrCg = array [_ind] of double;

Ciągi liczbowe postaci reprezentowane są jako para (LiczEl, WykazEl), gdzie LiczEl jest typu _ind i oznacza ilość wyrazów w ciągu (wypełnienie tablicy WykazEl), natomiast WykazEl jest typu _WyrCg i przechowuje kolejne wyrazy ciągu.

Napisać procedurę o nagłówku:Procedure WyznaczCiag ({we} dl : _Ind; var a,b : _WyrCg;

{wy} var c : _WyrCg);która mając dwa zadane ciągi i o długości dl, wyznacza ciąg

zdefiniowany w następujący sposób: .

17. Wektor w przestrzeni n-wymiarowej reprezentowany jest w parze (wymiar przestrzeni, tablica współrzędnych).

5

Page 6: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

a) Napisać funkcję, która otrzymując w parametrach: wymiar przestrzeni oraz w dwóch parametrach typu tablicowego współrzędne dwóch wektorów przekaże do punktu wywołania ich iloczyn skalarny, Uwaga: Typy do reprezentacji wektorów zdefiniować samodzielnie.

b) Napisać procedurę, która otrzymując w parametrach: wymiar przestrzeni, w dwóch parametrach typu tablicowego współrzędne dwóch wektorów oraz w dwóch parametrach typu rzeczywistego współczynniki kombinacji liniowej, wyznaczy i przekaże w parametrze typu tablicowego współrzędne kombinacji liniowej podanych wektorów..Uwaga: Skorzystać z typów zdefiniowanych w poprzednim podpunkcie.

18. Załóżmy, że w programie zostały zadeklarowane globalnie: stała MaxDlCg (maksymalna liczba elementów ciągu) oraz następujące typy do reprezentowania skończonego ciągu liczb całkowitych:Type

_Ind = 1..MaxDlCg;_El = Integer;_Wyr = array [_Ind] of _El;_Zakres = 0.. MaxDlCg;_Ciag = record

DlgCg : _Zakres;Wyrazy : _Wyr;

end;Zaprojektować w postaci procedur / funkcji:a) pobieranie z klawiatury w sposób dialogowy liczby wyrazów ciągu (liczba z zakresu 0

– MaxDlCg) oraz wyrazów ciągu;b) wyświetlanie elementów ciągu;c) wyznaczenie średniej arytmetycznej wyrazów ciągu;d) wyszukanie najmniejszego wyrazu ciągu oraz liczby jego wystąpień;e) wyznaczenie liczby wyrazów większych od zadanej wartości całkowitej p;f) wyznaczenie liczby ujemnych wyrazów ciągu oraz numeru pierwszego ujemnego

wyrazu ciągu;g) wyznaczenie maksymalnej liczby n pierwszych wyrazów, których suma nie

przekracza zadanej liczby S;h) operację wyznaczania wyrazów ciągu ci, na podstawie otrzymanych informacji

o dwóch ciągach ai i bi, wg wzoru:;

i) napisać funkcję IleRoznych, która otrzymując w parametrze informację o ciągu liczb całkowitych, zmodyfikuje otrzymany ciąg i do punktu wywołania przekaże informację, ile jest różnych wyrazów w ciągu wynikowym.

j) Modyfikacja polega na przeglądzie ciągu od wyrazu pierwszego do ostatniego i zastępowaniu kolejnych wyrazów przez największy z dotychczas przebadanych.Przykład:

ciąg wejściowy: 6 4 3 5 7 3 5 6 9 1 2 3 5 8 ciąg wyjściowy: 6 6 6 6 7 7 7 7 9 9 9 9 9 9.

19. Zasoby magazynu odnotowane są w zmiennej rekordowej, gdzie jedno z pól zawiera liczbę asortymentów znajdujących się w magazynie, a w drugim /typu tablicowego/

6

Page 7: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

gromadzone są informacje o poszczególnych towarach. Każdy element tablicy dotyczy jednego towaru.a) Opisać procedurę, która pobiera w trybie konwersacyjnym informacje o stanie

magazynu i lokuje w parametrze typu rekordowegob) Funkcję logiczną, która bada czy towar o podanym identyfikatorze znajduje się

w magazynie. c) Funkcję wyznaczającą wartość towaru w magazynied) Procedurę, która otrzymując od operatora zamówienie na towary od klienta

modyfikuje stan magazynu / tylko te pozycje, których ilość była wystarczająca/ i przekazuje w parametrze /typ zdefiniować samodzielnie/ informację o tych asortymentach, których nie było w magazynie bądź ilość była nie wystarczająca /z informacją o brakującej ilości/.

Napisać program ramowy testujący poprawność działania wyżej opisanych procedur i funkcji /wczytać informacje o stanie w magazynie, wczytać pozycje z zamówienia aktualizując stan magazynu, wyświetlić wartość towaru w magazynie przed realizacją zamówienia i po realizacji, wyświetlić informacje o pozycjach niemożliwych do zrealizowania/.

20. Obserwowano pewne zjawisko. Wykonano określoną ilość doświadczeń. Opisać procedury obsługi uzyskanych wyników.Zakładamy, że w programie zdefiniowano następujące stałe i typy:

CONST Maxll = ..;

TYPE_Ind = l..MaxIl;_Il = O..MaxIl;_Nap = string[50];_Pomiary = array[_Ind] of real;_Wykaz = RECORD

tytul:_Nap;il:_Il;pomiary:_Pomiary;srednia:real

END;a) Opisać procedurę, która w trybie konwersacyjnym pobiera od użytkownika wyniki

pomiarów: nazwę identyfikującą pomiary, ilość doświadczeń, wyniki kolejnych pomiarów i lokuje w zmiennej typu _Wykaz.

b) Opisać procedurę, która wyznacza średnią pomiarów i uzupełnia pole średnia w parametrze typu _Wykaz.

c) Opisać funkcję, która wyznacza liczbę pomiarów większych od średniej .d) Opisać funkcję logiczną, która wyznacza liczbę pomiarów mieszczących się

w zadanym /w parametrach/ przedziale oraz ich średnią.e) Opisać procedurę, która wyszukuje pomiary mniejsze od średniej i przekazuje

w parametrze typu _WykNr=array[_Ind] of _Ind, a ich liczbę w parametrze typu _Il.Napisać program ramowy testujący poprawność działania wyżej opisanych procedur i funkcji.

21. Niech będą zdefiniowane typy:CONST

7

Page 8: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

MaxIlZad = 15; {maksymalna liczba zadań}TYPE

_Nap25 = String[25];_Ind = l..MaxIlZad;_Ilosc = 0.. MaxIlZad;_Punkty = Array[_Ind] of Byte;_Uczestnik = Record

Imię,Nazwisko:_Nap25;Punkty:_Punkty;{Punktacja za poszczególne zadania}SumaPkt:Word;IleRozw:_Ile;MaxPkt:Byte

End; {Wyniki jednego uczestnika}

Napisać procedurę, która - otrzymując w parametrach Ilość typu Byte /ilość zadań do rozwiązania/, Uczestnik typu _Uczestnik informację o jednym uczestniku konkursu zadaniowego /wypełnione tylko pola Imię, Nazwisko, Punkty/ nadaje wartości trzem kolejnym polom - wyznacza sumę punktów, ilość zadań z punktacją różną od zera, maksymalną punktację jaką uzyskał za jedno zadanie.

22. W pliku tekstowym zapisane są informacje o urodzinach i imieninach przyjaciół. Każdy wiersz zawiera informację tekstową o typie (rodzaju) uroczystości oraz dzień i miesiąc uroczystości (oddzielone ustalonymi separatorami).

Przykładowy plikDymna Beata – imieniny/ 23:2Szewczyk Sebastian - urodziny /14:11Ciocia Danusia - imieniny /7:3 Mama - urodziny /30:3..........................................................................

Napisać procedurę o nagłówku:PROCEDURE PiszWykazZMiesiaca (VAR PlWe, PlWy: TextFile;

Mies:_Mc);{_Mc - typ okrojony 1..12}która będzie czytać z pliku PlWe dane o uroczystościach i w pliku PlWy tworzyć listę (ponumerowaną) uroczystości wypadających w miesiącu zadanym w parametrze Mies. W każdym wierszu ma być zapisana informacja o uroczystości oraz w nawiasach okrągłych numer dnia w miesiącu.Przykładowy plik wynikowy po wykonaniu instrukcji proceduralnej : PiszWykazZMiesiaca (PlWe, PlWy,3):

MIESIAC : 31. Ciocia Danusia – imieniny (7)2. Mama – urodziny (30)

23. W dużej sieci energetycznej znajduje się pewna liczba źródeł energii elektrycznej. Przedsiębiorstwo zarządzające bada obciążenie poszczególnych źródeł. Odbywa się to

8

Page 9: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

metodą monitorowania wybranych losowo źródeł. Wyniki monitorowania zapisywane są w pliku tekstowym. Jeden zestaw danych o źródle zapisany jest w dwóch wierszach:- w pierwszym identyfikator liczbowy źródła i jego nazwa (oddzielone od siebie

znakiem ‘/’);- w drugim wyniki pomiarów dla tego źródła (ciąg liczb rzeczywistych nieujemnych).Napisać procedurę o nagłówku:

Procedure CzytajAnalizujWynMonitPisz (var Plan, PlWyn : TextFile);

która czyta z pliku z danymi wyniki monitorowania i na bieżąco w pliku wynikowym tworzy zestawienie dla poszczególnych źródeł. Każdy wiersz pliku wynikowego ma postać:

nazwa źródła [liczba pomiarów / średnia pomiarów]Uwaga: obsługę jednego źródła zrealizować w postaci procedury roboczej o nagłówku:

Procedure CzytajAnalizujJednoZrodlo ({we} var PlDane : TextFile; {wy} var nazwa : AnsiString;

var IlePom : Byte; var srednia: double);

24. Firma „Udane Wakacje” udziela jednorazowych, krótkoterminowych pożyczek. Zdefiniować stałą i typy niezbędne do zarejestrowania zawartych transakcji:- stała MaxIl ograniczająca liczbę transakcji;- typ rekordowy _pozyczki do zarejestrowania informacji o jednej pożyczce, kolejne

pola zawierają: pesel, nazwisko i imię klienta, adres zamieszkania, kwotę pożyczki, termin zwrotu oraz informację logiczną o zwrocie pożyczki przez klienta;

- typ tablicowy _TabTrans o elementach typu _pozyczki do odnotowania wykazu udzielonych pożyczek;

- typ rekordowy _RejFirmy do odnotowania informacji o działalności firmy, kolejne pola zawierają: informację tekstową zawierającą dane o firmie, liczbę udzielonych pożyczek, tablicę zawierającą wykaz pożyczek.

Napisać procedurę o nagłówku: procedure PiszUpomnienia (var Rejestr: _RejFirmy;

var PlWyn: TextFile);która zapisuje do pliku już przygotowanego do zapisu wykaz klientów, którym należy wysłać upomnienie /nie zwrócili pożyczki, minął termin zwrotu/. Każdy wiersza postać:1. Kowalski Adam /Lublin ul. Złota 3 (2000zł – 03:06:2005r.)Wykaz w pliku poprzedzić jednowierszowym tekstem objaśniającym zawierającym między innymi aktualną datę.Wykorzystać funkcję i procedurę z pakietu SysUtils:function Date: TDateTime;

zwraca do punktu wywołania aktualną datęprocedure DecodeDate(Date: TDateTime;

var Year, Month, Day: Word);rozpakowuje datę i przekazuje w 3 parametrach dzień, miesiąc i rok

9

Page 10: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

25. Student, aby uzyskać zaliczenie z zajęć laboratoryjnych winien zgromadzić określoną przez prowadzącego liczbę punktów. Punktowane są 3 kolokwia i indywidualny program zaliczeniowy. Zakładamy, że zdefiniowane są następujące stałe i typy:const MaxIl=300;{maksymalna liczba studentów}type _Studenci= rekord

{do odnotowania informacji o jednym studencie} Nr: byte; {numer na liście}

nazw, im: string[20];PktKol1, PktKol2, PktKol3, PktProgr: ShortInt;end;

{Nieobecność na kolokwium lub nie wykonanie indywidualnego programu kodowane jest liczbą : -1}

Napisać funkcję o nagłówku:function WarunekKonieczny (var stud:_Studenci;

var SumPkt: cardinal):boolean;która analizuje wyniki studenta i przekazuje do punktu wywołania wartość true jeśli student był obecny na trzech kolokwiach, i rozliczył się z zadania indywidualnego i wówczas dodatkowo w parametrze SumPkt liczbę zdobytych punktów, w przeciwnym razie wartość false.

Zadeklarowane są też następujące typy:_Ind=1..MaxIl;_LStud=0..MaxIl;_TabStud= array [_Ind] of _Studenci;

{do odnotowania wykazu studentów}_CwLab= record Info: AnsiString; LiczStud:_LStud; {liczba studentów} Stud:_TabStud {wykaz studentów} end;

Napisać procedurę o nagłówku:procedure PiszListeZal

(var CwLab: _CwLab; ProgPkt: Cardinal; var Ilu: _LStud; var PlWy: TextFile);

która analizuje dane przygotowane w parametrze CwLab i zapisuje do pliku tekstowego (plik PlWy już jest przygotowany do zapisu) listę (ponumerowaną) studentów, którzy spełnili kryterium zaliczenia (uczestnictwo na trzech kolokwiach, rozliczenie się z zadania indywidualnego oraz uzyskana suma punktów większa od ProgPkt), natomiast w parametrze Ilu liczbę studentów, którzy nie uzyskali zaliczenia. Listę studentów w pliku poprzedzić tytułem zapisanym w pierwszym polu rekordu. Przykładowy plik wynikowy:Uwaga: Przed nazwiskiem w nawiasie zapisany ma być numer studenta na liście.

Algorytmizacja i programowanie 2005/20061. (2) Zapała Andrzej - 120 pkt..............................................15. (18) Szewczyk Sebastian - 140 pkt.........................................

10

Page 11: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

26. Absolwenci gimnazjów złożyli podania do szkół średnich. O przyjęciu decydować będzie suma punktów jaką uzyskali za test matematyczno - przyrodniczy, humanistyczny, za świadectwo, za uczestnictwo w konkursach i olimpiadach. Każda szkoła ustala próg punktowy decydujący o przyjęciach. Zakładamy, że zdefiniowane są następujące stałe i typy:const MaxIl=300;{maksymalna liczba kandydatów}type_Kandydaci= rekord

{do odnotowania informacji o jednym kandydacie}pesel: string[11];

nazw, im: string[20];PktMatPrzyr, PktHum, PktSw, PktKonkOlimp: byte;

end;_Ind=1..MaxIl;_LKand=0..MaxIl;_TabKand= array [_Ind] of _Kandydaci;

{do odnotowania wykazu kandydatów}_Rekrutacja= record

Info: AnsiString; LiczKand:_LKand; {liczba kandydatów} Kand:_TabKand {wykaz kandydatów} end;

Napisać procedurę o nagłówku:procedure PiszListePrzyjec (var Przyjecia: _Rekrutacja; ProgPkt: Cardinal; var Ilu: _Lkand; var PlWy: TextFile);

która analizuje dane przygotowane w parametrze Przyjecia i zapisuje do pliku tekstowego (plik już jest przygotowany do zapisu) listę (ponumerowaną) uczniów, którzy spełnili kryterium przyjęcia (suma punktów większa od ProgPkt), natomiast w parametrze Ilu liczbę kandydatów, którzy nie spełnili wymagań ustalonych przez szkołę. Listę uczniów w pliku poprzedzić tytułem zapisanym w pierwszym polu rekordu. Przykładowy plik wynikowy:

Rok szkolny 2006/20071. (90081145676 ) Zapała Andrzej - 120 pkt..............................................15. (90121365782) Szewczyk Sebastian - 140 pkt.........................................

11

Page 12: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

27. Zakładamy, że zostały już zdefiniowane typy do odnotowywania informacji o wydarzeniach historycznych.

CONSTMaxIl = 1000;

TYPE_Dz = 1..31;_Mc = 1..12;_Wyd = RECORD

dzien : _Dz;miesiac : _Mc;rok : Word;info : String[100];

END;_LWyd = 0..MaxIl;_Ind = 1..MaxIl;_TabWyd = ARRAY [ _Ind] OF _Wyd;_Wykaz = RECORD

LiczWyd : _Lwyd; //liczba zapisanych wydarzeńWykWyd : _TabWyd; //tablica z informacjami o wydarzeniach

END;Napisać procedurę o nagłówku:PROCEDURE TworzListe (McBad : _Mc; VAR ZbWyd : _Wykaz;

VAR PlWyn : TextFile);która wybierze z wykazu wydarzeń podanego w parametrze ZbWyd i zapisze do pliku wynikowego PlWyn (plik przygotowany do zapisu) informacje o tych wydarzeniach, których rocznica wypada w miesiącu zadanym w parametrze McBad. Wiersz pliku wynikowego ma mieć postać: informacja o uroczystości i w nawiasie data (dzień, miesiąc, rok oddzielone znakiem dwukropka). Wiersze w pliku mają być ponumerowane kolejnymi liczbami.Np.: gdy McBad = 7

1. Bitwa pod Grunwaldem (15:07:1410)...

12

Page 13: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

28. Ocena strony internetowej

Skrypt, znajdujący się na pewnej stronie internetowej, zapisuje do pliku oceny.txt wyniki ocen danej strony wystawione przez oglądające je osoby. Napisać program, który pobiera od użytkownika ścieżkę do pliku z danymi. Jeżeli plik nie istnieje użytkownik ma mieć możliwość 3krotnego podania pliku. Zakładamy, że dane w pliku są poprawnie przygotowane. Następnie program pobiera od użytkownika ścieżkę do pliku wynikowego. Na ekran należy wydać informację czy udało się poprawnie zapisać wyniki przetwarzania danych.

Budowa pliku z danymi:Pierwszy wiersz pliku zawiera adres ocenianej strony, a w każdym kolejnym wierszu pliku zapisane są 4 cyfry: DD MM RRRR ocena, zawierające odpowiednio dzień, miesiąc i rok wystawienia oceny oraz ocenę. Przykładowy plik:

www.onet.pl2 2 2006 5 28 2 2006 4 3 3 2006 33 3 2006 431 3 2006 5

Napisać proceduręprocedure AnalizujStrone (mies : _Mc;

var pl_oceny, pl_analiza : textFile);{_Mc – odpowiednio zdefiniowany typ okrojony}

która przeczyta plik pl_oceny i zapisze do pliku pl_analiza następujące informacje (w samodzielnie zaprojektowanej szacie graficznej – poprzedzone odpowiednimi komentarzami):- nazwę strony- średnią ocenę dla danej strony;- liczbę wszystkich wystawionych ocen;- średnią ocenę oraz liczbę wszystkich ocen wystawionych w miesiącu

mies dla danej strony.

29. Uczniowie przygotowujący się do finału konkursu matematycznego otrzymywali komplet zadań do rozwiązania. Wyniki zapisane zostały w pliku tekstowym. Plik składa się z pewnej ilości tak samo zbudowanych kompletów danych dotyczących poszczególnych uczniów. Każdy komplet składa się z wiersza zawierającego dane personalne uczestnika:

nazwisko i imię*klasa/numer w dziennikuoraz w ciągu liczb (zapisanych w jednym bądź kilku wierszach) zakończonych liczbą -1 /punkty za poszczególne rozwiązywane zadania; -1 sygnał kończący dane tego uczestnika/. Opisać procedurę, która otrzymując w parametrach Dane typu TextFile informację o źródle danych /zmienna plikowa już skojarzona z plikiem fizycznym zawierającym dane o uczniach - plik jest już przygotowany do odczytu/, czyta informacje o poszczególnych uczniach, na bieżąco zlicza dla każdego punkty i wyświetla je poprzedzając informacją tekstową zapisaną w pierwszym wierszu każdego kompletu.

13

Page 14: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

30. Biblioteka

Komputerowy program obsługi biblioteki wyniki swojej pracy zapisuje do pliku. Napisać program, który pobiera od użytkownika ścieżkę do pliku z danymi. Jeżeli plik nie istnieje użytkownik ma mieć możliwość 3krotnego podania pliku. Zakładamy, że dane w pliku są poprawnie przygotowane. Następnie program, w trybie konwersacyjnym, pyta użytkownika czy chce on stworzyć raport działalności biblioteki w miesiącu – wtedy też należy pobrać numer miesiąca (procedura Podsumuj) czy też chce utworzyć wykaz nowo zakupionych przez bibliotekę książek (procedura TworzWykazNowych). W każdym z tych przypadków należy pobrać od użytkownika ścieżkę do pliku wynikowego.Po zakończonej pracy na ekran należy wydać informację czy udało się poprawnie zapisać wyniki przetwarzania danych.

Budowa pliku z danymi:W pierwszym wierszu pliku zapisana jest nazwa biblioteki. Każda przeprowadzona operacja zajmuje dwa wiersze: w pierwszym wierszu mamy informację o typie operacji (kod 1-literowy: w – wypożyczenie, z – zwrot, k – kupno nowej książki) oraz datę operacji w formacie DD/MM/RRR. W drugim wierszu zapisana jest sygnatura książki oraz po dwukropku, w zależności od wykonanej operacji: dla wypożyczenia lub zwrotu wstawiony jest numer karty czytelnika, a dla książek zakupionych autor oraz tytuł książki, np:

Gminna Biblioteka Publiczna w Kocku…k 05/05/2006P-23456 : A. Marciniak “Object Pascal”w 11/05/2006S-65432: 1000025896…

Napisać procedurę o nagłówkuPROCEDURE TworzWykazNowych (var plwe, plwy:textFile);

która przegląda plik plwe z zapisanymi informacjami o bibliotece i w pliku wynikowym plwy tworzy wykaz nowo zakupionych książek postaci:

<Nazwa biblioteki>Lp. Autor Tytuł (sygnatura)

Napisać procedurę o nagłówkuPROCEDURE Podsumuj (mc:_Miesiace; var plwe, plwy:textFile);

która przegląda plik plwe z zapisanymi informacjami o bibliotece i do pliku wynikowego plwy zapisuje podsumowanie dla zadanego w parametrze mc miesiąca w postaci:

<Nazwa biblioteki>W miesiącu <numer miesiąca>:

wypożyczono: <ilość książek wypożyczonych>zwrócono: <ilość książek zwróconych>zakupiono nowych pozycji: <ilość książek zakupionych>.

14

Page 15: 1joannap/algorytm_i_progr_pascal/... · Web viewx typu Cardinal przyjmuje wartość 375. Ile razy wykona się refren pętli. Podaj wartości zmiennych j oraz suma po każdym wykonaniu

31. Wydatki

Pewna osoba posegregowała swoje wydatki na 5 grup i odnotowywała je codziennie w pliku tekstowym (jeden miesiąc – jeden plik). Ustalone grupy wydatków to:

1 – opłaty stałe2 – koszty utrzymania domu3 – wyżywienie4 – ubrania i lekarstwa5 – inne (m.in. rozrywka, kultura).

Napisać program, który pobiera od użytkownika ścieżkę do pliku z danymi oraz numer miesiąca, w którym były zapisywane wydatki. Jeżeli plik nie istnieje użytkownik ma mieć możliwość 3krotnego podania pliku. Zakładamy, że dane w pliku są poprawnie przygotowane. Następnie program pobiera od użytkownika ścieżkę do pliku wynikowego i otwiera go do dopisywania. Na zakończenie działania programu na ekran należy wydać informację czy udało się poprawnie zapisać wyniki przetwarzania danych.

Budowa pliku z wydatkami:Każdy dzień opisany jest w pliku poprzez dwa wiersze: jeden wiersz to numer dnia miesiąca, drugi wiersz to ciąg par liczb zakończony parą złożoną z dwóch zer (pierwsza liczba w parze to numer grupy, druga liczba to wydana kwota). Zakładamy, że dane w pliku są poprawne.Uwaga: w ciągu jednego dnia kilkakrotnie mogą wystąpić wydatki z tej samej grupy.

Napisać procedurę, która czyta plik z danymi o wydatkach i dopisuje do pliku wynikowego podsumowanie wydatków dla każdej grupy oraz zbiorcze podsumowanie /wyniki opatrzone odpowiednimi komentarzami/, wylicza i dopisuje do pliku procentowy udział każdej grupy we wszystkich wydatkach oraz numer dnia, w którym wydatki były największe (łącznie z wydaną danego dnia kwotą). Przykładowa szata graficzna pliku wynikowego:

Miesiąc: <miesiąc słownie>Wydane na:

opłaty stałe: <...> zł (<...>% wszystkich wydatków)utrzymanie domu: <...> zł (<...>% wszystkich wydatków)wyżywienie: <...> zł (<...>% wszystkich wydatków)ubrania i lekarstwa: <...> zł (<...>% wszystkich wydatków)pozostałe: <...> zł (<...>% wszystkich wydatków)

<wiersz wolny>Ogółem wydane: <...> zł<wiersz wolny>Najwięcej wydane dnia <...> : <...>zł

15