Sprawdź się
Zadanie 3. Piekarnia w Unixlandii
Kasia i Tomek prowadzą rodzinną piekarnię w Unixlandii. Codziennie rano wypiekają różną liczbę bułek, chlebów, bagietek oraz ciast, które następnie są rozwożone po całym kraju.
W sumie wypiekanych jest dziewięć rodzajów pieczywa, a ich liczby zapisywane są każdego dnia do pliku pieczywo.txt
, oddzielone pojedynczym znakiem odstępu, każdy dzień w osobnej linii. W żadnym dniu nie ma dwóch rodzajów pieczywa o tej samej liczbie wypieków.
Przycisk do pobrania pliku TXT z treścią zadania. Pobierz załącznik
Napisz program, który dla każdego wiersza z pliku pieczywo.txt
wyznaczy indeks pieczywa, które ma dokładnie środkową liczbę wypieków wśród pozostałych rodzajów pieczywa danego dnia. Wyniki zapisz do pliku środkowe.txt
, każdy indeks w osobnej linii.
Uwaga: pieczywa w pliku, podobnie jak tablice w komputerze, indeksujemy od zera.
Do oceny oddajesz:
plik
środkowe.txt
z odpowiedzią (plik tekstowy zawierający indeksy rodzajów pieczywa z odpowiadających wierszy plikupieczywo.txt
, które danego dnia miały dokładnie środkową liczbę wypieków)plik(i) z komputerową realizacją programu (kodem źródłowym)
Przedstaw rozwiązanie zadania w postaci programu w języku C++, Java lub Python. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego do swojego programu. Odpowiedź do zadania dla danych z pliku znajdziesz pod sekcją ćwiczeń.
JĘZYK C++
#include <iostream>
using namespace std;
void zamien(int & a, int & b)
{
int temp = a;
a = b;
b = temp;
}
int main() {
int pieczywo[5][9] = {
{23, 35, 18, 12, 15, 41, 13, 36, 46},
{28, 38, 42, 25, 37, 20, 30, 10, 13},
{20, 22, 41, 21, 33, 49, 37, 18, 43},
{48, 44, 31, 40, 33, 35, 34, 19, 13},
{34, 46, 23, 28, 14, 45, 18, 41, 26}
};
int indeksy[9], najmniejszy;
for (int i = 0; i < 5; i++){
for(int j = 0; j < 9; j++){
indeksy[j] = j;
}
for(int j = 0; j < 5; j++){
najmniejszy = j;
for (int k = j+1; k < 9; k++){
if (pieczywo[i][k] > pieczywo[i][najmniejszy]){
najmniejszy = k;
}
}
zamien(pieczywo[i][j],pieczywo[i][najmniejszy]);
zamien(indeksy[j],indeksy[najmniejszy]);
}
cout << indeksy[4] << endl;
}
}
JĘZYK JAVA
public class Main {
public static void main(String [] args) {
int[][] pieczywo = {
{23, 35, 18, 12, 15, 41, 13, 36, 46},
{28, 38, 42, 25, 37, 20, 30, 10, 13},
{20, 22, 41, 21, 33, 49, 37, 18, 43},
{48, 44, 31, 40, 33, 35, 34, 19, 13},
{34, 46, 23, 28, 14, 45, 18, 41, 26}
};
int najmniejszy, indeksy[];
indeksy = new int[9];
for (int i = 0; i < 5; i++){
for(int j = 0; j < 9; j++){
indeksy[j] = j;
}
for(int j = 0; j < 5; j++){
najmniejszy = j;
for (int k = j+1; k < 9; k++){
if (pieczywo[i][k] > pieczywo[i][najmniejszy]){
najmniejszy = k;
}
}
int temp = pieczywo[i][j];
pieczywo[i][j] = pieczywo[i][najmniejszy];
pieczywo[i][najmniejszy] = temp;
temp = indeksy[j];
indeksy[j] = indeksy[najmniejszy];
indeksy[najmniejszy] = temp;
}
System.out.println(indeksy[4]);
}
}
}
JĘZYK PYTHON
pieczywo = [
[23, 35, 18, 12, 15, 41, 13, 36, 46],
[28, 38, 42, 25, 37, 20, 30, 10, 13],
[20, 22, 41, 21, 33, 49, 37, 18, 43],
[48, 44, 31, 40, 33, 35, 34, 19, 13],
[34, 46, 23, 28, 14, 45, 18, 41, 26]
]
for i in range(5):
indeksy = [i for i in range(9)]
for j in range(5):
najmniejszy = j
for k in range(j+1,9):
if pieczywo[i][k] > pieczywo[i][najmniejszy]:
najmniejszy = k
pieczywo[i][j],pieczywo[i][najmniejszy] = pieczywo[i][najmniejszy],pieczywo[i][j]
indeksy[j],indeksy[najmniejszy] = indeksy[najmniejszy], indeksy[j]
print(indeksy[4])
Schemat oceniania
2 pkt – za poprawną odpowiedź
0 pkt – za niepoprawną odpowiedź lub brak odpowiedzi
Odpowiedź
Odpowiedź do zadania znajduje się w pliku środkowe.txt
:
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik