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

Losowo umieszczona spacja przy wypisywaniu

Ostatnio zmodyfikowano 2015-03-30 19:45
Autor Wiadomość
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:

C/C++
#include <iostream>
// Copyright
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;
}
P-129416
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:
C/C++
#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;
}
P-129582
« 1 »
  Strona 1 z 1