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... 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ś? |
|
michal11 |
» 2014-12-04 01:43:43 Bo zwracasz tylko adres tej tablicy, powinieneś w pętli wypisywać każdą komórkę. |
|
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: 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? |
|
NopeDotAvi |
» 2014-12-04 07:59:43 tak robisz by były krawędzie: 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ć: for( int i = 0; i < 50; ++i ) { for( int j = 0; j < 20; ++j ) cout << map[ i ][ j ]; cout << endl; }
|
|
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 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ć? |
|
pekfos |
» 2014-12-07 19:40:51 else if( plan[ a ][ b ] = '+' || plan[ a ][ b ] = '-' );
|
Przypisania..? |
|
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: 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? |
|
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. |
|
« 1 » 2 |