Witam. Mam takie zadanie:
Dane są dwa ciągi znaków zakończone '*'. Napisz program, który porówna te dwa ciągi w poszukiwaniu pierwszych identycznych znaków i policzy ile jest znaków, które się pokrywają. Na koniec program wypisze podciąg, który został znaleziony.
Mój kod wygląda tak:
#include <iostream>
#include <cstdlib>
#include <conio.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Polish");
string napis1;
string napis2;
int licznik=0;
cout<<"Wczytaj ciąg 1: "<<endl;
getline(cin,napis1);
cout<<"Wczytaj ciąg 2: "<<endl;
getline(cin,napis2);
string pom;
cout<<"\n";
for(int i=0; i<napis1.length(); i++)
{
for(int j=0; j<napis2.length(); j++)
{
if(napis2.at(j) == napis1.at(i))
{
pom = napis2.at(j);
cout<<pom<<" ";
licznik++;
}
}
}
cout<<"\n";
cout<<"Znakow pokrywających się jest = "<<licznik<<endl;
return 0;
}
Przykładowe dane:
aligator
liga
---> powinno wyswietlić "liga" i ze tych znakow jest 4
alabama
obama
---> powinno wyświetlić "bama" i ilość 4
Jednak wyskakuje mi jakiś błąd, lub dodaje niepotrzebne litery np. a l i g a (i w tym przypadku ilosc 5 zamiast 4) - zamiast l i g a
Proszę o pomoc.