luuuzik Temat założony przez niniejszego użytkownika |
[C++] Tablice dwuwymiarowe, zagnieżdżanie pętli FOR » 2014-12-07 18:38:47 Witam. Mam mały problem odnośnie zagnieżdżania pętli FOR. Chciałem sobie narysować trójkąt z "jedynek" i "zer", które będą oparte na tablicy dwuwymiarowej trojkat[3][5]. Trójkąt ten wyglądać miałby następująco: 00 100 0 1110 11111W tablicy powinien on się zapisać następująco: [0][0]=0 [0][1]=0 [0][2]=1[0][3]=0 [0][4]=0 [1][0]=0 [1][1]=1 [1][2]=1 [1][3]=1[1][4]=0 [2][0]=1 [2][1]=1 [2][2]=1 [2][3]=1 [2][4]=1#include <iostream> using namespace std;
void rysowanie_trojkata( int trojkat[][ 5 ], int a, int b ) { for( a = 0; a < 5; a++ ) { cout << "\n" << endl; for( b = 0; b < 5; b++ ) { trojkat[ a ][ b ]; cout << "1"; } } } int main() { int liczba, i, j, a, b; int trojkat[ 5 ][ 5 ]; cout << "[1]Trojkat" << endl; cout << "Co ci wyswietlic?" << endl; cin >> liczba; switch( liczba ) { case 1: { rysowanie_trojkata( trojkat, a, b ); break; } } return 0;
Czy moglibyście mi podpowiedzieć jak poprawić funkcję rysowanie_trojkata, aby mogła na zmianę uzupełniać tablicę zerami i jedynkami jak wypisałem powyżej? |
|
pekfos |
» 2014-12-07 18:41:05 Czy moglibyście mi podpowiedzieć |
Użyj gdzieś wartości a. |
|
luuuzik Temat założony przez niniejszego użytkownika |
» 2014-12-08 22:39:47 Zrobiłem to w oparciu o funkcje ale coś mi źle wyszło: #include <iostream> using namespace std;
void funkcja000( int trojkat[][ 5 ], int a, int b ) { for( b = 0; b < 2; b++ ) trojkat[ a ][ b ] = 0; } void funkcja001( int trojkat[][ 5 ], int a, int b ) { for( b = 3; b < 5; b++ ) trojkat[ a ][ b ] = 0; } void funkcja100( int trojkat[][ 5 ], int a, int b ) { for( b = 0; b < 1; b++ ) trojkat[ a ][ b ] = 0; } void funkcja101( int trojkat[][ 5 ], int a, int b ) { for( b = 4; b < 5; b++ ) trojkat[ a ][ b ] = 0; } void funkcja01( int trojkat[][ 5 ], int a, int b ) { for( b = 2; b == 2; b++ ) trojkat[ a ][ b ] = 1; } void funkcja110( int trojkat[][ 5 ], int a, int b ) { for( b = 1; b < 4; b++ ) trojkat[ a ][ b ] = 1; } void funkcja210( int trojkat[][ 5 ], int a, int b ) { for( b = 0; b < 5; b++ ) trojkat[ a ][ b ] = 1; } void wiersz_pierwszy( int trojkat[][ 5 ], int a ) { funkcja000; funkcja001; } void wiersz_drugi( int trojkat[][ 5 ], int a ) { funkcja100; funkcja101; } void wiersz_trzeci( int trojkat[][ 5 ], int a ) { funkcja210; } void tworzenie_trojkata( int trojkat[][ 5 ] ) { wiersz_pierwszy; wiersz_drugi; wiersz_trzeci; } void rysowanie_trojkata( int trojkat[][ 5 ], int a, int b ) { for( a = 0; a < 3; a++ ) cout << "\n"; for( b = 0; b < 5; b++ ) cout << trojkat[ a ][ b ]; } int main() { int liczba = 1, i, j, a, b; int trojkat[ 5 ][ 5 ]; cout << "[1]Trojkat" << endl; switch( liczba ) { case 1: { tworzenie_trojkata( trojkat ); rysowanie_trojkata( trojkat, a, b ); break; } } return 0; }
|
|
stryku |
» 2014-12-08 23:34:06 Źle te funkcje wywołujesz |
|
darko202 |
» 2014-12-08 23:52:09 na początku w procedurze void rysowanie_trojkata( int trojkat[][ 5 ], int a, int b ) { for( a = 0; a < 5; a++ ) { cout << "\n" << endl; for( b = 0; b < 5; b++ ) { trojkat[ a ][ b ]; cout << "1"; } } }
zapomniałeś o decyzji w zależności od wartości tabeli http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Instrukcja-warunkowa-if-else/16 if( trojkat[ a ][ b ] == 0 ) { ... } else { ...} w kolejnej odsłonie mnożysz funkcje które robią to samo - wystarczy Ci jedna wyświetlająca odpowiedni fragment tabeli; np. void Fun(tab[, wiersz startowy, wiersz końcowy, kolumna startowa, kolumna końcowa) |
|
« 1 » |