[C++]Obrócenie tablicy w prawo
Ostatnio zmodyfikowano 2013-11-06 18:13
waldorm Temat założony przez niniejszego użytkownika |
[C++]Obrócenie tablicy w prawo » 2013-11-06 02:11:30 Mam napisać program który wczytuje tablice dwu wymiarowa i potem wypluwa ją obróconą o 90 stopni w prawo czyli przykład: Wejście: 1 2 3 4 5 6 7 8 9 10 11 12 Wyjście: 9 5 1 10 6 2 11 7 3 12 8 4 I jest taki problem, że mój program gdy jest mniej wierszy od kolumn się zupełnie wysypuje, a gdy jest więcej kolumn niż wierszy to ucina pierwszy rząd po obróceniu... W czym problem? Mój kod: #include <iostream>
using namespace std;
int main() { int w, k; cin >> w >> k; int ** tab = new int *[ w ]; if( w >= 2 && k <= 100 ) { for( int i = 0; i < w; ++i ) { tab[ i ] = new int[ k ]; for( int j = 0; j < k; ++j ) cin >> tab[ i ][ j ]; } for( int i = w; i > 0; --i, cout << endl ) for( int j = k; j > 0; --j ) { if( tab[ j - 1 ][ i - 1 ] != 0 ) cout << tab[ j - 1 ][ i - 1 ] << '\t'; } for( int i( 0 ); i < w; ++i ) delete[] tab[ i ]; delete[] tab; tab = NULL; } return 0; } |
|
den93 |
» 2013-11-06 05:16:32 Masz błędnie zrobione pętle for odpowiedzialne za przekręcanie prostokąta, poza tym wszystko chyba jest dobrze zrobione. Może to ci pomoże w napisaniu odpowiedniego algorytmu: W tabelce 'ekran' lewa kolumna to jest numer linii w konsoli a prawa to numer liczby (kolumna). Stałe w i k charakteryzują tablice w pamięci. |
|
docentpp |
» 2013-11-06 08:45:55 Zakładając , że mamy macierz dwuwymiarową tab[w][k]; w=ilość wierszy, k=ilość kolumn; to obrót w prawo o 90 stopni : for( int j = 0; j < k; j++ ) { for( int i = w - 1; i >= 0; i-- ) cout << tab[ i ][ j ] << " "; cout << endl; }
|
|
waldorm Temat założony przez niniejszego użytkownika |
» 2013-11-06 18:13:51 Dzięki za pomoc. |
|
« 1 » |