Zestaw z dn. 14

Transkrypt

Zestaw z dn. 14
Zestaw 1
Organizacja plików: Wszystkie pliki oddawane do sprawdzenia należy zapisać we wspólnym
folderze o nazwie będącej numerem indeksu, umieszczonym na pulpicie. Oddajemy tylko źródła
programów (pliki o rozszerzeniach .py)!!!
1. Zdefiniować moduł Lancuchy zawierający funkcję najczestszyZnak zwracającą znak
występujący w łańcuchu podanym jako parametr najwięcej razy (w przypadku gdy takich
znaków jest kilka zwracany jest pierwszy z nich, natomiast gdy łańcuch wejściowy jest
pusty zgłaszany jest wyjątek ValueError).
Napisać program odczytujący plik tekstowy input.txt i w każdej linii tego pliku wyszukujący
znak, który występuje w niej najczęściej (znak końca linii jest pomijany). Program tworzy
nowy plik output.txt zawierający w kolejnych liniach znaki występujące najczęściej
w odpowiadających (tj. tych samych w kolejności, licząc od początku) liniach pliku
wejściowego. Dla pustych linii pliku wejściowego odpowiadające im linie pliku
wyjściowego też powinny być puste. Program musi wykorzystać w/w funkcję z modułu
Lancuchy i obsłużyć wyjątek zgłaszany przez tę funkcję. Dla pliku input.txt postaci:
Ala ma kota
bcdef
powinien powstać następujący plik output.txt:
a
b
2. Zdefiniować moduł Ciagi zawierający następujące funkcje operujące na listach liczb
rzeczywistych:
• sredniaArytmetyczna – zwracającą średnią arytmetyczną wartości listy będącej
parametrem (w przypadku pustej listy zgłaszany jest wyjątek ValueError);
• mocnyCiag – zwracającą N-elementowy (N>0 jest parametrem) ciągły fragment listy
podanej jako parametr, który ma największą średnią arytmetyczną spośród wszystkich
fragmentów tej długości (w przypadku gdy jest kilka takich ciągów o maksymalnej
średniej, zwracany jest ostatni z nich, natomiast gdy N nie jest dodatnia lub przekracza
długość listy wejściowej zgłaszany jest wyjątek ValueError); do wyznaczania średniej
fragmentów funkcja musi wykorzystywać funkcję sredniaArytmetyczna;
Napisać program pobierający od użytkownika listę liczb rzeczywistych o dowolnej długości
(o zakończeniu podawania wartości decyduje użytkownik), a następnie pozwalający
użytkownikowi wielokrotnie podawać liczbę całkowitą oznaczającą zadany rozmiar
szukanego fragmentu wejściowej listy o największej średniej. Podanie rozmiaru 0 kończy
program. Dla każdego zadanego rozmiaru program wyświetla ten rozmiar i po dwukropku
szukany fragment listy lub komunikat o braku takiego fragmentu. Program korzysta w tym
celu z funkcji mocnyCiag z modułu Ciagi i musi obsłużyć wyjątek zgłaszany przez tę
funkcję.
Przykładowo dla listy:
1 -5.5 3 -7 4.3 0 5 -2.1 8 3.6
program generuje następujące wyniki dla kolejno podawanych rozmiarów fragmentów:
3: 5 -2.1 8
11: brak
2: 8 3.6
5: 4.3 0 5 -2.1 8
-2: brak
1: 8
Zestaw 2
Organizacja plików: Wszystkie pliki oddawane do sprawdzenia należy zapisać we wspólnym
folderze o nazwie będącej numerem indeksu, umieszczonym na pulpicie. Oddajemy tylko źródła
programów (pliki o rozszerzeniach .py)!!!
1. Zdefiniować moduł Wyrazy zawierający funkcję ilePodzielnych zwracającą informację ile
wyrazów w liście łańcuchów podanej jako parametr ma długość podzielną przez K będącą
drugim parametrem (w przypadku gdy K=0 zgłaszany jest wyjątek ZeroDivisionError).
Napisać program odczytujący plik tekstowy input.txt z wyrazami oddzielonymi
pojedynczymi spacjami i dla każdej linii tego pliku liczący wyrazy o długości podzielnej
przez wartość podaną przez użytkownika. Program tworzy nowy plik output.txt zawierający
w kolejnych liniach liczby szukanych wyrazów w odpowiadających (tj. tych samych
w kolejności, licząc od początku) liniach pliku wejściowego. Program musi wykorzystać
w/w funkcję z modułu Wyrazy i obsłużyć wyjątek zgłaszany przez tę funkcję. Dla wartości
2 podanej przez użytkownika i pliku input.txt postaci:
Ala ma kota i trzy psy
abc i efghi
powinien powstać następujący plik output.txt:
3
0
0
2. Zdefiniować moduł Liczby zawierający następujące funkcje operujące na liczbach
rzeczywistych:
• czyBliskie – zwracającą informację czy dwie liczby podane jako parametry są oddalone
od siebie maksymalnie o E będące trzecim parametrem funkcji (w przypadku ujemnego
E zgłaszany jest wyjątek ValueError);
• ciagOdleglych – zwracającą najdłuższy ciągły fragment listy podanej jako parametr,
w którym każdy element poza pierwszym ma wartość oddaloną od poprzedniego
o więcej niż E będącą kolejnym parametrem (w przypadku gdy jest kilka takich ciągów,
zwracany jest pierwszy z nich, natomiast gdy E jest ujemna zgłaszany jest wyjątek
ValueError); do wyznaczania odległości wartości listy funkcja musi wykorzystywać
funkcję czyBliskie;
Napisać program pobierający od użytkownika listę liczb rzeczywistych o dowolnej długości
(o zakończeniu podawania wartości decyduje użytkownik), a następnie pozwalający
użytkownikowi wielokrotnie podawać liczbę całkowitą oznaczającą minimalną odległość
wartości szukanego fragmentu wejściowej listy. Podanie rozmiaru 0 kończy program. Dla
każdej zadanej wartości program wyświetla ją i po dwukropku najdłuższy fragment listy
o kolejnych wartościach odległych o więcej niż ta wartość (lub komunikat o braku takiego
fragmentu). Program korzysta w tym celu z funkcji ciagOdleglych z modułu Liczby i musi
obsłużyć wyjątek zgłaszany przez tę funkcję.
Przykładowo dla listy:
1 -5.5 3 -7 4.3 0 5 -2.1 8 3.6
program generuje następujące wyniki dla kolejno podawanych rozmiarów fragmentów:
5: 1 -5.5 3 -7 4.3
15: brak
9: 3 -7 4.3
3: 1 -5.5 3 -7 4.3 0 5 -2.1 8 3.6
-2: brak
11: -7 4.3
Zestaw 3
Organizacja plików: Wszystkie pliki oddawane do sprawdzenia należy zapisać we wspólnym
folderze o nazwie będącej numerem indeksu, umieszczonym na pulpicie. Oddajemy tylko źródła
programów (pliki o rozszerzeniach .py)!!!
1. Zdefiniować moduł Napisy zawierający funkcję DlugoscNajdluzszego zwracającą długość
najdłuższego wyrazu (rozumianego jako ciąg znaków nie zawierający spacji) w łańcuchu
znaków podanym jako parametr (w przypadku gdy wejściowy łańcuch jest pusty zgłaszany
jest wyjątek ValueError).
Napisać program pobierający od użytkownika liczbę całkowitą K (K>0), a następnie
odczytujący plik tekstowy input.txt zawierający wyrazy oddzielone pojedynczymi spacjami
i dla każdej linii tego pliku sprawdzający czy długość najdłuższego wyrazu w tej linii
przekracza K. Program tworzy nowy plik output.txt zawierający w kolejnych liniach
informacje czy najdłuższe wyrazy w odpowiadających (tj. tych samych w kolejności, licząc
od początku) liniach pliku wejściowego są dłuższe od K, a jeśli tak – jaką mają długość. Dla
pustych linii pliku wejściowego odpowiadające im linie pliku wyjściowego też powinny być
puste. Program musi wykorzystać w/w funkcję z modułu Napisy i obsłużyć wyjątek
zgłaszany przez tę funkcję. Dla pliku input.txt postaci:
Ala ma kota
kolokwium
i K=5 powinien powstać następujący plik output.txt:
nie
tak, 9
2. Zdefiniować moduł Liczby zawierający następujące funkcje operujące na liczbach
całkowitych:
• czyPodzielne – o dwóch parametrach liczbowych A i B, zwracającą informację czy
któraś z tych liczb jest podzielna przez drugą (tj. A przez B lub B przez A). W przypadku
A=B=0 funkcja ma zgłaszać wyjątek ZeroDivisionError;
• ciagPodzielnych – zwracającą najdłuższy ciągły fragment listy podanej jako parametr,
w którym każda para sąsiednich elementów zawiera liczby podzielne: pierwsza przez
drugą lub druga przez pierwszą (w przypadku gdy jest kilka takich ciągów, zwracany
jest pierwszy z nich, natomiast gdy lista wejściowa ma mniej niż dwa elementy
zgłaszany jest wyjątek ValueError, a gdy złożona jest z samych zer –
ZeroDivisionError); do sprawdzania podzielności elementów listy funkcja musi
wykorzystywać funkcję czyPodzielne;
Napisać program umożliwiający wielokrotne pobieranie od użytkownika listy liczb
całkowitych o dowolnej długości (o zakończeniu podawania wartości do danej listy oraz
o zakończeniu wprowadzania list decyduje użytkownik) i wypisujący dla każdej z nich:
wprowadzoną listę oraz najdłuższy ciąg wartości tej listy, w którym każda para sąsiednich
elementów zawiera liczby podzielne: pierwsza przez drugą lub druga przez pierwszą.
Program korzysta w tym celu z funkcji ciagPodzielnych z modułu Liczby i musi obsłużyć
wyjątki zgłaszane przez tę funkcję. Przykładowo dla podanych niżej list program generuje
wyniki (dla ułatwienia ciągi podzielnych elementów zostały podkreślone):
lista:
lista:
lista:
lista:
lista:
1
1
3
0
2
2 4 -2 7 5 0 0 0 5 ciąg: 1 2 4 -2
1 0 7 12 9 6 3 -3 0 8 5 7 11 12 -1 8 ciąg: 6 3 -3 0 8
ciąg: brak
0 0 0 ciąg: brak
4 -2 6 -12 ciąg: 2 4 -2 6 -12