Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

[C++] Doklejanie stringu do już istniejącego

Moderatorzy: Jacek Bogusz, Moderatorzy

Awatar użytkownika
Darlington
-
-
Posty: 574
Rejestracja: 12 lis 2007, o 18:18
Lokalizacja: stąd!

[C++] Doklejanie stringu do już istniejącego

Postautor: Darlington » 14 lip 2009, o 21:29

Witam.
Napisałem program z Symfonii C++ Standard, wyd. 3 z 2008r, ćwiczenie XXIII/218, w skrócie: mamy napisać funkcję, która do końca stringu będącego w jednej tablicy dołączy string będący w innej tablicy, funkcja powinna przerwać w przypadku zapełnienia całej tablicy.

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 dolacz(char docelowa[], int rozmiar_docelowej, char zrodlowa[]); int main() { const int rozmiar=30; // rozmiar tablicy docelowej char tablica_docelowa[rozmiar]={"Czym sie rozni kaczka"}; char tablica_zrodlowa[]={" od labedzia?"}; dolacz(tablica_docelowa, rozmiar, tablica_zrodlowa); // here we go ;) return 0; } //*********************************************************************** //funkcja do dolaczania stringu z tablicy zrodlowej do tablicy docelowej: //*********************************************************************** void dolacz(char docelowa[], int rozmiar_docelowej, char zrodlowa[]) { int i=0,j=0,licznik_doc=0,licznik_zro=0; while(docelowa[i++]) ++licznik_doc; //ilosc liter w tablicy docelowej, od tego indeksu zaczynamy doklejanie while(zrodlowa[j++]) ++licznik_zro; //ilosc liter w tablicy zrodlowej for(int i=licznik_doc; i<licznik_doc+licznik_zro; i++) { if(i>=rozmiar_docelowej) break; // zapelniona cala tablica, przerywamy dzialanie funkcji docelowa[i]=zrodlowa[i-licznik_doc]; // wlasciwe doklejanie } }

Awatar użytkownika
piotr_go
-
-
Posty: 159
Rejestracja: 27 sie 2004, o 12:18
Lokalizacja: far far away

Postautor: piotr_go » 16 lip 2009, o 08:56

Zapomniałeś o zakończeniu tablicy docelowej zerem.

Awatar użytkownika
Darlington
-
-
Posty: 574
Rejestracja: 12 lis 2007, o 18:18
Lokalizacja: stąd!

Postautor: Darlington » 16 lip 2009, o 13:09

Terminowanie zerem w przypadku przepełnienia:

Kod: Zaznacz cały

#include <iostream> using namespace std; void dolacz(char docelowa[], int rozmiar_docelowej, char zrodlowa[]); int main() { const int rozmiar=30; // rozmiar tablicy docelowej char tablica_docelowa[rozmiar]={"Czym sie rozni kaczka"}; char tablica_zrodlowa[]={" od labedzia?"}; dolacz(tablica_docelowa, rozmiar, tablica_zrodlowa); // here we go Wink return 0; } //*********************************************************************** //funkcja do dolaczania stringu z tablicy zrodlowej do tablicy docelowej: //*********************************************************************** void dolacz(char docelowa[], int rozmiar_docelowej, char zrodlowa[]) { int i=0,j=0,licznik_doc=0,licznik_zro=0; while(docelowa[i++]) ++licznik_doc; //ilosc liter w tablicy docelowej, od tego indeksu zaczynamy doklejanie while(zrodlowa[j++]) ++licznik_zro; //ilosc liter w tablicy zrodlowej for(int i=licznik_doc; i<licznik_doc+licznik_zro; i++) { if(i>=rozmiar_docelowej) { docelowa[i-1]=0; // terminowanie zerem w przypadku przedwczesnego zapełnienia tablicy break; // zapelniona cala tablica, przerywamy dzialanie funkcji } docelowa[i]=zrodlowa[i-licznik_doc]; // wlasciwe doklejanie }

Wróć do „PLD/FPGA i inne zagadnienia techniki cyfrowej”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości