PY_I_R_W13B_M04 Misja matura - ćwiczenia w konstruowaniu pętli
Zadanie 1: Ciągi geometryczne
W Uniksie Północnej przeprowadzono badanie wieku mieszkańców. Ze względów praktycznych obywatele nie przekazywali swoich danych pojedynczo, lecz grupowo, w ramach gospodarstw domowych, w których zamieszkiwali. Władze dodatkowo poprosiły, by wiek domowników posortować niemalejąco.
Dany jest plik wiek.txt zawierający 100 ciągów liczbowych. Każdy ciąg zapisany jest w dwóch wierszach: w pierwszym znajduje się liczba mieszkańców gospodarstwa domowego, natomiast w drugim wiek domowników uszeregowany niemalejąco. Plik wiek.txt z danymi do zadania:
Napisz program wyznaczający, ile w Uniksie Północnej jest gospodarstw domowych, w przypadku których wiek ich mieszkańców posortowany niemalejąco tworzy ciąg geometryczny. Wynik zapisz do pliku domostwa.txt.
Ciąg jest geometryczny, jeśli każdy jego kolejny wyraz, od drugiego począwszy, jest iloczynem wyrazu poprzedniego i pewnej stałej nazywanej ilorazem ciągu.
Do oceny oddajesz:
plik
domostwa.txtzawierający odpowiedź (liczbę naturalną)plik(i) z komputerową realizacją zadania (kodem programu)
Z uwagi na format modułów sprawdzających rozwiązania, w ćwiczeniach przyjmujemy liczebność każdego domostwa równą 5.
Odpowiedź do zadania
domostwa.txt
Przykładowe rozwiązanie:
wiek = [
> [5,10,21,42,63],
> [2,4,10,34,45],
> [3,6,12,24,48],
> [1,3,9,26,54],
> [2,7,10,20,40],
> [3,9,20,40,51],
> [1,4,16,64,70],
> [2,4,8,16,32],
> [3,6,12,24,45],
> [2,4,8,16,33]
> ]
> licznik = 0
> for i in range(len(wiek)):
>
> poprzednik = wiek[i][0]
> nastepca = wiek[i][1]
> iloczyn = nastepca / poprzednik
> czy_geometryczny = True
>
> for j in range(2,5):
> if wiek[i][j] / nastepca == iloczyn:
> poprzednik = nastepca
> nastepca = wiek[i][j]
> else:
> czy_geometryczny = False
> break
> if czy_geometryczny:
> licznik += 1
>
> print(licznik)
>Przykładowe rozwiązanie:
wiek = [
[5,10,21,42,63],
[2,4,10,34,45],
[3,6,12,24,48],
[1,3,9,26,54],
[2,7,10,20,40],
[3,9,20,40,51],
[1,4,16,64,70],
[2,4,8,16,32],
[3,6,12,24,45],
[2,4,8,16,33]
]
licznik = 0
for i in range(len(wiek)):
poprzednik = wiek[i][0]
nastepca = wiek[i][1]
iloczyn = nastepca / poprzednik
czy_geometryczny = True
for j in range(2,5):
if wiek[i][j] / nastepca == iloczyn:
poprzednik = nastepca
nastepca = wiek[i][j]
else:
czy_geometryczny = False
break
if czy_geometryczny:
licznik += 1
print(licznik)Zadanie 2. Konwersja do postaci binarnej
Kasia i Tomek w ramach projektu szkolnego wymieniali korespondencję pocztową z Markiem, mieszkańcem Bajtocji. Niestety, mieszkańcy Bajtocji porozumiewają się w systemie binarnym, podczas gdy systemem ojczystym Kasi i Tomka jest system dziesiętny. W związku z tym wszystkie swoje wiadomości muszą oni konwertować do postaci binarnej, aby Marek mógł je zrozumieć. Jedna z wiadomości zapisana jest w pliku konwersja.txt, każda z liczb w osobnej linii.
Napisz program, który przetłumaczy dane z pliku konwersja.txt do postaci binarnej, a wyniki zapisze do pliku informacja.txt. Do oceny oddajesz:
plik
informacja.txtzawierający odpowiedź (dane z plikukonwersja.txtzapisane w postaci binarnej),plik(i) z komputerową realizacją zadania (kodem programu).
Odpowiedź do zadania w pliku do pobrania:
Przykładowe rozwiązanie:
konwersja = [
9756632, 4864656, 1170688, 6879737, 4130274,
1805319, 6009300, 9581008, 1956580, 9760927]
n = 10
for i in range(n):
postac_bin = ""
while konwersja[i] > 0:
postac_bin = str(konwersja[i] % 2) + postac_bin
konwersja[i] //= 2
print(postac_bin)