Losowo umieszczona spacja przy wypisywaniu
Ostatnio zmodyfikowano 2015-03-30 19:45
Hunteerrq Temat założony przez niniejszego użytkownika |
Losowo umieszczona spacja przy wypisywaniu » 2015-03-29 14:40:40 Witam, chciałem napisać program szyfrujący, wczytujący wyraz i tak zwany "płotek", a dokładnie jego wysokość po czym go szyfruje. Mam cały program jednak przy wypisywaniu pojawia się odstęp w losowym miejscu w wyrazie. Próbowałem dać warunek, iż jeżeli aktualne miejsce w tablicy ==' ' to aby nic nie robił, jednak w tym momencie dalej jest przerwa i ucina mi jedną literkę. Tutaj implementacja: #include <iostream>
using namespace std; void szyfr( char a[], int i, int h ) { int xxxx = h; int c = 1; for( int j = 0; j < i; j = j + 2 * h - 2 ) { cout << a[ j ]; } int hh = h - 1; int l = hh -( h - 2 ); int p = hh +( h - 2 ); for(;; ) { if( l == h - 1 || p == h - 1 ) { break; } else { while( l <= i || p <= i ) { if( l <= i ) { cout << a[ l ]; } if( p <= i ) { cout << a[ p ]; } l = l + 2 *( h - 1 ); p = p + 2 *( h - 1 ); } } l = hh -( h - 2 ) + c; p = hh +( h - 2 ) - c; c++; } for( int o = h - 1; o < i; o = o + 2 *( h - 1 ) ) { cout << a[ o ]; } } int main() { char a[ 30 ]; cin >> a; int h; cin >> h; int i; for( i = 0; a[ i ] != '\0'; i++ ) { } szyfr( a, i, h ); return 0; }
|
|
Hunteerrq Temat założony przez niniejszego użytkownika |
» 2015-03-30 19:45:33 Postaram się trochę ułatwić znaczenie kodu. 1 pętla wypisuje znaki co wierzchołek. 2 pętla wypisuje znaki od lewej do prawej i kiedy wychodzi po za długość płotek przesuwa się o 1. 3 pętla wypisuje te dolne. np. słowo informatyka płotek 4 będzie i a n m t f r y a o k czytana od lewej do prawej będzie :ianmtfryaok Program wypisuje ten wyraz jednak ze spacją w środku w losowym miejscu. Napisałem kod aby przepisało to do nowej tablicy jednak ucina mi wiele znaków, również nie wiem co to powoduje: #include <iostream> using namespace std; void szyfr( char a[], int i, int h, char po[] ) { int rozm = 0; int c = 1; for( int j = 0; j < i; j = j + 2 * h - 2 ) { po[ rozm ] = a[ j ]; rozm++; } int hh = h - 1; int l = hh -( h - 2 ); int p = hh +( h - 2 ); for(;; ) { if( l == h - 1 || p == h - 1 ) { break; } else { while( l <= i || p <= i ) { if( l <= i ) { po[ rozm ] = a[ l ]; rozm++; } if( p <= i ) { po[ rozm ] = a[ p ]; rozm++; } l = l + 2 *( h - 1 ); p = p + 2 *( h - 1 ); } } l = hh -( h - 2 ) + c; p = hh +( h - 2 ) - c; c++; } for( int o = h - 1; o < i; o = o + 2 *( h - 1 ) ) { po[ rozm ] = a[ o ]; rozm++; } } int main() { char a[ 1000 ]; char po[ 1000 ]; cout << "Podaj ciag znakow do zaszyfrowania: "; cin >> a; cout << endl; cout << "Podaj wysokosc szyfru: "; int h; cin >> h; cout << endl; if( h < 1 ) { while( h < 1 ) { cout << "Bledna h, wprowadz jeszcze raz: "; cin >> h; } } if( h == 1 ) { cout << a; } else { int i; for( i = 0; a[ i ] != '\0'; i++ ) { } szyfr( a, i, h, po ); cout << po; } return 0; }
|
|
« 1 » |