Napisałem program z Symfonii C++ Standard, wyd. 3 z 2008r, ćwiczenie XVIII/217, w skrócie: mamy w tablicy jakiś tekst i mamy napisać funkcję rozdzielającą poszczególne wyrazy do tablicy z nieparzystymi wyrazami i parzystymi, w obu przypadkach oddzielonymi spacją.
Jak zwykle będę wdzięczny za uwagi, spostrzeżenia, komentarze i wskazówki.
Ćwiczenie było po rozdziale o tablicach, więc nie piszcie o żadnych vectorach, klasach itp
Kod: Zaznacz cały
#include <iostream>
using namespace std;
void grupuj(char zrodlo[], char parz[], char nieparz[]);
int rozmiar(char zrodlo[]);
int main()
{
char tablica[]={"Symfonia C++ to najlepsza ksiazka na poczatek przygody z jezykiem C++ moim zdaniem"}; // dany string
char nieparzyste[80]={}; // wstepne zerowanie
char parzyste[80]={}; // -||-
grupuj(tablica, parzyste, nieparzyste); //here we go ;)
cout << tablica << "\nRozmiar stringu: " << rozmiar(tablica) << "\n\n\nNieparzyste:" << endl;
for(int i=0; i<80; i++) // wypisanie wyrazow nieparzystych
{
cout << nieparzyste[i];
}
cout << endl << "Parzyste:" << endl;
for(int i=0; i<80; i++) // wypisanie wyrazow parzystych
{
cout << parzyste[i];
}
cout << "\n\n\n";
return 0;
}
//*********************************************************************
// funkcja grupujaca w parzyste i nieparzyste wyrazy oddzielone spacja:
//*********************************************************************
void grupuj(char zrodlo[], char parz[], char nieparz[])
{
int licznik_sp=1,indeks_nieparz=0, indeks_parz=0, size=rozmiar(zrodlo);
for(int i=0; i<size; i++) // petla po literach stringu
{
if(licznik_sp%2) // sprawdzamy parzystosc/nieparzystosc liczby dotychczasowych spacji
{
nieparz[indeks_nieparz++]=zrodlo[i];
}
else
{
parz[indeks_parz++]=zrodlo[i];
}
if(zrodlo[i]==32) ++licznik_sp; // spacja! nastepny wyraz! (kod ASCII spacji to 32)
}
}
//*********************************************************************
//funkcja zwracajaca rozmiar stringu w tablicy zrodlowej:
//*********************************************************************
int rozmiar(char zrodlo[])
{
int rezultat=0,i=0;
while(zrodlo[i++]) ++rezultat; //dopoki istnieja jakies litery w danym stringu, zwiekszaj licznik
return rezultat;
}