Matura 2009 - zadanie 5b

0

Witam! mam problem z zadaniem z zakresu programowania z matury rozszerzonej z 2009 roku, a dokładniej z zadaniem 5B. Tutaj treść zadania: http://www.cke.edu.pl/images/_EGZAMIN_MATURALNY_OD_2015/Arkusze_egzaminacyjne/2009/informatyka/PR_2.pdf

Ma wyjść 35 takich par. Nie potrafię zaimplementować tego w programie. W załączniku przesyłam plik z danymi. Jeśli ktoś mógłby mi pomóc to bardzo dziękuję :)

0

Walnij najprostszy brute force.

0
while(!data.eof()){
	data >> a >> b;
	if(a.find(b) != std::string::npos) ++w;
}
0
ujemny napisał(a):
while(!data.eof()){
	data >> a >> b;
	if(a.find(b) != std::string::npos) ++w;
}

Dzięki za to! Co prawda to jest gotowiec, a chciałbym wiedzieć, czy mogę do tego wykorzystać taki kod ?

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

int main()
{
	ifstream file;
	ofstream file1;
	file.open("dane.txt");
	file1.open("4b.txt");
	string n1,n2;
	bool fragment = false;
	int pom = 0;
	while (file.good())
	{
		file >> n1 >> n2;
		
		fragment = false;
		for (int i = 0; i <= n1.size() - n2.size(); i++)
		{
			if (n1[i] == n2[0]) 
			{   
				fragment = true; 
				pom = 1; 
				for (int j = i + 1; j < n2.size(); j++)
				{
					if (n1[j] != n2[pom++]){ fragment= false; break; }
				}
			}
		}
		if (fragment) licznik++;
	}
	file1 << licznik;
	file.close();
	file1.close();
	return 0;
	
} 

sugerowałem się algorytmem wyszukiwania wzorca w tekście. Zaznaczam z góry, że jest coś nie tak. Przykładowo wyświetla mi wartości: 00101101 i 1000

0

Zadanie możesz rozwiązać jak Ci się tylko podoba, ale od tego też zależy liczba punktów jaką dostaniesz, najlepiej jak byś zrobił taką metodą której nie ma w kluczu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1