# Informatyka — zadanie 6.1

> Źródło: matura.lol — https://matura.lol/question/maturazai-informatyka-inf-2017-05/zad/6.1
> Wersja Markdown strony zadania (dla asystentów AI). Przy cytowaniu podaj matura.lol i link powyżej.

- arkusz: Informatyka · Matura · maj 2017 (rozszerzona)
- rok: 2017
- poziom: rozszerzona
- typ: open
- punkty: 2
- działy: Programowanie i algorytmika

## Treść

Zadanie 6. Piksele

W pliku dane.txt znajduje się 200 wierszy. Każdy wiersz zawiera 320 liczb naturalnych z przedziału od 0 do 255, oddzielonych znakami pojedynczego odstępu (spacjami). Przedstawiają one jasności kolejnych pikseli czarno-białego obrazu o wymiarach 320 na 200 pikseli (od 0 - czarny do 255 - biały).

Napisz program(y), który(e) da(dzą) odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku wyniki6.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie zadanie.

Uwaga: plik przyklad.txt zawiera dane przykładowe spełniające warunki zadania (obraz ma takie same rozmiary). Odpowiedzi dla danych z pliku przyklad.txt są podane pod poleceniami.

Podaj jasność najjaśniejszego i jasność najciemniejszego piksela.

Dla danych z pliku przyklad.txt wynikiem jest 255 (najjaśniejszy) i 0 (najciemniejszy).

## Rozwiązanie — maturazai.pl (AI)

## Poprawna odpowiedź

**Dla `dane.txt`:**
- Najjaśniejszy piksel: **221**
- Najciemniejszy piksel: **7**

**Dla `przyklad.txt`:**
- Najjaśniejszy: 255
- Najciemniejszy: 0

## Sposób 1 - Python (najprostszy)

Wczytujemy plik, zbieramy wszystkie 320×200 = 64 000 wartości i obliczamy min/max.

```python
with open('dane.txt') as f:
wszystkie = []
for linia in f:
wszystkie.extend(int(x) for x in linia.split())

print('Najjasniejszy:', max(wszystkie)) # 221
print('Najciemniejszy:', min(wszystkie)) # 7

Lub jednolinijkowo z generator expression (oszczędniejsze pamięciowo):
```python
with open('dane.txt') as f:
pikse = [int(x) for linia in f for x in linia.split()]
print(max(pikse), min(pikse))

## Sposób 2 - C++

```cpp
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;

int main() {
ifstream plik("dane.txt");
int x, najw = INT_MIN, najm = INT_MAX;
while (plik >> x) {
if (x > najw) najw = x;
if (x < najm) najm = x;
}
cout << "Najjasniejszy: " << najw << endl;
cout << "Najciemniejszy: " << najm << endl;
return 0;
}
// Najjasniejszy: 221
// Najciemniejszy: 7

## Sposób 3 - Pascal

```pascal
program NajPiksel;
var
f: TextFile;
x, najw, najm: Integer;
begin
AssignFile(f, 'dane.txt');
Reset(f);
najw := 0;
najm := 255;
while not Eof(f) do
begin
Read(f, x);
if x > najw then najw := x;
if x < najm then najm := x;
end;
CloseFile(f);
Writeln('Najjasniejszy: ', najw);
Writeln('Najciemniejszy: ', najm);
end.

## Reference algorytmiczny - min/max w pojedynczym przebiegu

> Reference - Wyznaczenie min i max:
> - Pojedynczy przebieg O(n), wystarczy 2n-2 porównań naiwnie, optymalnie 3n/2.
> - Inicjalizacja: dla max → najmniejsza wartość (lub pierwszy element), dla min → największa (lub pierwszy).
> - Python: wbudowane `max()` i `min()` - czas O(n), kod 1-linijkowy.
> - C++: `*max_element( )` i `*min_element( )` z `<algorithm>`.

## Schemat oceniania CKE

> Klucz CKE (zadanie 6.1, max 2 pkt):
> - **2 pkt** - prawidłowa pełna odpowiedź:
> - **1 pkt** za podanie wartości najjaśniejszego piksela (221).
> - **1 pkt** za podanie wartości najciemniejszego piksela (7).
> - **0 pkt** - odpowiedź błędna lub brak.

## Typowe pułapki

- **Wczytywanie nie obejmuje wszystkich pikseli** - uważać czy plik kończy się znakiem nowej linii po ostatniej linii (whitespace tokenizery zwykle radzą sobie z tym).
- **Inicjalizacja max/min** - jeśli inicjalizujesz `najw = 0`, a wszystkie wartości są >= 0, to OK. Lepiej `najw = INT_MIN` (lub pierwszą wczytaną wartość).
- **Mylenie kolumn/wierszy** - zadanie pyta o WARTOŚCI pikseli, nie ich pozycje. Nie potrzeba pamiętać współrzędnych.
- **Format wyjścia** - "najjasniejszy: 221, najciemniejszy: 7" w pliku wyniki6.txt, poprzedzony numerem zadania (6.1).

## Złożoność obliczeniowa

- Wczytanie: O(n) gdzie n = 64 000 pikseli.
- Min/max: O(n) w jednym przebiegu.
- **Całkowita: O(n)**, czyli liniowa.

## Linki

- [dane JSON](https://matura.lol/api/question/maturazai-informatyka-inf-2017-05/zad/6.1)
- [otwórz w wyszukiwarce](https://matura.lol/?problem=maturazai-informatyka-inf-2017-05%2Fzad%2F6.1)

## Podobne zadania

- [Zadanie 5.4](https://matura.lol/question/informatyka-2025-czerwiec-matura-stara-rozszerzona-2/zad/5.4) — Zadanie 5.4. (0-3) Wykonaj zestawienie, w którym obliczysz całkowitą liczbę wizyt umówionych: • do godziny 11 włącznie • po godzinie 11 do 13 włącznie • po godz
- [Zadanie 4.1](https://matura.lol/question/informatyka-2020-lipiec-matura-rozszerzona-2/zad/4.1) — Zadanie 4.1. (0-3) Podaj identyfikatory (seria+numer) tych dokumentów z pliku identyfikator.txt, których suma cyfr z numerycznej części jest największa. Odpowie
- [Zadanie 4.2](https://matura.lol/question/informatyka-2024-czerwiec-matura-rozszerzona/zad/4.2) — Zadanie 4.2. (0-2) Dla danych zapisanych w pliku odbiorcy.txt podaj liczbę komputerów, które nie są odbiorcami żadnych pakietów. W przykładzie 1. jest jeden tak
- [Zadanie 8.1](https://matura.lol/question/informatyka-2024-czerwiec-matura-rozszerzona/zad/8.1) — Zadanie 8.1. (0-2) Dla każdej szczepionki podaj, ile łącznie jej dawek zostało podanych pacjentom. Jako wynik podaj listę zawierającą kod szczepionki i liczbę d

_Ostatnia aktualizacja danych: 2026-10-03_
