palindromy - problem

Odpowiedz Nowy wątek
2019-11-08 19:28
0

Gdy debuguje program to wyskakuje mi ostrzeżenie "warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::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;
}
edytowany 2x, ostatnio: kq, 2019-11-08 19:30
Pokaż pozostałe 2 komentarze
Nie uwzględniłeś: Kobyła ma mały bok - wg ciebie nie jest palindromem? - _13th_Dragon 2019-11-08 22:17
@_13th_Dragon: jak to poprawić żeby nie porównywało liter ze spacją? - micw 2019-11-09 17:16
Czytaj odpowiedź od @kq niżej - _13th_Dragon 2019-11-09 17:46
@_13th_Dragon: dalem getline ale w tym konkretnym przypadku ktory podales to nic nie daje.. - micw 2019-11-09 18:14
bo musisz pomijać spacje! - _13th_Dragon 2019-11-09 19:09

Pozostało 580 znaków

2019-11-08 19:31
kq

Ostrzeżenie o którym mowa tyczy się tego, że i jest typu int, czyli ze znakiem, `string::size() zwraca size_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ę.


Pozostało 580 znaków

2019-11-08 19:34
0

dziekuje

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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