Sprawdź się
Zadanie 2.2
Właścicielka szkoły nie jest zadowolona z informacji, które otrzymała, i najchętniej wymieniłaby przestarzały sprzęt na nowy. Niestety, nie ma na to budżetu, a posiadany sprzęt jest wciąż potrzebny.
Właścicielka szkoły chce, by posortowano nierosnąco uzyskane dane o sprzęcie w następujący sposób:
po pierwsze – przestarzały sprzęt ma się znaleźć na samym końcu listy, ma być posortowany nierosnąco zgodnie ze swoją wartością;
po drugie – sprzęt, który nie jest przestarzały, ma być posortowany nierosnąco na samym początku listy, zgodnie ze swoją wartością.
Plik magazyn.txt zawiera 11 wierszy, w każdym wierszu znajdują się trzy liczby całkowite oddzielone spacjami. Liczby na poszczególnych pozycjach w danym wierszu oznaczają kolejno:
numer identyfikacyjny sprzętu (liczba z przedziału [0, 10]),
wartość sprzętu (liczba z przedziału [0, 100]),
informację, czy sprzęt jest przestarzały (0 – jest przestarzały; 1 – nie jest przestarzały).
Przykładowe dane:
0 98 0
1 60 1
2 32 0
3 61 1
4 0 1Napisz program, który posortuje nierosnąco uzyskane dane o sprzęcie z uwzględnieniem kryteriów podanych w zadaniu.
Poprawne wyniki dla przykładowych danych:
[3, 61, 1],
[1, 60, 1],
[4, 0, 1],
[0, 98, 0],
[2, 32, 0],Do oceny oddajesz:
plik
wynik.txtzawierający odpowiedź (posortowaną nierosnąco listę sprzętu z uwzględnieniem kryteriów podanych w zadaniu)plik(i) z komputerową realizacją zadania (kodem źródłowym)
Plik magazyn.txt:
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik
Uwaga! Odpowiedź w testerce programów powinna mieć następujący format:
[numer identyfikacyjny sprzetu, wartosc, czy sprzet przestarzaly],Napisz implementację przedstawionego zadania lokalnie na swoim komputerze w wybranym języku programowania. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego do swojego programu. Odpowiedź do zadania dla danych z pliku znajdziesz pod ćwiczeniami.
JĘZYK C++
Przykładowe rozwiązanie zadania:
#include <iostream>
using namespace std;
const int n = 5;
int magazyn[n][3] = {
{0, 98, 0},
{1, 60, 1},
{2, 32, 0},
{3, 61, 1},
{4, 0, 1},
};
int main()
{
const int max = 100;
const int min = 0;
const int rozmiarTabZlicz = max - min + 1;
int tabZlicz[rozmiarTabZlicz];
for (int i = 0; i < rozmiarTabZlicz; i++)
{
tabZlicz[i] = 0;
}
for (int i = 0; i < n; i++) {
tabZlicz[magazyn[i][1]]++;
}
for (int i = 1; i <= max; i++) {
tabZlicz[i] += tabZlicz[i - 1];
}
int nowaTab[n][3];
for (int i = 0; i < n; i++) {
int poz = magazyn[i][1];
nowaTab[tabZlicz[poz] - 1][0] = magazyn[i][0];
nowaTab[tabZlicz[poz] - 1][1] = magazyn[i][1];
nowaTab[tabZlicz[poz] - 1][2] = magazyn[i][2];
tabZlicz[poz]--;
}
int tabZlicz2[2];
tabZlicz2[0] = 0;
tabZlicz2[1] = 0;
for (int i = 0; i < n; i++) {
tabZlicz2[nowaTab[i][2]]++;
}
tabZlicz2[0] += tabZlicz2[1];
int nowaTab2[n][3];
for (int i = 0; i < n; i++) {
int poz = nowaTab[i][2];
tabZlicz2[poz]--;
nowaTab2[tabZlicz2[poz]][0] = nowaTab[i][0];
nowaTab2[tabZlicz2[poz]][1] = nowaTab[i][1];
nowaTab2[tabZlicz2[poz]][2] = nowaTab[i][2];
}
for (int i = 0; i < n; i++) {
cout << "[" << nowaTab2[i][0] << ", " << nowaTab2[i][1] << ", " << nowaTab2[i][2] << "]," << endl;
}
return 0;
}JĘZYK JAVA
Przykładowe rozwiązanie zadania:
import java.util.Arrays;
public class Main {
static int[][] magazyn = {
{0, 98, 0},
{1, 60, 1},
{2, 32, 0},
{3, 61, 1},
{4, 0, 1},
};
public static void main(String[] args) {
int n = 5;
int max = 100;
int min = 0;
int tabZlicz[] = new int[max - min + 1];
for (int i = 0; i < n; i++) {
tabZlicz[magazyn[i][1]]++;
}
for (int i = 1; i <= max; i++) {
tabZlicz[i] += tabZlicz[i - 1];
}
int nowaTab[][] = new int[n][3];
for (int i = 0; i < n; i++) {
int poz = magazyn[i][1];
tabZlicz[poz]--;
nowaTab[tabZlicz[poz]][0] = magazyn[i][0];
nowaTab[tabZlicz[poz]][1] = magazyn[i][1];
nowaTab[tabZlicz[poz]][2] = magazyn[i][2];
}
int tabZlicz2[] = new int[2];
for (int i = 0; i < n; i++) {
tabZlicz2[nowaTab[i][2]]++;
}
tabZlicz2[0] += tabZlicz2[1];
int nowaTab2[][] = new int[n][3];
for (int i = 0; i < n; i++) {
int poz = nowaTab[i][2];
nowaTab2[tabZlicz2[poz] - 1][0] = nowaTab[i][0];
nowaTab2[tabZlicz2[poz] - 1][1] = nowaTab[i][1];
nowaTab2[tabZlicz2[poz] - 1][2] = nowaTab[i][2];
tabZlicz2[poz]--;
}
for (int i = 0; i < n; i++) {
System.out.println(Arrays.toString(nowaTab2[i]) + ",");
}
}
}JĘZYK PYTHON
Przykładowe rozwiązanie zadania:
magazyn = [[0, 98, 0], [1, 60, 1], [2, 32, 0], [3, 61, 1], [4, 0, 1],]
n = 5
max = 100
min = 0
tab_zlicz = [0 for x in range(max - min + 1)]
for x in range(n):
tab_zlicz[magazyn[x][1]] = tab_zlicz[magazyn[x][1]] + 1
for x in range(1, max + 1):
tab_zlicz[x] = tab_zlicz[x - 1] + tab_zlicz[x]
nowa_lista_1 = [ [ 0 for x in range(3) ] for y in range(n) ]
for x in range(n):
poz = magazyn[x][1]
tab_zlicz[poz] = tab_zlicz[poz] - 1
nowa_lista_1[tab_zlicz[poz]][0] = magazyn[x][0]
nowa_lista_1[tab_zlicz[poz]][1] = magazyn[x][1]
nowa_lista_1[tab_zlicz[poz]][2] = magazyn[x][2]
tab_zlicz2 = [0 for x in range(2)]
for x in range(n):
tab_zlicz2[nowa_lista_1[x][2]] = tab_zlicz2[nowa_lista_1[x][2]]+1
tab_zlicz2[0] = tab_zlicz2[1] + tab_zlicz2[0]
nowa_lista_2 = [ [ 0 for x in range(3) ] for y in range(n) ]
for x in range(n):
poz = nowa_lista_1[x][2]
tab_zlicz2[poz] = tab_zlicz2[poz] - 1
nowa_lista_2[tab_zlicz2[poz]][0] = nowa_lista_1[x][0]
nowa_lista_2[tab_zlicz2[poz]][1] = nowa_lista_1[x][1]
nowa_lista_2[tab_zlicz2[poz]][2] = nowa_lista_1[x][2]
for x in range(n):
print(str(nowa_lista_2[x]) + ", ")Odpowiedź do zadania dla danych zawartych w pliku tekstowym:
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik
Odpowiedź zgodna z formatem, który akceptuje testerka:
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik