Firestone Posted November 24, 2011 Report Share Posted November 24, 2011 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 to comment Share on other sites More sharing options...
gus Posted November 24, 2011 Report Share Posted November 24, 2011 Ł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 to comment Share on other sites More sharing options...
Firestone Posted November 24, 2011 Author Report Share Posted November 24, 2011 Wielkie dzięki za pomoc, wszystko teraz działa jak powinno. Temat do zamknięcia. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.