Hey guys. I made program that tests if word is same when you read it normally and from right, like words : ana, ama, bmb,anavolimilovana, oko
When I run the program, it Always gives me back 1! When I type ana, ama etc. it is supposed to give me back 0, but It does not work properly for some reason.
My code:
#include<iostream>
#include<string>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<fstream>
#include<utility>
using namespace std;
#define mp make_pair
#define pb push_back
#define xx first
#define yy second
const int INF = 1 << 29;
typedef long long lint;
typedef pair < int, int > tacka;
bool provjeri_palindrom (string tekst)
{
bool rez;
string naopako="";
int i;
for (i = tekst.size(); i>=0; i--)
{
naopako+= tekst[i];
The problem is in your for loop.
When you iterate backwards through your string, you have to start from the string's length minus 1.
1 2 3 4
for (i = tekst.size()-1; i>=0; i--)
{
naopako+= tekst[i];
}
Because if your word is a 3 letter word, its length is 3.
However, the last letter of the word is at index 2.
So you need to set int i equal to tekst.size() - 1.
Because arrays start at index 0, so technically every letter is off by 1.
for (i = tekst.size(); i>=0; i--)
HEre is the problem. tekst[tekst.size()] is going to be outside of the world and will be a null terminator. So your resulting string will start with null character, which s not what you want.