Sprawdź się
Zadanie 3. Spis ludności
Marcin jest urzędnikiem w Uniksie Południowej. W związku z przeprowadzonym ostatnio spisem ludności dostał zadanie uporządkowania informacji o populacji ze wszystkich rejonów swojego kraju. Dane otrzymał w postaci pliku populacja.txt, gdzie każdy wiersz odpowiada za inny region.
Plik populacja.txt składa się z wierszy. W każdym wierszu zapisano 10 liczb naturalnych dodatnich z przedziału <1, 996>. Liczby oddzielone od siebie pojedynczym znakiem spacji.
Plik populacja.txt:
Przycisk do pobrania pliku TXT z treścią zadania. Pobierz załącznik
Dyrektor urzędu poprosił, aby wyniki w ramach każdego wiersza były posortowane, jednakże nie doprecyzował, o jaką kolejność sortowania chodzi. Marcin uznał zatem, że należy nieco urozmaicić statystyki i posortował wiersze parzyste niemalejąco, a nieparzyste nierosnąco. Wiersze numerował od zera, a zero uznawał za liczbę parzystą.
Napisz program, który posortuje dane z pliku według decyzji Marcina, a rezultat zapisze do odpowiadających wierszy pliku posortowane.txt
Do oceny oddajesz:
plik
posortowane.txtz odpowiedzią (plik tekstowy zawierający uporządkowane dane z plikupopulacja.txt, każdy zestaw liczb w oddzielnym wierszu, liczby oddzielone pojedynczym znakiem odstępu)plik(i) z komputerową realizacją zadania
Przedstaw rozwiązanie zadania, pisząc program w języku C++, Java lub Python. Rozwiązanie zadania znajdziesz pod sekcją ćwiczeń.
JĘZYK JAVA
Przykładowe rozwiązanie:
public class Main {
public static void main(String [] args) {
int [][] populacja = {
{2, 1, 34, 12, 54},
{87, 23, 6, 1, 6},
{6, 2, 8, 5, 57},
{97, 12, 32, 45, 68},
{9, 45, 86, 21, 24},
};
int aktualnaLiczba = 0;
int indeks = 0;
int [] tablica = {};
for (int i = 0; i <= populacja.length - 1; i++) {
tablica = populacja[i];
for (int j = 1; j <= tablica.length - 1; j++) {
aktualnaLiczba = tablica[j];
indeks = j;
if (i % 2 == 0) {
while (indeks > 0 && aktualnaLiczba < tablica[indeks - 1]) {
tablica[indeks] = tablica[indeks - 1];
indeks--;
}
}
else{
while (indeks > 0 && aktualnaLiczba > tablica[indeks - 1]) {
tablica[indeks] = tablica[indeks - 1];
indeks--;
}
}
tablica[indeks] = aktualnaLiczba;
}
}
for (int i = 0; i <= populacja.length - 1; i++) {
for (int j = 0; j <= populacja[i].length - 1; j++) {
System.out.print(populacja[i][j]);
if (j < populacja[i].length) System.out.print(" ");
}
System.out.println("");
}
}
}JĘZYK C++
Przykładowe rozwiązanie zadania:
#include <iostream>
using namespace std;
int main() {
int populacja [5][5] = {
{2, 1, 34, 12, 54},
{87, 23, 6, 1, 6},
{6, 2, 8, 5, 57},
{97, 12, 32, 45, 68},
{9, 45, 86, 21, 24}
};
int aktualnaLiczba = 0;
int indeks = 0;
for (int i = 0; i <= 4; i++) {
for (int j = 1; j <= 4; j++) {
aktualnaLiczba = populacja[i][j];
indeks = j;
if (i % 2 == 0) {
while (indeks > 0 && aktualnaLiczba < populacja[i][indeks - 1]) {
populacja[i][indeks] = populacja[i][indeks - 1];
indeks--;
}
}
else {
while (indeks > 0 && aktualnaLiczba > populacja[i][indeks - 1]) {
populacja[i][indeks] = populacja[i][indeks - 1];
indeks--;
}
}
populacja[i][indeks] = aktualnaLiczba;
}
}
for (int i = 0; i <= 4; i++) {
for (int j = 0; j <= 4; j++) {
cout << populacja[i][j];
if(j < 4) cout << " ";
}
cout << endl;
}
return 0;
}JĘZYK PYTHON
Przykładowe rozwiązanie zadania:
populacja = [
[2, 1, 34, 12, 54],
[87, 23, 6, 1, 6],
[6, 2, 8, 5, 57],
[97, 12, 32, 45, 68],
[9, 45, 86, 21, 24]
]
for i in range(len(populacja)):
for j in range(len(populacja[i]) - 1):
indeks = j
for k in range(j + 1, len(populacja)):
if populacja[i][k] > populacja[i][indeks] and i % 2 == 1:
indeks = k
if populacja[i][k] < populacja[i][indeks] and i % 2 == 0:
indeks = k
populacja[i][j], populacja[i][indeks] = populacja[i][indeks], populacja[i][j]
for tablica in populacja:
print(*tablica, sep=" ")Zadanie 4. Słownik poprawnej bajtszczyzny
W związku z 10‑letnią przerwą od ostatniej poprawki słownika poprawnej bajtszczyzny, profesorowie Bajtlandu zebrali się w stolicy, by wybrać zestaw słów, które powinny trafić do słownika.
Po wielogodzinnych obradach udało się ustalić zbiór kilkudziesięciu wyrazów, które w ciągu ostatniej dekady weszły do mowy potocznej. Zapisywano je na bieżąco do pliku wyrazy.txt. Plik zawiera 50 słów, każde z nich zapisane jest w osobnym wierszu. Niestety na koniec spotkania zauważono, że lista jest nieuporządkowana, co znacznie utrudni wstawienie nowych słów do słownika.
Plik wyrazy.txt:
Przycisk do pobrania pliku TXT z treścią zadania. Pobierz załącznik
Napisz program, który posortuje alfabetycznie wyrazy z pliku wyrazy.txt i zapisze je w odpowiedniej kolejności do pliku slownik.txt
Do oceny oddajesz:
plik
slownik.txtz odpowiedzią (plik tekstowy zawierający 50 wyrazów z plikuwyrazy.txtposortowanych alfabetycznie, każdy w osobnym wierszu)plik(i) z komputerową realizacją zadania
Przedstaw rozwiązanie zadania, pisząc program w języku C++, Java lub Python. Rozwiązanie zadania znajdziesz pod sekcją ćwiczeń.
Uwaga W związku ze sposobem testowania przykładowe dane w poniższych ćwiczeniach zawierają 6 słów zamiast 50.
JĘZYK JAVA
Przykładowe rozwiązanie:
public class Main {
public static boolean sortowanieAlfabetyczne(String a, String b) {
for (int i = 0; i < a.length() && i < b.length(); i++) {
if (a.charAt (i) * 1 < b.charAt(i) * 1) {
return true;
} else if (a.charAt(i) * 1 > b.charAt(i) * 1) {
return false;
}
}
if (a.length() < b.length()) {
return true;
} else {
return false;
}
}
public static void main(String [] args) {
String [] wyrazy = {"anastazja", "kubek", "uniwersytet", "telefon", "komputer", "magazyn"};
for (int i = 0; i < 6; i++) {
int indeksNajmniejszegoWyrazu = i;
for (int j = i + 1; j < 6; j++) {
if (sortowanieAlfabetyczne(wyrazy[j], wyrazy[indeksNajmniejszegoWyrazu])) {
indeksNajmniejszegoWyrazu = j;
}
}
String zmiennaTymczasowa = wyrazy[i];
wyrazy[i] = wyrazy[indeksNajmniejszegoWyrazu];
wyrazy[indeksNajmniejszegoWyrazu] = zmiennaTymczasowa;
}
for (int i = 0; i < 6; i++) {
System.out.println(wyrazy[i]);
}
}
}JĘZYK C++
Przykładowe rozwiązanie zadania:
#include <iostream>
#include <string>
using namespace std;
bool sortowanieAlfabetyczne(string a, string b) {
for (int i = 0; i < a.length() && i < b.length(); i++) {
if (a[i] * 1 < b[i] * 1) {
return true;
} else if (a[i] * 1 > b[i] * 1) {
return false;
}
}
if (a.length() < b.length()) {
return true;
} else {
return false;
}
}
int main() {
string wyrazy[6] = {"anastazja", "kubek", "uniwersytet", "telefon", "komputer", "magazyn"};
int rozmiarWyrazow = 6;
for (int i = 0; i < rozmiarWyrazow; i++) {
int indeksNajmniejszegoWyrazu = i;
for (int j = i + 1; j < rozmiarWyrazow; j++) {
if (sortowanieAlfabetyczne(wyrazy[j], wyrazy[indeksNajmniejszegoWyrazu])) {
indeksNajmniejszegoWyrazu = j;
}
}
string zmiennaTymczasowa = wyrazy[i];
wyrazy[i] = wyrazy[indeksNajmniejszegoWyrazu];
wyrazy[indeksNajmniejszegoWyrazu] = zmiennaTymczasowa;
}
for (int i = 0; i < rozmiarWyrazow; i++) {
cout << wyrazy[i] << endl;
}
return 0;
}JĘZYK PYTHON
Przykładowe rozwiązanie zadania:
def sortowanie_alfabetyczne(a, b):
if len(a) < len(b):
dlugosc_krotszego_wyrazu = len(a)
else:
dlugosc_krotszego_wyrazu = len(b)
for i in range(dlugosc_krotszego_wyrazu):
if ord(a[i]) < ord(b[i]):
return True
elif ord(a[i]) > ord(b[i]):
return False
if len(a) < len(b):
return True
else:
return False
wyrazy = ["anastazja", "kubek", "uniwersytet", "telefon", "komputer", "magazyn"]
n = len(wyrazy)
for i in range(n):
indeks_najmniejszego_wyrazu = i
for j in range(i+1,n):
if sortowanie_alfabetyczne(wyrazy[j], wyrazy[indeks_najmniejszego_wyrazu]):
indeks_najmniejszego_wyrazu = j
wyrazy[i], wyrazy[indeks_najmniejszego_wyrazu] = wyrazy[indeks_najmniejszego_wyrazu], wyrazy[i]
for i in range(n):
print(wyrazy[i])Odpowiedzi do zadań
Zadanie 3
Plik posortowane.txt:
Przycisk do pobrania pliku TXT z treścią zadania. Pobierz załącznik
Zadanie 4
Plik slownik.txt:
Przycisk do pobrania pliku TXT ze słownikiem. Pobierz załącznik