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

Leogict
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 21 mar 2008, o 20:01
Płeć: Mężczyzna
Podziękował: 14 razy

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

Post autor: Leogict »

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    }} 
Ostatnio zmieniony 15 lip 2009, o 14:25 przez Leogict, łącznie zmieniany 1 raz.
Awatar użytkownika
czeslaw
Użytkownik
Użytkownik
Posty: 2156
Rejestracja: 5 paź 2008, o 22:12
Płeć: Mężczyzna
Lokalizacja: Politechnika Wrocławska
Podziękował: 44 razy
Pomógł: 317 razy

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

Post autor: czeslaw »

Przepraszam za głupie pytanie.
Jaki jest cel? Czego oczekujesz?
Leogict
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 21 mar 2008, o 20:01
Płeć: Mężczyzna
Podziękował: 14 razy

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

Post autor: Leogict »

Jak zwykle będę wdzięczny za uwagi, spostrzeżenia, komentarze i wskazówki.
Awatar użytkownika
conseil
Użytkownik
Użytkownik
Posty: 194
Rejestracja: 11 lip 2009, o 22:00
Płeć: Mężczyzna
Podziękował: 80 razy
Pomógł: 4 razy

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

Post autor: conseil »

while(docelowa[i++]) ++licznik_doc
Linijkę niżej powinieneś chyba napisać
licznik_doc--
bo potem znajdziesz się na znaku null. Jutro obczaje kod.
Leogict
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 21 mar 2008, o 20:01
Płeć: Mężczyzna
Podziękował: 14 razy

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

Post autor: Leogict »

Poprawiona wersja: (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        } 
Awatar użytkownika
conseil
Użytkownik
Użytkownik
Posty: 194
Rejestracja: 11 lip 2009, o 22:00
Płeć: Mężczyzna
Podziękował: 80 razy
Pomógł: 4 razy

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

Post autor: conseil »

Dzisiaj wieczorkiem też napiszę i sobie porównamy
ODPOWIEDZ