Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] 'Zapętlenie' tablicy do wymaganej długości

Ostatnio zmodyfikowano 2012-12-18 00:52
Autor Wiadomość
Luk_Jab
Temat założony przez niniejszego użytkownika
[C++] 'Zapętlenie' tablicy do wymaganej długości
» 2012-12-17 22:39:03
Witam, mam straszny problem, z jedną wydawałoby się banalną czynnością. Otóż program ma wczytać znaki z klawiatury do tablicy s1, następnie wczytać znaki do tablicy s2. Jeśli ilość znaków w tablicy s2 jest większa od ilości znaków s1, to ucinam ją, jeśli jest mniejsza to mam ją zapętlić, tak długo aż jej długość będzie równa długości s1. I próbuję to zrobić na wszystkie możliwe sposoby i nie idzie. Pętla for w ogóle jej nie zapętla, pętla while zapętla ją do jakiś długości wziętych z kosmosu. Męczę się z tym już dłuższy czas i nie wiem co robię źle. Mój kod:

C/C++
#include <iostream>

using namespace std;


int main()
{
    char s1[ 120 ], s2[ 120 ];
    cout << "Podaj ciag s1 : " << endl;
    cin.getline( s1, 120 );
    int dlugosc_s1 = strlen( s1 );
   
    cout << "Podaj ciag s2: " << endl;
   
    cin.getline( s2, dlugosc_s1 + 1 ); // Tutaj automatycznie skracam s2, do długości tablicy s1
    int dlugosc_s2 = strlen( s2 );
   
    cout << " Dlugosc S1 : " << dlugosc_s1 << endl;
    cout << " Dlugosc S2 : " << dlugosc_s2 << endl;
   
   
    int j = 0, k = 0;
    while(( k + dlugosc_s2 ) <= dlugosc_s1 )
    {
        if( s2[ j ] == '\0' )
             j = 0; // po dojechaniu do konca s2 zeruje licznik, i jade od nowa
       
        s2[ k + dlugosc_s2 ] = s2[ j ];
        j++;
        k++;
    }
   
   
    cout << "Dlugosc S2 po zapetleniu: " << strlen( s2 ) << endl;
    cout << s2 << endl;
}


Program działa, ale dzieją się jakieś straszne rzeczy, przykładowo wypluł:
Dlugosc S1 : 14
Dlugosc S2 : 5
Po Zapetleniu
Dlugosc S2: 142

Skąd 142?

Byłbym bardzo wdzięczny za pomoc.

P-71353
jsc
» 2012-12-17 22:47:15
Nie lepiej to zrobić na stringach i łączenie realizować przez operator +?
P-71357
Luk_Jab
Temat założony przez niniejszego użytkownika
» 2012-12-18 00:17:02
Problem jest tego rodzaju, że mi ten program nie jest potrzebny sam w sobie, on na tych obu tablicach realizuje później funkcję, którą umiem zrealizować tylko na tablicach. Funkcja działa, i wszystko jest ok, ale s2 musi być zapętlone do długości s1. Tylko nie mam zielonego pojęcia dlaczego to nie wychodzi, teoretycznie to powinno śmigać...
P-71362
Luk_Jab
Temat założony przez niniejszego użytkownika
» 2012-12-18 00:52:04
Dobra, oszukałem sam siebie :) Dalej zapętla mi ten s2, do dziwnych długości, ale kazałem mu wstawić nulla na *(s2+dlugosc_s1), i jakoś to hula.
P-71363
« 1 »
  Strona 1 z 1