Nie uzupełnia tablicy szyfr vinegera[c++]

0

Hej mam problem.

Zaczałem pisać program szyfrujący wg. szyfru vineger'a i natknąłem się na pewien problem. licze długość stringu tekstu szyfrowanemu(t) oraz hasła szyfrowania (s) i kiedy długość t jest wieksza od s to s powinno został wydłużone do długość t powtarzącac siebie np:
t- ALAMAKOTA
s-ABBA

to s powinna zostać uzupełnione do ABBAABBAA

poniżej zamieszcze moj fragmen kodu który mial być za to odpowiedzialny

dlt=strlen(t);
  dls=strlen(s);
  
  x=dls+1;
  
  if(dlt>dls)
  {
             
             s[x]=0;
             for(x = dls+1; x < dlt; x++)
             {
                     if(y>dls)
                               y=0;
                               
                     s[x]=s[y]; 
                     s[ x + 1 ] = 0;
                               
                     y++;          
             }
  }      

jakby ktoś mógł nakierować mnie co robie nie tak to byłbym wdzięczny

0

Moim zdaniem tutaj if(y>dls) powinno być if(y>=dls) w końcu indeksy stringa numerujemy od zera czyli jak 4-ro elementtowy to już przy 4 trzeba wyzerować (bo litery kończą się na 3). Swoją drogą nie łatwiej będzie tak:

[code]
temp= s;
while (strlen(t)>strlen(s))
s=s+temp; //nie jestem pewien czy da się tak w C, zresztą nie testowałem tego to tylko ogólna koncepcja "dopasowania"
[/code]

W ten sposób klucz i tekst będą co najmniej sobie równe.

0

wsumie racja :) nie pomyślałem o tym :D teraz tylko pytanie jak dodawać stringi do siebie ... zaraz coś poczytam wiec spoko :)

0

strcat (); rozwiązało sprawe :D temat do zamknięcia :) dziękuje bardzo

1 użytkowników online, w tym zalogowanych: 0, gości: 1