cmilak43 Temat założony przez niniejszego użytkownika |
[C++] Program który zamienia miejscami wiersze i kolumny » 2012-04-09 18:19:33 Witam Jestem nowy więc przed wszystkim witam wszystkich kolegów (koleżanki też :D) programistów. Zadanie: Program, który dla podanych danych z tablicy dwuwymiarowej zamienia miejscami wiersze i kolumny Moje rozwiązanie: #include <iostream> using namespace std; void czytaj( int a[][ 10 ], int & m, int & n ) { cout << "Podaj ilosc kolumn: "; cin >> m; cout << "Podaj ilosc wierszy: "; cin >> n; cout << "Podaj liczby: "; for( int i = 0; i < m; i++ ) { for( int j = 0; j < n; j++ ) cin >> a[ i ][ j ]; } } void zamien( int a[][ 10 ], int m, int n ) { int c; for( int i = 0; i < m; i++ ) { for( int j = 0; j < n; j++ ) c = a[ i ][ j ], a[ i ][ j ] = a[ j ][ i ], a[ j ][ i ] = c; } c = m; m = n; n = c; } void wyswietl( int a[][ 10 ], int m, int n ) { for( int i = 0; i < m; i++ ) { for( int j = 0; j < n; j++ ) cout << a[ i ][ j ] << " "; cout << "\n"; } } int main() { int m, n, a[ 10 ][ 10 ]; czytaj( a, m, n ); zamien( a, m, n ); wyswietl( a, m, n ); } Problem: zła kolejnosc liczb.Przy 3 kolumnach i 2 wierszach (wpisane liczby 1,2,3,4,5,6) wyswietla cos takiego 1 3 2 4 5 6 a powinno 1 2 3 4 5 6 Błąd na pewno jest banalny, dlatego prosiłbym o jakąś radę Pozdrawiam |
|
Admixior |
» 2012-04-09 18:38:39 Po uno Kolorowanie składni języka C++ jak umieszcza się kod. Po drugie nie podoba mi się linijka w funkcji zamien() void zamien( int a[][ 10 ], int & m, int & n ) { int c; for( int i = 0; i < m; i++ ) { for( int j = 0; j < n; j++ ) c = a[ j ], a[ j ] = a[ j ], a[ j ] = c; } c = m; m = n; n = c; } |
|
akwes |
» 2012-04-09 18:40:39 A ja mam pytanie, co tam w ogóle robią przecinki, zamiast średników? |
|
Admixior |
» 2012-04-09 18:43:17 Co do przecinków nie ma problemu, wtedy 3 instrukcje zostaną wykonane w 1 pętli. Sam tak nie raz piszę :) |
|
cmilak43 Temat założony przez niniejszego użytkownika |
» 2012-04-09 18:56:28 noo teraz poprawiłem kod na forum...proszę zobaczcie jeszcze raz |
|
Admixior |
» 2012-04-09 19:40:14 Napisałeś tak Problem: zła kolejnosc liczb.Przy 3 kolumnach i 2 wierszach (wpisane liczby 1,2,3,4,5,6) wyswietla cos takiego
1 3 2 4 5 6
a powinno
1 2 3 4 5 6 Wg. mnie jak się wprowadzi coś takiego 1 2 3 4 5 6 To zamieniając powinno być 1 4 2 5 3 6 więc problemy są następujące: funkcja czytaj() cout << "Podaj ilosc kolumn: "; cin >> n; cout << "Podaj ilosc wierszy: "; cin >> m; funkcja zmien() powinna mieć w środkowej pętli for(int j=i .... funkcja zmien() powinna przyjmować referencję m oraz n. Bo inaczej nie ma sensu |
|
cmilak43 Temat założony przez niniejszego użytkownika |
» 2012-04-09 20:04:52 z tymi liczbami to trafna uwaga.....zmieniłem wg. twoich wskazówek to w miejsce liczb 6 i 3 wstawiło jakieś ogromne liczby i dalej są nie po kolei....natomiast przy 2 kolumnach i 3 wierszach przestawia dobrze ale liczby są nie po kolei |
|
Admixior |
» 2012-04-09 20:07:46 nie za bardzo rozumiem o co chodzi. Ja przerobiłem trochę kod. W pętlach x - to kolumny , a y - to wiersze #include <iostream> using namespace std; void czytaj( int a[][ 10 ], int & m, int & n ) { cout << "Podaj ilosc kolumn: "; cin >> n; cout << "Podaj ilosc wierszy: "; cin >> m; cout << "Podaj liczby: "; for( int y = 0; y < m; y++ ) { for( int x = 0; x < n; x++ ) cin >> a[ y ][ x ]; } } void zamien( int a[][ 10 ], int & m, int & n ) { int c; for( int y = 0; y < m; y++ ) { for( int x = y; x < n; x++ ) c = a[ x ][ y ], a[ x ][ y ] = a[ y ][ x ], a[ y ][ x ] = c; } c = m; m = n; n = c; } void wyswietl( int a[][ 10 ], int m, int n ) { for( int y = 0; y < m; y++ ) { for( int x = 0; x < n; x++ ) cout << a[ y ][ x ] << " "; cout << "\n"; } } int main() { int m, n, a[ 10 ][ 10 ]; czytaj( a, m, n ); zamien( a, m, n ); wyswietl( a, m, n ); cin.get(); cin.get(); } Zobacz czy ten kod działa jeśli nie to podaj na jakich przykładach //PS o czymś jeszcze musiałem zapomnieć |
|
« 1 » 2 3 |