Wątek przeniesiony 2015-02-17 12:16 z C/C++ przez ŁF.

Program Palindrom - zawsze ta sama odpowiedź

2015-02-16 20:58
rikrosfit
0

Siema, napisalem programik palindrom czyli sprawdzajacy cyz wyraz od tylu brzmi tak samo jak od przodzu np KAJAK, niestety program za kazdym razem daje informacje ze wyraz jest palindromem prosze o pomoc

#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;

bool czy_palindrom(char tab[])

{
  //ustawiam liczniki "i" i "j" na pierwszy i ostatni znak wyrazu tab 
  int i=0;
  int j=tab[i-1];
   //pamiętajmy, że indeksujemy tablicę od 0

  while(i<j) //pętla wykonuje się do momentu spotkania liczników
  {
    if(tab[i]!=tab[j]) //gdy znaki nie będą się zgadzać, to wyraz nie jest palindromem
      return false;
      else

    i++; //przejscie do następnej litery idąc w prawą stronę
    j--; //przejscie do poprzedniej litry idąc w lewą stronę
  }

  return true; //wyraz jest palindromem
}

int main()
{
  char tab[100];
  cout<<"Podaj wyraz: ";
  cin>>tab;

  if(czy_palindrom(tab)) //lub if(czy_palindrom(tab)==true) lub if(czy_palindrom(tab)==1)
    cout<<"Wyraz "<<tab<<" jest palindromem"<<endl;
  else
    cout<<"Wyraz "<<tab<<" nie jest palindromem"<<endl;

  system("pause");
  return 0;
}

Pozostało 580 znaków

2015-02-16 21:03
0

1.

int j=tab[i-1];

to nie jest indeks ostatniego elementu

  1. w pętli w bloku else powinny być dwie linijki a nie jedna

Pozostało 580 znaków

2015-02-16 21:05
0

Wczytujesz jeden znak.

edytowany 1x, ostatnio: KazikWielki, 2015-02-16 21:06

Pozostało 580 znaków

2015-02-16 21:08
rikrosfit
0

jak to nie jest ostatni znak to jai bedzie ? zawsze bylem przekonany ze w tablicy t[i] ostatatnim elementem jest t[i-1]

Pozostało 580 znaków

2015-02-16 21:10
0

A czym jest u ciebie to i?

Pozostało 580 znaków

2015-02-16 21:12
1

koleś wtf

if(word == string(rbegin(word), rend(word))

A jeśli wydajność jest problemem

if(equal(begin(word), begin(word) + word.size()/2, rbegin(word)))
edytowany 3x, ostatnio: spartanPAGE, 2015-02-16 21:25
+ wordsize()/2? - twonek 2015-02-16 21:24
błąd myśli - spartanPAGE 2015-02-16 21:25

Pozostało 580 znaków

2015-02-16 21:12
rikrosfit
0

i jest pierwszym indeksem tablicy w sumie powinno byc chyba t[0], ale nawet jak ustawialem na zerowym indeksie to to samo bylo

Pozostało 580 znaków

2015-02-16 21:13
0
int i=0;
int j=tab[i-1];

j jest wartością elementu tab[-1] a nie indeksem ostatniego elementu

Pozostało 580 znaków

2015-02-16 21:15
0

No właśnie, t[i] jest pierwszym elementem tablicy, więc t[i-1] bynajmniej nie jest ostatnim. :P

Pozostało 580 znaków

2015-02-16 21:19
rikrosfit
0

to jaki bedzie ostatni ? co mam napisac zeby działało?

bool czy_palindrom(char tab[])
{
  //ustawiam liczniki "i" i "j" na pierwszy i ostatni znak wyrazu tab 
  int i=0, j = strlen(tab)-1; //pamiętajmy, że indeksujemy tablicę od 0

na necie znalazlem taki poczatek kodu i z tym działa tylko ze jest taki problem ze nie rozumiem tej funckji streln nie mialem tego nigdy na lekcjach i nie wiem co oznacza ten zapis, moglibyscie mi to napisac jakos zrozumialem nie chce zeby ktos mi to tlumaczyl tylko napisal prosciej jelsi mozna

Pozostało 580 znaków

2015-02-16 21:20
Liczba odpowiedzi na stronę

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