Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Firestone

Szyfr przestawieniowy - C++

Polecane posty

Witam wszystkich.

Proszę o pomoc w poprawieniu programu, który znalazłem w internecie i trochę przerobiłem.

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{

int dl,k,n;

char tab[8][8];

char szyfr[64],zdanie[64];

n=2;

cout<<"Podaj zdanie"<<endl;

cin.getline(zdanie,sizeof(zdanie));

dl=0;

while(zdanie[dl]!=0)

dl++;

while(dl>(n*n))

n++;

k=0;

for(int i=0;i<n;i++)

for(int j=0;j<n;j++)

{

if (k<dl)

{

tab[j]=zdanie[k];

k++;

}

else

{

tab[j]=' ';

k++;

}

}

k=0;

for(int i=0;i<=n;i++)

for(int j=0;j<n;j++)

{

szyfr[k]=tab[j];

k++;

}

cout<<endl;

cout<<"Szyfr: "<<szyfr;

cin.ignore();

getchar();

return 0;

}

Program ma zaszyfrować 64 znakowe zdanie (wpisuje znaki w tablice dwuwymiarową poziomo, a następnie ma oddać tekst odczytywany pionowo).

Robi to dobrze, lecz potem zaczyna wypisywać jakieś głupoty i nie potrafię znaleźć w czym tkwi problem.

Z góry dzieki za pomoc.

Link do komentarza
Udostępnij na innych stronach

Łańcuchy znaków w C/C++ są zrobione tak, że muszą kończyć się znakiem '\0'. Musisz zadeklarować tablice szyfr i zdanie jako 65-elementowe i przed wyświetleniem wyniku dopisać:

szyfr[64] = 0;

zdanie[64] = 0;

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...