[C++] Podział stringu na wyrazy parzyste i nieparzyste

Z pAmIęTnIkA nIeGrZeCzNeGo AnIołkA

Witam.
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: #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;
}
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • drakonia.opx.pl
  • Copyright (c) 2009 Z pAmIÄ™TnIkA nIeGrZeCzNeGo AnIoĹ‚kA | Powered by Wordpress. Fresh News Theme by WooThemes - Premium Wordpress Themes.