Skocz do zawartości
Leogict

[c++] Podział Stringu Na Wyrazy Parzyste I Nieparzyste

Rekomendowane odpowiedzi

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;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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 :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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 przez Leogict

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...