[C++] Anagram i pętle
: 23 lis 2013, o 18:07
Witam, mam do napisania aplikację w języku c++, która sprawdza czy wyraz przeze mnie wpisany jest anagramem, program ma to sprawdzać tyle razy ile ktoś sobie zażyczy. Jednak wyniki do wszystkich testów (zależnie od ich liczby) mają być pokazywane na końcu.
Przykładowo:
Mój problem polega na tym, że mam ułożony program, który wykonuje tyle testów ile zechcę, nie sprawdza czy wyraz jest anagramem, a jedynie jego długość, a wynik przychodzi zawsze po kolejnym wyrazie.
Jeżeli ktoś mógłby mi podpowiedzieć co z tym zrobić, szczególnie żeby program sprawdzał czy wyraz jest anagramem, będę wdzięczny. Jeżeli chodzi o te wyniki to wydaje mi się, że brakuje gdzieś dodatkowej pętli for, ale też nie mogę tego rozgryźć.
tutaj kod do programu:
Pozdrawiam 
Przykładowo:
Kod: Zaznacz cały
(wejście)
Pierwszy wyraz>>lato
l. testów>>3
Następny wyraz>>atlo
Następny wyraz>>armata
Następny wyraz>>tloa
(wyjście)
TAK
NIE
TAKJeżeli ktoś mógłby mi podpowiedzieć co z tym zrobić, szczególnie żeby program sprawdzał czy wyraz jest anagramem, będę wdzięczny. Jeżeli chodzi o te wyniki to wydaje mi się, że brakuje gdzieś dodatkowej pętli for, ale też nie mogę tego rozgryźć.
tutaj kod do programu:
Kod: Zaznacz cały
#include <iostream>
#include <cstring>
using namespace std;
bool sprawdz (string s1, string s2)
{
int dl=s1.size();
if (dl!=s2.size()) return false;
else
{
int T1[2]={0, 0}, T2[2]={0, 0};
for (int i=0;i<dl;i++)
{
if (s1[i]=='X') T1[0]++;
else T1[1]++;
if (s2[i]=='X') T2[0]++;
else T2[1]++;
}
for (int i=0;i<2;i++)
if (T1[i]!=T2[i]) return false;
}
return true;
}
int main()
{
string s1, s2;
int ile;
cout<<"Podaj pierwszy wyraz: ";
cin>>s1;
cout<<"Podaj liczbe testow: ";
cin>>ile;
for(int anagram=1;anagram<=ile;anagram++)
{
cout<<"Podaj kolejny wyraz: ";
cin>>s2;
if (sprawdz(s1,s2)) cout<<"\nTAK"<<endl;
else cout<<"\nNIE"<<endl;
}
return 0;
}