C++

Matura z informatyki - programy z ostatnich trzech lat.

Screenshot 2017-04-03 21-00-13

Jeśli jeszcze sami nie opracowaliście sobie maturalnych zadań na program z ostatnich lat to zapraszam do zapoznania się z moimi propozycjami. Na końcu wpisu znajdziecie link do pobrania paczki z poleceniami do zadań, danymi i oczywiście programami. Przepraszam za to, że niektóre są trochę nieczytelna i być może nieoptymalne, ale robiłem je jakiś czas temu i pewnie miałem wtedy clean code w poważaniu ;). Na egzamin możemy wybrać C++, Javę lub Pythona, w związku z czym przygotowałem implementację w każdym z tych języków.

Matura z informatyki - programy z 2014

Zadania na program z tego roku nie było szczególnie trudne. Jedynie teoretycznie najtrudniejsze zadanie trzecie sprawiło mi pewną trudność. Przydał się algorytm sprawdzający, czy liczba należy do liczb pierwszych, którego implementację wstawiałem na samym poczatku istnienia bloga.

Matura z informatyki programy - 2014

Podpunkt a)

W podpunkcie tym wystarczyło przeiterować poprzez znaki słowa. Wykorzystamy fakt, że każdy znak można reprezentować jako liczbę. Zsumujemy potem znaki i sprawdzimy, czy suma jest liczba pierwszą.

C++

#include <iostream>
#include <fstream>

using namespace std;

bool czy_pierwsza(int a)
{
	if(a<2)return false;
	
	for(int i=2; i*i<=a; i++)
	{
		if(a%i==0)return false;
	}
	
	return true;
}

int main()
{
	
	int suma=0;
	int licznik=0;
	string napis;
	
	fstream plik;
	plik.open("NAPIS.txt", ios::in);
	
	
	if(!plik)
	{
	cout << "No nie";
	return 1;		
	}else
	{
		while(plik>>napis)
		{
			for(int i=0; i<napis.length(); i++)
			{
				suma+=napis[i];
			}
			if(czy_pierwsza(suma)==true) licznik++;
			suma=0;
		}
		
	}
	cout << licznik;

	plik.close();

	return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
	
	
	static boolean czyPierwsza(int a) {
		if(a<2) {
			return false;
		}
		for(int i=2; i*i<=a; i++) {
			if(a%i==0) {
				return false;
			}
		}
		
		return true;
	}
	
	
	public static void main(String[] args) throws IOException { 
		
		File f = new File("NAPIS.txt");
		if(!f.exists())
		{
			System.out.println("Plik " + f.getName() + " nie został odnaleziony.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		
		if(br.ready()) { 
			
			String line;
			int suma = 0;
			int licznik = 0;
			while((line = br.readLine()) != null) {  
				for(char c : line.toCharArray()) {
					suma += c;
				}
				if(czyPierwsza(suma))
					licznik++;
				suma = 0;
			}
			System.out.println("Znaleziono " + licznik + " słów, których suma ASCII jest liczbą pierwszą");
			br.close();
			
			
			
		}
		else
		{
			System.out.println("Oj nie nie, -1 byczq.");
			br.close();
			return;
		}
		
		
		
		
	}
}

Python

def czyPierwsza(x):
    for i in range(2, int(x/2) + 1):
        if x % i == 0:
            return False
    return True

file = open("NAPIS.TXT", "r")
pierwsze = 0
for line in file:
    suma = 0
    for char in line:
        if char == "\n":
            continue
        suma += ord(char)
    if czyPierwsza(suma):
        pierwsze += 1
print(pierwsze)
file.close()

Podpunkt b)

Tutaj, podobnie jak w poprzednim podpunkcie, wykorzystamy liczbową reprezentację znaku. Wystarczy więc sprawdzać kolejne znaki i porównywać z poprzednim.

C++

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	fstream plik;
	plik.open("NAPIS.txt", ios::in);
	
	if(!plik)
	{
	cout << "No nie";
	return 1;		
	}else
	{
		int aktualny;
		int poprzedni;
		
		bool jest=true;
		string napis;
	
		while(plik>>napis)
		{
			poprzedni=napis[0];
			for(int i=1; i<napis.length(); i++)
			{
				aktualny=napis[i];
				
				if(aktualny<=poprzedni)
				{
					jest=false;
				}else
				{
					poprzedni=aktualny;
				}
			}
			
			if(jest==true) cout << napis << endl;
			jest=true;	
			
		}
	}

	plik.close();
	
	
	return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
	
	
	public static void main(String[] args) throws IOException { 
		
		File f = new File("NAPIS.txt");
		if(!f.exists())
		{
			System.out.println("Plik " + f.getName() + " nie został odnaleziony.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		
		if(br.ready()) { 
			
			String line;
			int aktualny;
			int poprzedni;
			boolean jest = true;
			while((line = br.readLine()) != null) {  
				poprzedni = line.charAt(0);
				for(int i=1; i < line.length(); i++) {
					aktualny = line.charAt(i);
					if(aktualny<=poprzedni) {
						jest = false;
					}
					else
					{
						poprzedni = aktualny;
					}
				}
				if(jest)
					System.out.println(line);
				jest = true;
			}
			br.close();
			
			
			
		}
		else
		{
			System.out.println("Oj nie nie, -1 byczq.");
			br.close();
			return;
		}
		
		
		
		
	}
}

Python

file = open("NAPIS.TXT", "r")

for line in file:
    poprzednia = line[0]
    nastepna = 0
    pom = True
    for char in line[1:]:
        if char == "\n":
            continue
        nastepna = char
        if nastepna <= poprzednia:
            pom = False
            break
        poprzednia = nastepna
    if pom:
        print(line)
file.close()

Podpunkt c)

W tym podpunkcie zapiszemy słowa do tablicy, a następnie będziemy sprawdzać, czy już się w niej pojawił. Jeżeli tak, to pomijamy jego ponowne wstawianie.

C++

#include <iostream>
#include <fstream>
using namespace std;

int main() {
  fstream plik;
  plik.open("NAPIS.txt", ios:: in );
  if (!plik) {
    cout << "No nie";
    return 1;
  } else {
    string napis[1000];
    int byl[1000];
    for (int j = 0; j < 1000; j++)
      byl[j] == 0;
    int i = 0;
    while (plik >> napis[i]) {
      for (int j = i - 1; j >= 0; j--) {
        if (napis[i] == napis[j]) {
          byl[j]++;
          break;
        }
      }
      i++;
    }
    for (int j = 0; j < 1000; j++) {
      if (byl[j] != 0)
        cout << napis[j] << endl;
    }
  }
  plik.close();
  return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;

public class Main {
	
	public static void main(String[] args) throws IOException { 
		
		File f = new File("NAPIS.txt");
		if(!f.exists())
		{
			System.out.println("Plik " + f.getName() + " nie został odnaleziony.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		
		if(br.ready()) { 
			
			
			String line;
			HashMap<String, Boolean> map = new HashMap<String, Boolean>();
			while((line = br.readLine()) != null) {  
				if(map.containsKey(line)) {
					if(!map.get(line)) {
						map.put(line, true);
						System.out.println(line);
					}
				}else {
					map.put(line, false);
				}
			}
			br.close();
			
			
			
		}
		else
		{
			System.out.println("Oj nie nie, -1 byczq.");
			br.close();
			return;
		}
		
		
		
		
	}
}

Python

file = open("NAPIS.TXT", "r")
words = []
repeated = []
for line in file:
    if not words.__contains__(line):
        words.append(line)
    else:
        if not repeated.__contains__(line):
            repeated.append(line)
for x in repeated:
    print(x)
file.close()

Matura z informatyki - programy z 2015

matura z informatyki 2015

Podpunkt 1.

matura z informatyki 2015

W tym zadaniu musimy każdą liczbę potraktować jako łańcuch znaków. Następnie zliczymy ilość znaków będących zerami i jedynkami. Na koniec możemy je ze sobą porównać.

C++

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	fstream plik;
	plik.open("liczby.txt", ios::in);
	
	if(!plik)
	{
		cout << "Błąd";
		return 1;
	}else
	{
		string liczba;
		
		int licznik=0;
		
		int l_jedynek=0;
		int l_zer=0;
		
		while(plik >> liczba)
		{
			for(int i=0; i<liczba.length(); i++)
			{
				if(liczba[i]=='1') l_jedynek++;
				else	l_zer++;
			}
			
			if(l_zer>l_jedynek) licznik++;
			
			l_jedynek=0;
			l_zer=0;
			
		}
		
		
		cout << licznik;
		
		
	}
	

	return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
	
	public static void main(String[] args) throws IOException { 
		
		File f = new File("liczby.txt");
		if(!f.exists())
		{
			System.out.println("Plik " + f.getName() + " nie został odnaleziony.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		
		if(br.ready()) { 
			
			
			String line;
			int count = 0;
			while((line = br.readLine()) != null) {  
				int jedynki = 0;
				int zera = 0;
				for(char c : line.toCharArray()) {
					if(c == '0') {
						zera++;
					}
					else {
						jedynki++;
					}
				}
				if(zera>jedynki)
					count++;	
			}
			br.close();
			System.out.println(count);
			
			
		}
		else
		{
			System.out.println("Oj nie nie, -1 byczq.");
			br.close();
			return;
		}
		
		
		
		
	}
}

Python

file = open("liczby.txt", "r")
suma = 0
for word in file:
    zera = 0
    jedynki = 0
    for char in word:
        if char == "\n":
            continue
        if char == '1':
            jedynki += 1
        else:
            zera += 1
    if zera > jedynki:
        suma += 1

print(suma)
file.close()

Podpunkt 2

matura z informatyki 2015

Tutaj wystarczyło zauważyć, że liczba zapisana podzielna jest przez 2, jeżeli jej ostatnia cyfra, najmniej znacząca, nie jest jedynką. Sprawa ma się podobnie w przypadku podzielności przez 8.

C++

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	fstream plik;
	plik.open("liczby.txt", ios::in);
	
	if(!plik)
	{
		cout << "Błąd";
		return 1;
	}else
	{
		string liczba;
		
		int przez_dwa=0;
		int przez_osiem=0;
		
		while(plik >> liczba)
		{
			if(liczba[liczba.length()-1]=='0') przez_dwa++;
			if(liczba[liczba.length()-1]=='0' && liczba[liczba.length()-2]=='0' && liczba[liczba.length()-3]=='0') przez_osiem++;
		}
		
		cout << przez_dwa << endl << przez_osiem;
		
	}
	

	return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
	
	
	public static long  getValue(String s) {
		long l = 0;
		for(int i = s.length()-1; i >= 0; i--) {
			l+= Math.pow(2, s.length()-i) * Integer.parseInt("" + s.charAt(i));
		}
		return l;
	}
	
	
	public static void main(String[] args) throws IOException { 
		
		File f = new File("liczby.txt");
		if(!f.exists())
		{
			System.out.println("Plik " + f.getName() + " nie został odnaleziony.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		
		if(br.ready()) { 
			
			
			String line;
	
			int p2 = 0;
			int p8 = 0;
			while((line = br.readLine()) != null) {  
				if(line.charAt(line.length()-1) == '0') {
					p2++;
					if(line.charAt(line.length()-2) == '0' && line.charAt(line.length()-3) == '0' ) {
						p8++;
					}
				}
				
			}
			System.out.println("Podzielne przez 2: " + p2);
			System.out.println("Podzielne przez 8 : " + p8);
			br.close();
			
			
			
		}
		else
		{
			System.out.println("Oj nie nie, -1 byczq.");
			br.close();
			return;
		}
		
		
		
		
	}
	
}

Python

file = open("liczby.txt", "r")
p8 = 0
p2 = 0
for word in file:
    if word[len(word) - 2] == '0':
        p2 += 1
        if word[len(word) - 3] == '0' and word[len(word) - 4] == '0':
            p8 += 1
print("Podzielne przez 2: " + str(p2))
print("Podzielne przez 8: " + str(p8))
file.close()

Podpunkt 3

matura z informatyki 2015

W tym podpunkcie potrzebujemy kilku zmiennych pomocniczych. Przyda nam w nim się, między innymi, zmienna przechowująca długość najdłuższego bloku zer. Następnie wystarczy sprawdzać lokalnie najdłuższy blok w iterowanym wyrazie. Potem już tylko pozostaje porównanie go z poprzednią zmienną i ewentualna ich podmiana.

C++

//wiem, że kod wygląda słabo, ale już naprawdę nie miałem siły :D
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
	fstream plik;
	plik.open("liczby.txt", ios::in);
	
	if(!plik)
	{
		cout << "Błąd";
		return 1;
	}else
	{
		string liczba, najwieksza, najmniejsza;
		
		plik >> liczba;
		najwieksza=liczba;
		najmniejsza=liczba;
		
		int n=1;
		int najw=1;
		int najm=1;
		
		
		while(plik >> liczba)
		{
			++n;
			if(liczba.length()>najwieksza.length())
			{
				najwieksza=liczba;
				najw=n;
			}else
			{
			if(liczba.length()==najwieksza.length())
			{
				for(int i=1; i<liczba.length(); i++)
				{
					if(liczba[i]>najwieksza[i])
					{
						najwieksza=liczba;
						najw=n;	
						break;
						
					}else
					{
						if(najwieksza[i]>liczba[i]) break;
					}
					
				}
			}	
			}	
			
			if(liczba.length()<najmniejsza.length())
			{
				najmniejsza=liczba;
				najm=n;
			}else
			{
				if(liczba.length()==najmniejsza.length())
				{
					for(int i=1; i<liczba.length(); i++)
					{
						if(liczba[i]<najmniejsza[i])
						{
							najmniejsza=liczba;
							najm=n;
							break;
						}else
						{
						if(najwieksza[i]<liczba[i]) break;
						}
					
					}
				}	
			}
			
		}
		
		cout << najm << endl << najw;
		
	}
	

	return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
	
	
	public static long  getValue(String s) {
		long l = 0;
		for(int i = s.length()-1; i >= 0; i--) {
			l+= Math.pow(2, s.length()-i) * Integer.parseInt("" + s.charAt(i));
		}
		return l;
	}
	
	
	public static void main(String[] args) throws IOException { 
		
		File f = new File("liczby.txt");
		if(!f.exists())
		{
			System.out.println("Plik " + f.getName() + " nie został odnaleziony.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		
		if(br.ready()) { 
			
			
			String line = br.readLine();
			String max = line;
			String min = line;
			int n = 1;
			int Max = 1;
			int Min = 1;
			
			while((line = br.readLine()) != null) {  
				n++;
				if(line.length() > max.length()) {
					max = line;
					Max=n;
				}
				else {
					if(line.length() == max.length()) {
						for(int i=1; i< line.length(); i++) {
							if(line.charAt(i) > max.charAt(i)) {
								max = line;
								Max = n;
								break;
							}
							else {
								if(max.charAt(i) > line.charAt(i)) {
									break;
								}
							}
						}
					}
					if(line.length() < min.length()) {
						min = line;
						Min = n;
					}
					
					else {
						if(line.length() == min.length())
						{
							for(int i=1; i<min.length(); i++)
							{
								if(line.charAt(i)<min.charAt(i))
								{
									min= line;
									Min=n;
									break;
								}else
								{
								if(max.charAt(i)<line.charAt(i)) {
									break;
								}
								}
							
							}
						}	
						
					}
					
				}
				
			}
			System.out.println("Najmniejsze: " + Min);
			System.out.println("Najwieksze : " + Max);
			br.close();
			
			
			
		}
		else
		{
			System.out.println("Oj nie nie, -1 byczq.");
			br.close();
			return;
		}
		
		
		
		
	}
	
}

Python

file = open("liczby.txt", "r")
minNum = file.readline()
maxNum = minNum
row = 1
maxRow = 1
minRow = 1
for line in file:
    row += 1
    if len(line) > len(maxNum):
        maxNum = line
        maxRow = row
    else:
        if len(line) == len(maxNum):
            for i in range(1, len(line) - 1):
                if line[i] > maxNum[i]:
                    maxNum = line
                    maxRow = row
                    break
                else:
                    if maxNum[i] > line[i]:
                        break
        else:
            if len(line) < len(minNum):
                minNum = line
                minRow = row
            else:
                if len(line) == len(minNum):
                    for i in range(1, len(line) - 1):
                        if line[i] < minNum[i]:
                            minNum = line
                            minRow = row
                            break
                        else:
                            if maxNum[i] < line[i]:
                                break
print("Najmniejsza " + str(minRow))
print("Najwieksza " + str(maxRow))
file.close()
grupa wsparcia matura z informatyki

Matura z informatyki - programy z 2016

matura z informatyki 2016

Zadanie z tego roku sprawiło mi największa przyjemność, gdyż w swoim czasie strasznie "jarałem się" szyfrowaniem, kryptologią, a sam omawiany już przeze mnie szyfr Cezara nie należy do tych najtrudniejszych.

Podpunkt 1.

Zanim przejdziemy do szyfrowania, musimy sprawdzić jaka jest reszta z dzielenia 107 przez 26. Reszta ta jest nam potrzebna, aby ustalić faktyczne położenie przesuniętego znaku. Dzielimy przez 26, ponieważ to właśnie co tyle cyklicznie musimy powtarzać alfabet.

C++

#include <iostream>
#include <fstream>

using namespace std;

void szyfruj(string &napisik, int k)
{
	k%=26;
	
	for(int i=0; i<napisik.length(); i++)
	{
		if(napisik[i]+k>90)
		napisik[i]=napisik[i]+k-26;
		else
		napisik[i]=napisik[i]+k;
	}
	
}

int main()
{
	fstream plik;
	plik.open("dane_6_1.txt", ios::in);
	
	
	if(!plik)
	{
		cout << "Dupa"	;
		return 1;
	}else
	{
		string napis;
		while(plik >> napis)
		{
			szyfruj(napis, 107);
			cout << napis << endl;
		}
		
		
	}
	
	plik.close();
	
	
	return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
	
	public static String szyfruj(String s) {
		char[] chars = s.toCharArray();
		for(int i = 0; i < chars.length; i++) {
			int a = chars[i] + 107 % 26;
			if(a > 'Z')
				a -= 26;
			chars[i] = (char) a;
		}
		return new String(chars);
	}
	
	
	public static void main(String[] args) throws IOException { 
		File f = new File("dane_6_1.txt");
		if(!f.exists()) {
			System.out.println("Podany plik nie istnieje.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		if(br.ready()) {
			String line;
			
			while((line = br.readLine()) != null) {
				System.out.println(szyfruj(line));
			}
			
		}
		br.close();
	}
		
		
	
		
	
	
}

Python

def szyfruj(a):
    chars = []
    for c in a:
        if a == "\n":
            continue
        i = ord(c) + 107 % 26
        if i > 90:
            i -= 26
        chars.append(chr(i))
    s = ""
    for c in chars:
        s += c
    return s

file = open("dane_6_1.txt", "r")
for line in file:
    print(szyfruj(line))

Podpunkt 2.

matura z informatyki 2016

matura z informatyki 2016

W podpunkcie tym dokonujemy działań odwrotnych do tych, które robiliśmy przy szyfrowaniu. Tak jak w poprzednim podpunkcie musimy uwzględnić cykliczne przesunięcie alfabetu o 26.

C++

#include <iostream>
#include <fstream>

using namespace std;

void deszyfruj(string &napisik, int k)
{
	k%=26;
	
	for(int i=0; i<napisik.length(); i++)
	{
		if(napisik[i]-k<65)
		napisik[i]=napisik[i]-k+26;
		else
		napisik[i]=napisik[i]-k;
	}
	
}

int main()
{
	fstream plik;
	plik.open("dane_6_2.txt", ios::in);
	
	
	if(!plik)
	{
		cout << "Dupa"	;
		return 1;
	}else
	{
		string napis;
		int kod;
		while(plik >> napis >> kod)
		{
			cout << napis << "|" << kod << "|";
			deszyfruj(napis, kod);
			cout << napis << endl;
		}
		
	
	}
	
	plik.close();
	
	
	return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
	
	public static String odszyfruj(String s, int klucz) {
		char[] chars = s.toCharArray();
		for(int i = 0; i < chars.length; i++) {
			int a = chars[i] - klucz % 26;
			if(a < 'A')
				a += 26;
			chars[i] = (char) a;
		}
		return new String(chars);
	}
	
	
	public static void main(String[] args) throws IOException { 
		File f = new File("dane_6_2.txt");
		if(!f.exists()) {
			System.out.println("Podany plik nie istnieje.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		if(br.ready()) {
			String line;
			
			while((line = br.readLine()) != null) {
				if(line.split(" ").length < 2)
					continue;
				String slowo = line.split(" ")[0];
				int klucz = Integer.parseInt(line.split(" ")[1]);
				System.out.println(odszyfruj(slowo, klucz));
			}
			
		}
		br.close();
	}
		
		
	
		
	
	
}

Python

def odszyfruj(a, key):
    s = ""
    for c in a:
        if a == "\n":
            continue
        i = ord(c) - key % 26
        if i < 65:
            i += 26
        s += chr(i)
    return s

file = open("dane_6_2.txt", "r").read().split('\n')
for line in file:
    if len(line.split(" ")) < 2 or len(line.split(" ")[1]) < 1:
        continue
    print(odszyfruj(line.split(" ")[0], int(line.split(" ")[1])))

Podpunkt 3.

matura z informatyki 2016

W tym podpunkcie wystarczy sprawdzić odległość miedzy dwoma pierwszymi znakami. Następnie porównujemy go z pozostałymi odstępami. Jeżeli coś się nie będzie zgadzało, to dodajemy niepoprawny plik do listy.

C++

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

void sprawdz(string napisik1, string &napisik2)
{	
	int k;
	if(napisik2[0]<napisik1[0])
		k=abs(napisik2[0]+26-napisik1[0]);
	else
		k=abs(napisik2[0]-napisik1[0]);
	
	for(int i=0; i<napisik2.length(); i++)
	{
		if(napisik2[i]-k<65)
		napisik2[i]=napisik2[i]-k+26;
		else
		napisik2[i]=napisik2[i]-k;
	}
	
	if(napisik1!=napisik2) cout << napisik1 << endl;
	
}

int main()
{
	fstream plik;
	plik.open("dane_6_3.txt", ios::in);
	
	
	if(!plik)
	{
		cout << "Dupa"	;
		return 1;
	}else
	{
		string napis1, napis2;
		while(plik >> napis1 >> napis2)
		{
			sprawdz(napis1,napis2);
			
		//	cout << napis << "|" << kod << "|";
			//deszyfruj(napis, kod);
		//	cout << napis << endl;
		}
		
	
	}
	plik.close();
	
	
	return 0;
}

Java

package matura;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
	public static boolean czyDobry(String slowo, String szyfr) {
		char[] chars = szyfr.toCharArray();
		int klucz = chars[0] - slowo.charAt(0);
		if(klucz < 0) {
			klucz = 26 + klucz;
		}
		for(int i = 1; i < chars.length; i++) {
			int check = chars[i] - slowo.charAt(i);
			if(check < 0) {
				check = 26 + check;
			}
			if(check != klucz)
				return false;
		}
		return true;
		
	}
	
	public static void main(String[] args) throws IOException { 
		File f = new File("dane_6_3.txt");
		if(!f.exists()) {
			System.out.println("Podany plik nie istnieje.");
			return;
		}
		BufferedReader br = new BufferedReader(new FileReader(f));
		
		if(br.ready()) {
			String line;
			
			while((line = br.readLine()) != null) {
				if(line.split(" ").length < 2)
					continue;
				String slowo = line.split(" ")[0];
				String szyfr = line.split(" ")[1];
				if(!czyDobry(slowo, szyfr)) {
					System.out.println(slowo);
				}
			}
			
		}
		br.close();
	}
		
		
	
		
	
	
}

Python

def czyDobry(a, b):
    key = ord(b[0]) - ord(a[0])
    if key < 0:
        key += 26
    for i in range(1, len(b)):
        check = ord(b[i]) - ord(a[i])
        if check < 0:
            check += 26
        if check != key:
            return False
    return True

file = open("dane_6_3.txt", "r").read().split('\n')
for line in file:
    if len(line.split(" ")) < 2 or len(line.split(" ")[1]) < 1:
        continue
    if not czyDobry(line.split(" ")[0], line.split(" ")[1]):
        print(line.split(" ")[0])