Písemka - maturanti

Program dostane graf na sedmi vrcholech (číslovaných 1..7) popsaný jako seznam hran, na každém řádku jedna hrana. Počet hran není pevně daný, ale konec vstupu je označený dvěma nulami (jako by to taky byla hrana). Program pak vypíše tabulku, mezi kterými vrcholy vede hrana a kde ne.

Ukázkové řešení - Python 2

pole = [0] * 49 # jednorozmerne pole devetactyriceti nul
while True:
	input_str = raw_input()
	a_str, b_str = input_str.split(" ") # vstup od uzivatele rozdelime podle mezery
	a = int(a_str) - 1 # ...a prevedeme na cisla
	b = int(b_str) - 1
	if a == -1 and b == -1:
		break;
	else: # to by tu nemuselo byt
		pole[a*7 + b] = pole[b*7 + a] = 1 # predstavujeme si, ze je pole dvourozmerne
for i in range(49):
	print pole[i], # vypiseme stale na stejny radek
	if i%7 == 6:
		print # za kazdym sedmym vlozime novy radek

Ukázkové řešení - C++

#include <iostream>
using namespace std; //jinak bychom museli psát std::cin, std::cout a std::endl

int main(){
	// vytvoříme si pole 49 čísel a nastavíme ho na nuly
	bool pole[49];
	for (int i=0; i<49; i++){
		pole[i] = false;
	}
	// opakujeme do nekonečna (nebo než se zavolá break)
	while (1) {
		int x, y;
		// načteme dvě čísla
		cin >> x >> y;
		if (x == 0 && y == 0){
			// pokud jsou to dvě nuly, vyskočíme z cyklu
			break;
		}
		x -= 1;
		y -= 1;
		// jinak na odpovídající místa v poli zapíšeme jedničky
		pole[x*7 + y] = pole[y*7 + x] = true;
	}
	// vypíšeme pole
	for (int i=0; i<49; i++){
		cout << pole[i];
		if (i%7 == 6){
			cout << endl; // po každém sedmém vypíšeme konec řádku
		}
		else {
			cout << ' '; // jinak jen mezeru
		}
	}
	return 0; // formalita
}

Písemka - nematuranti

Program má pole devětačtyřiceti nul. Na vstupu dostává čísla 1 až 49 a na zadané pozice zapisuje do pole jedničky. Když dostane číslo 0, skončí a vypíše obsah pole.

Ukázkové řešení - Python 2

pole = [0] * 49 # jednorozmerne pole devetactyriceti nul
while True:
	i = int(raw_input()) - 1 # vstup od uzivatele prevedeme na cislo a posuneme o 1
	if i == -1:
		break
	pole[i] = 1
print " ".join(str(prvek) for prvek in pole) # vypiseme prvky pole oddelene mezerami

Ukázkové řešení - C++

#include <iostream>
using namespace std; //jinak bychom museli psát std::cin, std::cout a std::endl

int main(){
	// vytvoříme si pole 49 čísel a nastavíme ho na nuly
	int pole[49];
	for (int i=0; i<49; i++){
		pole[i] = 0;
	}
	// opakujeme do nekonečna (nebo než se zavolá break)
	while (1) {
		int x;
		cin >> x; // načteme číslo
		if (x == 0){ // pokud je to nula, vyskočíme z cyklu
			break;
		}
		pole[x-1] = 1; // jinak na odpovídající místo v poli zapíšeme jedničku
	}
	// vypíšeme pole
	for (int i=0; i<49; i++){
		cout << pole[i] << ' ';
	}
	cout << endl;
	return 0; // formalita
}