Leogict Opublikowano 14 Lipca 2009 Zgłoś Opublikowano 14 Lipca 2009 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 ;) #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;} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
cantreos Opublikowano 15 Lipca 2009 Zgłoś Opublikowano 15 Lipca 2009 Nie wiem czy konieczne jest wstępne zerowanie bo chyba przecież i tak tablica "sama" się wypełnia zerami przy tworzeniu. (mogę się mylić) A i widzę że nie tylko ja wpadłem na pomysł nauki cpp w wakacje. :) I to samo źródło :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Leogict Opublikowano 15 Lipca 2009 Zgłoś Opublikowano 15 Lipca 2009 (edytowane) Nie wiem czy konieczne jest wstępne zerowanie bo chyba przecież i tak tablica "sama" się wypełnia zerami przy tworzeniu. (mogę się mylić)Mylisz się. A i widzę że nie tylko ja wpadłem na pomysł nauki cpp w wakacje. :) I to samo źródło :) Ja nie wpadłem na pomysł, wpadłem w pułapkę pod tytułem "poprawa egzaminu" :angry: A źródeł mam hohoho... :D Edytowane 15 Lipca 2009 przez Leogict Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...