Problem z zadaniem . tablice dynamiczne
Ostatnio zmodyfikowano 2010-12-06 16:38
Tymek Temat założony przez niniejszego użytkownika |
Problem z zadaniem . tablice dynamiczne » 2010-12-05 20:40:20 Czy ktoś rozumie jak zrobić to zadanie?? Zadanie 3 Zadeklaruj dynamiczną trójwymiarową tablicę elementów typu całkowitego wypełnij ją danymi a następnie podziel ją na K (podane przez użytkownika) tablic (plastrów) względem jednego z wymiarów (również podanego przez użytkownika). Uwzględnij brak możliwości równego podziału tzn. np. tab[10][12][15] nie da się względem ostatniego wymiaru na 2 tablice.
|
|
Tymek Temat założony przez niniejszego użytkownika |
» 2010-12-05 21:28:31 udało mi się stworzyć #include<iostream> using namespace std;
int main() { cout << "______________________________________________\n\n"; cout << "Tablica o wymiarach [a][b][c] gdzie:\n"; cout << "a - wymiar tablicy podany przez uzytkownika\n"; cout << "b = 4\n"; cout << "c = 6\n"; cout << "______________________________________________\n\n"; cout << "Podaj rozmiar tablicy: "; int rozm; cin >> rozm; int( * tab )[ 4 ][ 6 ] = new int[ rozm ][ 4 ][ 6 ]; for( int i = 0; i < rozm; i++ ) for( int j = 0; j < 4; j++ ) for( int k = 0; k < 6; k++ ) tab[ i ][ j ][ k ] = i + j + k; cout << endl; for( int i = 0; i < rozm; i++ ) { cout << "a" << i << "\n___" << endl; for( int j = 0; j < 4; j++ ) { for( int k = 0; k < 6; k++ ) cout << tab[ i ][ j ][ k ] << "\t"; cout << endl; } cout << endl; } int wym, n; cout << "Wzgledem ktorego wymiaru chcesz podzielic tablice? (1/2/3) "; cin >> wym; switch( wym ) { case 1: cout << "\nNa ile tablic chcesz podzielic? (Wybrany wymiar tablicy musi byc podzielny przez podana liczbe.) "; cin >> n; cout << endl; if( rozm % n == 0 ) { for( int s = 0; s < n; s++ ) { for( int i = 0; i <( rozm / n ); i++ ) { cout << "a" << i << "\n___" << endl; for( int j = 0; j < 4; j++ ) { for( int k = 0; k < 6; k++ ) cout << tab[ i ][ j ][ k ] << "\t"; cout << endl; } cout << endl; } cout << "-------------------------------\n"; } } else cout << "Blad: Wymiar tablicy nie jest podzielny przez podana liczbe.\n"; break; case 2: cout << "\nNa ile tablic chcesz podzielic? (Wybrany wymiar tablicy musi byc podzielny przez podana liczbe.) "; cin >> n; cout << endl; if( 4 % n == 0 ) { for( int i = 0; i < rozm; i++ ) { cout << "a" << i << "\n___" << endl; for( int s = 0; s < n; s++ ) { for( int j = 0; j < 4 / n; j++ ) { for( int k = 0; k < 6; k++ ) cout << tab[ i ][ j ][ k ] << "\t"; cout << endl; } cout << "--------------------------------------------\n"; } cout << endl << endl; } } else cout << "Blad: Wymiar tablicy nie jest podzielny przez podana liczbe.\n"; break; case 3: cout << "\nNa ile tablic chcesz podzielic? (Wybrany wymiar tablicy musi byc podzielny przez podana liczbe.) "; cin >> n; cout << endl; if( 6 % n == 0 ) { for( int i = 0; i < rozm; i++ ) { cout << "a" << i << "\n___" << endl; for( int j = 0; j < 4; j++ ) { for( int s = 0; s < n; s++ ) { for( int k = 0; k < 6 / n; k++ ) cout << tab[ i ][ j ][ k ] << "\t"; cout << "||\t"; } cout << endl; } cout << endl << endl; } } else cout << "Blad: Wymiar tablicy nie jest podzielny przez podana liczbe.\n"; break; } system( "pause" ); return 0; }
|
|
ison |
» 2010-12-05 22:08:59 @up wszystkie trzy wymiary mają być podane przez użytkownika a nie tylko 1 |
|
TomC |
» 2010-12-06 16:38:58 Kod dla wymiaru = 2. Wymaga drobnych modyfikacji - brak usuwania obiektów dynamicznie utworzonych.
int *** CreateTable( int x1, int x2, int x3 ) { int *** table = new int **[ x1 ]; for( int i = 0; i < x1; i++ ) *( table + i ) = new int *[ x2 ]; for( int i = 0; i < x1; i++ ) { for( int j = 0; j < x2; j++ ) { table[ i ][ j ] = new int[ x3 ]; for( int ij = 0; ij < x3; ij++ ) { table[ i ][ j ][ ij ] = i * j - ij; } } } return table; }
int main() { int x1 = 100, x2 = 100, x3 = 100; int *** table = CreateTable( x1, x2, x3 ); int split = 20; int **** tables = new int ***[ split ]; for( int i = 0; i < split; i++ ) { tables[ i ] = CreateTable( x1, x2 / split, x3 ); for( int a = 0; a < x1; a++ ) { for( int b = 0; b < x2 / split; b++ ) { for( int ab = 0; ab < x3; ab++ ) { tables[ i ][ a ][ b ][ ab ] = table[ a ][ b + i *( x2 / split ) ][ ab ]; } } } } return 0; }
|
|
« 1 » |