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

Tablica wielowymiarowa char

Ostatnio zmodyfikowano 2014-12-07 23:41
Autor Wiadomość
dott94
Temat założony przez niniejszego użytkownika
Tablica wielowymiarowa char
» 2014-12-03 23:00:08
Witam, mam pewien problem z programem - utworzyłem tablicę znaków, która w założeniu ma być moim "układem współrzędnych", a dokładniej mówiąc jest powierzchnią na której przedstawiam zjawisko fizyczne tj. poruszanie się ładunków elektrycznych. Moim problemem jest to, że układ ten (tablica) musi mieć (przy jej wyświetlaniu) ściany. Postanowiłem pójść jak najprostszym sposobem i chcę do pól tablicy leżących na brzegach wpisać literę "X"... no i robię coś nie tak, ponieważ pojawiają mi się pewne błędy...

C/C++
int main()
{
    char tabl[ 50 ][ 20 ];
    int i, j;
    cout << endl;
    for( i = 0; i < 50; i++ )
    {
        tabl[ i ][ 0 ] = 'X';
    }
    cout << tabl << endl;
    cout << endl;

gdy coś takiego stosuję w konsoli wyświetla mi się "0x23f990", a wolałbym, żeby to wyglądało: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX". wydaje mi się, że coś robię nie tak... pomoże ktoś?
P-122133
michal11
» 2014-12-04 01:43:43
Bo zwracasz tylko adres tej tablicy, powinieneś w pętli wypisywać każdą komórkę.
P-122145
dott94
Temat założony przez niniejszego użytkownika
» 2014-12-04 02:52:32
ok. dzięki.
popoprawiałem to trochę i mam problem - wyświetlają się dziwne rzeczy. miało to wyglądać mniej więcej tak:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X                                                X
X                                                X
X                                                X
X                                                X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
a wyświetla się totalny bałagan(ale i tak jest już lepiej niż było)...
zrobiłem to w ten sposób:
C/C++
char tabl[ 50 ][ 20 ];
int i, j, k, l;
int znak;

for( i = 0; i < 50; i++ )
{
    tabl[ i ][ 0 ] = 'X';
    tabl[ i ][ 19 ] = 'X';
}
for( k = 1; k < 19; k++ )
{
    tabl[ 0 ][ k ] = 'X';
    tabl[ 49 ][ k ] = 'X';
   
}
for( j = 0; j < 50; j++ )
{
    for( l = 0; l < 20; l++ )
    {
        cout << tabl[ j ][ l ];
    }
}
cout << endl;
gdzie leży mój błąd?
P-122148
NopeDotAvi
» 2014-12-04 07:59:43
tak robisz by były krawędzie:
C/C++
char m[ 50 ][ 20 ];

for( int i = 0; i < 50; ++i )
{
    for( int j = 0; j < 20; ++j )
    {
        if( i == 0 || i == 49 || j == 0 || j == 19 )
        {
            m[ i ][ j ] = 'X';
        }
        else
             m[ i ][ j ] = ' ';
       
    }
}

tak by wypisać:

C/C++
for( int i = 0; i < 50; ++i )
{
    for( int j = 0; j < 20; ++j )
         cout << map[ i ][ j ];
   
    cout << endl;
}
P-122150
dott94
Temat założony przez niniejszego użytkownika
» 2014-12-07 19:08:14
wracając do tematu tablicy, kombinuję jak umieszczać w niej ładunki
C/C++
char plan[ 50 ][ 20 ];
int m;
for( m = 0; m < ile; m++ )
{
    int wspol_x;
    int wspol_y;
    wspol_x = rand() % 50;
    wspol_y = rand() % 20;
    if( dane[ 0 ][ m ] = 1 ) plan[ wspol_x ][ wspol_y ] = '+';
    else plan[ wspol_x ][ wspol_y ] = '-';
   
}
for( int a = 0; a < 50; a++ )
{
    for( int b = 0; b < 20; b++ )
    {
        if( a == 0 || a == 49 || b == 0 || b == 19 )
        {
            plan[ a ][ b ] = 'X';
        }
        else if( plan[ a ][ b ] = '+' || plan[ a ][ b ] = '-' );
        else plan[ a ][ b ] = ' ';
       
    }
}
for( int c = 0; c < 20; c++ )
{
    for( int d = 0; d < 50; d++ )
    {
        cout << plan[ d ][ c ];
    }
}
zrobiłem coś takiego i to nie działa i wiem też że ten zapis jest błędny:
else if( plan[ a ][ b ] = '+' || plan[ a ][ b ] = '-' );
czym mogę to zastąpić?
P-122501
pekfos
» 2014-12-07 19:40:51
C/C++
if( dane[ 0 ][ m ] = 1 )
C/C++
else if( plan[ a ][ b ] = '+' || plan[ a ][ b ] = '-' );

Przypisania..?
P-122504
dott94
Temat założony przez niniejszego użytkownika
» 2014-12-07 19:58:25
tak tak. załapałem ten podstawowy błąd.
mam teraz inny problem a mianowicie wyświetlenie tej tablicy:
C/C++
for( int c = 0; c < 50; c++ )
{
    for( int d = 0; d < 20; d++ )
    {
        cout << plan[ c ][ d ];
    }
}
zastosowałem taką pętlę do wyświetlania, ale efekt odbiega od założeń, bo zamiast prostokąta jest coś takiego:
XXXXXXXX               XX
X         XX           XX
X         XX           XX
X         XX           XX
X         XXXXXXXXXXX

co jest nie tak?
P-122508
Tomek_z_W11
» 2014-12-07 21:46:41
To zależy od tego co jest w tych tablicach które wyświetlasz, program nie robi nic innego, jak po prostu wyświetla te tablice.
P-122515
« 1 » 2
  Strona 1 z 2 Następna strona