palindromy - problem

0

Gdy debuguje program to wyskakuje mi ostrzeżenie "warning: comparison of integer expressions of different signedness: 'int' and 'std::basic_string<char>::size_type' {aka 'unsigned int'} [-Wsign-compare]" w linijce z pętlą for. Próbowałem usunąć dzielenie przez 2, bo myślałem że to przez zmiane x.length z int na float jednak błąd dalej występuje. Nie przejmował bym się tym, ale mam wrażenie że jest to powód błędnego działania programu tzn. kiedy wpiszę z klawiatury wyraz "ala kot" to pokazuje mi że wyrażenie to palindrom natomiast gdy przypiszę string x="ala kot" to pokazuje mi poprawnie.

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

int main() {
	bool palindrom = true;
	string x;
	cin>>x;

	for (int i = 0; i < x.length() / 2; i++)
		if (x[i] != x[x.length() - 1 - i])
			palindrom = false;

	if (palindrom)
		cout << "jest" << endl;
	else
		cout << "nie jest" << endl;

	return 0;
}
3

Ostrzeżenie o którym mowa tyczy się tego, że i jest typu int, czyli ze znakiem, string::size()zwracasize_t, czyli typ bez znaku. Zmień typ i`.

Sam problem jest zupełnie niepowiązany: cin >> x wczytuje do napotkanego białego znaku. Użyj getline() jak chcesz całą linię.

0

dziekuje

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