#include <iostream>
using namespace std;
void wprowadz(char*);
int dlugosc(char*);
char* znak(char* tab, char znaki);
void spacja(char* tab);
void wypisz(char* tab);
void zamiana(char* tab);
void odw_zamiana(char* tab);
bool palindrom(char* tab, int w);
int main()
{
char tekst[140] = { 0 };
char tekst2[80] = { 0 };
char palin[120] = { 0 };
char t;
cout << "Wpisz tekst : " << '\n';
cin.getline(tekst, 140);
cout << "dlugosc tekstu wynosi : " << dlugosc(tekst) << '\n';
cout << "Podaj jakiego znaku chcesz szukac : " << '\n';
cin >> t; // tu sie po naciśnięcia enter program omija następne wpisywanie tekstu
char* B = znak(tekst, t);
if (znak(tekst, t) == NULL)
{
cout << "Nie znaleziono litery" << '\n';
}
else
cout << "Wskaznik szukanej litery : " << *B << '\n';
spacja(tekst);
cout << "Tekst po usunieciu spacji : " << '\n';
wypisz(tekst);
cout << '\n';
cout << "Prosze podac tekst w ktorym male litery zostana zastopione wielkimi :" << '\n';
cin.getline(tekst2, 80);
cout << "Tekst przed zamiana : " << '\n';
wypisz(tekst2);
cout << '\n';
cout << "Tekst po zamianie : " << '\n';
zamiana(tekst2);
wypisz(tekst2);
cout << '\n';
cout << "Podaj tekst, ktory zostanie sprawdzony czy jest palimdromem : " << '\n';
cin.getline(palin, 120);
if (palindrom(palin, dlugosc(palin)) == true)
cout << "Tekst jest palimdromem.";
else
{
cout << "Tekst nie jest palimdromem.";
}
return 0;
}
int dlugosc(char* t)
{
int licznik = 0;
int i = 0;
while (t[i] != NULL)
{
licznik++;
i++;
}
return licznik;
}
char* znak(char* tab, char znaki)
{
int i = 0;
while (tab[i] != NULL)
{
if (tab[i] == znaki)
{
return &tab[i];
}
else
i++;
}
return NULL;
}
void spacja(char* tab)
{
int i = 0;
int j;
while (tab[i] != NULL)
{
if (tab[i] == ' ')
{
j = 0;
j = i;
do
{
tab[j] = tab[j + 1];
j++;
} while (tab[j] != NULL);
}
else
i++;
}
}
void wypisz(char* tab)
{
int i = 0;
while (tab[i] != NULL)
{
cout << tab[i];
i++;
}
}
void zamiana(char* tab)
{
int i = 0;
while (tab[i] != NULL)
{
if ((int)tab[i] > 96 && (int)tab[i] < 123)
{
tab[i] = (char)(tab[i] - 32);
}
i++;
}
}
bool palindrom(char* tab, int w)
{
int n = w - 1;
int i = 0;
odw_zamiana(tab);
while (i <= w / 2 && n >= w / 2)
{
if (tab[i] == ' ')
{
i++;
}
else if (tab[n] == ' ')
{
n--;
}
else if (tab[i] == tab[n])
{
i++;
n--;
}
else if (tab[i] != tab[n])
return false;
}
return true;
}
void odw_zamiana(char* tab)
{
int i = 0;
while (tab[i] != NULL)
{
if ((int)tab[i] > 64 && (int)tab[i] < 91)
{
tab[i] = (char)(tab[i] + 32);
}
i++;
}
}
Wiem, gdzie jest błąd jednak nie wiem jak go rozwiązać ;/ ( komentarz w kodzie )
gdy wpisuje do pierwszej tablicy wszystko jest ok, nast. podaje znak, którego mam szukać, ale po podaniu tego znaku program omija mi następny etap :/
Czy ktoś jest w stanie mi pomóc ?
Dodam, ze nie mogę uzywać stringa i koniecznie ta funkcja musi zwracać wskaźnik, bo takie jest życzenie prowadzącej zajęcia ;x