Czy liczba jest palindromem?

0

Cześć!
program ma za zadanie stwierdzić, czy podana przez użytkownika liczba jest palindromem czy nie. Problem pojawia się w dwóch (a może i więcej, czego nie jestem stanie stwierdzić) miejscach.
Po pierwsze:
gdy dochodzimy do warunku if (czy_kolejna='t') niezależnie czy zostanie wpisane 'n' czy 't' program będzie wciąż pobierał kolejne liczby. Dlaczego?
Po drugie:
po wejściu do pętli for program mówi, że zmienna a, która to występuje w tablicy nie została zdefiniowana. Czemu? tego też nie wiem.
Z góry wielkie dzięki za pomoc!

#include <iostream>

using namespace std;

int main()
{
    cout << "wprowadz po kolei cyfry wybranej przez Ciebie liczby," <<endl;
    cout << "a nastepnie zostanie sprawdzone, czy jest ona palindromem: "<< endl;

    int moja_liczba, i=0, tablica[100],;
    char czy_kolejna;
    do
    {
        cout<<"podaj liczbe:";
        cin>>moja_liczba;
        tablica[i]=moja_liczba;
        cout<<tablica[i]<<endl;
        cout<< "czy wprowadzic kolejna liczbe?(t/n)";
        cin>>czy_kolejna;
        if (czy_kolejna='t')
        {
            i++;
        };
    }while(czy_kolejna!='n');

    for (int a=0,i; a<i; a++, i--);
    {
        if (tablica[a]=tablica[i]);
        else
            cout<<"to nie jest palindrom!";
    }
    cout<<"to jest palindrom!"<<endl;

    return 0;
}
3
int moja_liczba, i=0, tablica[100],;

przecinek sierotka przed średnikiem

if (czy_kolejna = 't')

to jest przypisanie, nie porównanie (==)

for (int a=0,i; a<i; a++, i--);

średnik sierotka na końcu, przez co wszystko co jest dalej nie jest w pętli

for (int a=0,i;
{
    if (tablica[a]=tablica[i]);

a jaką wartość ma i?

if (tablica[a]=tablica[i]);

znowu przypisanie zamiast porównania, poza tym pusty if jest trochę bez sensu

0
for (int a=0,i;
{
    if (tablica[a]=tablica[i]);

a jaką wartość ma i?

if (tablica[a]=tablica[i]);

znowu przypisanie zamiast porównania, poza tym pusty if jest trochę bez sensu</quote>

Czy w tym przypadku 'i' nie będzie miało takiej wartości, jaką 'wyniesie' z pierwszej pętli do ? Nie rozumiem też dlaczego program krzyczy, że nie zadeklarowałem zmiennej 'a' w pętli for, skoro widac jak być, że int a = 0? Pusty if dałem po to, żeby program po prostu przeszedł do kolejnej iteracji jeżeli warunek jest spełniony. W momencie, kiedy i przestaje być mniejsze od n wychodzimy z tej pętli i jednocześnie oznaczać to będzie, że ostatnia wartość była równa pierwszej, przedostatnia drugiej itd. Aczkolwiek programuję dopiero od ok. miesiąca, więc jeżeli mój tok myślenia jest skrajnie głupi to bardzo proszę o sprostowanie ;)

0

PS. twonek, nie odpowiadaj na moje pytanie odnośnie int a = 0, niedopatrzenie w Twojej pierwszej wypowiedzi >.<

0

Czy w tym przypadku 'i' nie będzie miało takiej wartości, jaką 'wyniesie' z pierwszej pętli do?
Nie, bo deklarujesz nową zmienną o nazwie i, która przesłania tamtą zmienną w obrębie pętli for. Jak chcesz korzystać z tamtego i to nie deklaruj nowej zmiennej

for (int a=0;

Nie rozumiem też dlaczego program krzyczy, że nie zadeklarowałem zmiennej 'a' w pętli for,
Bo a nie jest w pętli for. Pętla for się skończyła razem ze średnikiem sierotką, który postawiłeś (patrz mój post).

Pusty if dałem po to
A wiesz, że zamiast

if (cos == cos2);
else 
    jakis_kod;

możesz

if (cos != cos2)
    jakis_kod;
0

dzięki ;)

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