Witam,
Czytam książkę "Symfonia C++ Standard". Aktualnie jestem na ćwiczeniach z rozdziału 7. Natknąłem się ostatnio na zadanie, w którym muszę za pomocą tablic znakowych stworzyć program, który będzie kopiował parzyste wyrazy stringa do jednej tablicy znakowej, a nieparzyste do drugiej. W każdej tablicy wyrazy mają być oddzielone spacjami.
Oto co napisałem:
#include <iostream>
using namespace std;
/* DZIAŁANIE PROGRAMU:
1. Robimy tablicę ze stringiem, a potem dwie puste: na wyrazy parzyste i nie parzyste.
2. Wywołujemy funkcję Kopiuj (w argumentach wysyłając adresy stworzonych wcześniej tablic),
która co drugi wyraz kopiuje do tablicy parzyste, a resztę do tablicy nieparzyste; */
void Kopiuj(char zrodlo[], char parzyste[], char nieparzyste[]);
int wywolania = 0;
int main()
{
char zdanie[] = "Pogralbym sobie w tenisa";
char tab_parzyste[100] = {};
char tab_nieparzyste[100] = {};
Kopiuj(zdanie, tab_parzyste, tab_nieparzyste);
}
void Kopiuj(char zrodlo[], char parzyste[], char nieparzyste[])
{
bool parzystosc = true; // true, bo pierwszy wyraz będzie parzysty
for(int i = 0; ; i++)
{
wywolania++;
if(parzystosc)
{
parzyste[i] = zrodlo[i];
}
else
{
nieparzyste[i] = zrodlo[i];
}
if (zrodlo[i] == 32) // 32 to kod ASCII spacji.
{
parzystosc = !parzystosc;
}
if(zrodlo[i] == 0)
{
cout << "i = " << i << endl;
break;
}
cout << wywolania << ". wywolanie: " << parzyste << " " << nieparzyste << endl;
cout << "Wielkosc parzyste: " << sizeof(parzyste) << " i wielkosc nieparzyste: " << sizeof(nieparzyste) << endl;
cout << "Zmienna bool: " << parzystosc << endl;
}
}
Niestety - pętla kopiuje tylko pierwszy wyraz, ale dzięki instrukcjom wypisania wiem, że pętla przeskakuje po wszystkich literach i wyrazach. Możecie mi wyjaśnić w czym tkwi problem?