Wątek przeniesiony 2021-04-16 15:55 z PHP przez Patryk27.

Problem z palindromami C++

0

Mam problem z kodem, ponieważ każdy wpisany tekst, który nie jest palindromem zaliczany jest jako palindrom. Proszę o pomoc. Dopiero zaczynam a wydaje mi się, że wkradł mi się gdzieś mały błąd, który wszystko psuje,

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

void wypisz(string s)
{
    cout << "podaj zdanie : ";
    getline(cin,s);
}
bool sprawdz(string s)
{
    int j=s.size()-1;
    for(int i=0; i<j; i++)
    {
        if(s[i]==' ') i++;
        if(s[j]==' ') j--;
        if(s[i]=s[j]) return false;
       j--;
    }
    return true;
}


int main()
{
    string s;
    wypisz(s);
    if(sprawdz(s)) cout << "tekst jest palindromem "<< endl;
    else cout << "tekst nie jest palindromem "<< endl;
    return 0;
}
2

if(s[i]=s[j]) to jest przypisanie. Powinno raczej być ==

4
Dregorio napisał(a):

if(s[i]=s[j]) to jest przypisanie. Powinno raczej być ==

Powinno raczej być !=
Z tym że błędów jest o wiele więcej.

bool isPalindrom(const string &s)
{
    for(int b=0,e=s.size()-1;b<e;++b,--e)
    {
        while((b<e)&&isspace(s[b])) ++b;
        while((b<e)&&isspace(s[e])) --e;
        if((b<e)&&s[b]!=s[e]) return false;
    }
    return true;
}
0

@_13th_Dragon: Dobra. Po przekazaniu przez referencje działa. Pewnie by można było jeszcze coś ulepszyć ale na razie bardziej zaawansowanych rzeczy nie ogarniam. Dzieki :)

2

EEEE:

void wypisz(string s)
{
    cout << "podaj zdanie : ";
    getline(cin,s);
}

Ta funkcja kłamie. Nazwa mówi, że wypisze argument, a wypisuje jakąś prośbę i czyta dane.
Na dodatek ta funkcja nic nie robi, wczytana zawartość przepada.

Z drugiej strony chwali się, że próbujesz dzielić kod na mniejsze funkcje!

Powinno być:

string wczytajZadnie()
{
    string zdanie;
    cout << "podaj zdanie : ";
    getline(cin, zdanie); 
    return zdanie;
}

Albo:

void wczytajZadnie(string& zdanie) // uwaga referencja!
{
    cout << "podaj zdanie : ";
    getline(cin, zdanie); 
}

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