Witam mam problem z pewnym zadaniem w C++, tworzę program, który ma korzystać z reguły rezolucji. Pierwszą część programu mam, ma ona przeszukać podane z-formuły i usunąć pojawiające się duplikaty, żeby formuły się nie powtarzały.

-oddziela formuły z lewej strony od tych z prawej

p#d,s
p,q#s
p,s#q

W drugiej części problem polega na tym, że nie wiem jak zrobić by program brał pierwszą formułę (pierwsza linia w notatniku) i porównywał z każdą następną tzn.

Bierze: p#d,s

Sprawdza z pozostałymi i jak znajdzie w jakiejś formule, że ta sama litera wystąpi po lewej i po prawej stronie znaku # to je kasuje i powstają nowe formuły:

p#d,s
p,s#q

s – występuje po lewej i po prawej stronie więc jest usuwana i powstają nowe formuły:

p#d
p#q

Program ma tak długo działać aż wymaże wszystkie formuły i wtedy zwróci prawdę a w przypadku gdy zostanie formuła, której nie można z niczym zredukować to zwróci fałsz.

Bardzo proszę o pomoc bo naprawdę nie wiem jak to zrobić, jestem początkujący w programowaniu więc bardzo proszę o wyrozumiałość i bardzo dziękuję za udzieloną pomoc bo nie umiem dać sobie z tym rady.

#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main()
{
     string nazwaPliku;
     cout << "Podaj nazwe pliku do otwarcia: ";
     cin >> nazwaPliku;
     ifstream plikwe(nazwaPliku.c_str());
     if(!plikwe)
     {
          cerr << "Blad otwarcia pliku\n";
          return -1;
     }
 
     string tmp;
     vector<string> tekst;
     while(plikwe >> tmp)
     {
          tekst.push_back(tmp);
     }
 
     cout << "Przed usunieciem duplikatow\n";
     for(int i = 0; i < tekst.size(); ++i)
     {
          cout << tekst[i] << "\n";
     }

     sort(tekst.begin(),tekst.end());
     tekst.erase(unique(tekst.begin(),tekst.end()),tekst.end());
 
     cout << "Po usunieciu duplikatow\n";
     for(int i = 0; i < tekst.size(); ++i)
     {
          cout << tekst[i] << "\n";
     }
 
     cout << "Podaj nazwe pliku do ktorego zapisac\n";
     cin >> nazwaPliku;
     ofstream plikwy(nazwaPliku.c_str());
 
     for(int i = 0; i < tekst.size(); ++i)
     {
          plikwy << tekst[i] << "\n";
     }
 
 
}