Tymek Temat założony przez niniejszego użytkownika |
Kłopot z zadaniem » 2011-01-20 00:37:01 #include <iostream> #include <conio.h> using namespace std;
int main() { srand( time( 0 ) ); int **** tablica; int a, b, c, d = 0; cout << "podaj ilosc wierszy"; cin >> a; cin >> b; cin >> c; tablica = new int ***[ d ]; for( int i = 0; i <= d; i++ ) { tablica[ i ] = new int **[ a ]; for( int j = 0; j < a; j++ ) { tablica[ i ][ j ] = new int *[ b ]; for( int q = 0; q < b; q++ ) { tablica[ i ][ j ][ q ] = new int[ c ]; } } } for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { tablica[ d ][ i ][ j ][ f ] = rand(); } } } cout << "Przez ktory wymiar gdzies dzielic tablice? A-Pierwszy , B-Drugi , C- Trzeci"; char h; cin >> h; int x; if( h == 'B' ) { cout << "na ile tablic podzielic drugi?"; cin >> x; for( int P = 0; P <= d; P++ ) { for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { if( !a % x ) { int H = a / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { for( int F = 0; F < c; F++ ) { tablica[ Q ][ I ][ J ][ F ] = tablica[ d ][ i ][ j ][ f ]; } } } } } } } } } } else if( h == 'A' ) { cout << "na ile tablic podzielic pierwszy?"; cin >> x; for( int P = 0; P <= d; P++ ) { for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { if( !b % x ) { int H = b / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { for( int F = 0; F < c; F++ ) { tablica[ Q ][ I ][ J ][ F ] = tablica[ d ][ i ][ j ][ f ]; } } } } } } } } } } else if( h == 'C' ) { cout << "na ile tablic podzielic trzeci?"; cin >> x; for( int P = 0; P <= d; P++ ) { for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { if( !c % x ) { int H = c / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { for( int F = 0; F < c; F++ ) { tablica[ Q ][ I ][ J ][ F ] = tablica[ d ][ i ][ j ][ f ]; } } } } } } } } } } for( int i = 0; i < a; i++ ) delete[] tablica[ i ]; delete[] tablica; }
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. Nie moge znaleźć błędu w tym zadaniu ...... plz ppomocy |
|
jsc |
» 2011-01-20 02:08:37 Możesz podzielić program na funkcje? |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-01-20 22:43:23 #include <iostream> #include <conio.h> using namespace std; void Dziel_pierwszy(); void Dziel_drugi(); void Dziel_trzeci(); int **** tablica; int a, b, c, d = 0; int x;
void Dziel_pierwszy() { char h; cin >> h; int x; cout << "na ile tablic podzielic pierwszy?"; cin >> x; for( int P = 0; P <= d; P++ ) { for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { if( !b % x ) { int H = b / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { for( int F = 0; F < c; F++ ) { tablica[ Q ][ I ][ J ][ F ] = tablica[ d ][ i ][ j ][ f ]; } } } } } } } } } }
void Dziel_drugi() { for( int P = 0; P <= d; P++ ) { for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { if( !a % x ) { int H = a / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { for( int F = 0; F < c; F++ ) { tablica[ Q ][ I ][ J ][ F ] = tablica[ d ][ i ][ j ][ f ]; } } } } } } } } } }
void Dziel_trzeci() { for( int P = 0; P <= d; P++ ) { for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { if( !c % x ) { int H = c / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { for( int F = 0; F < c; F++ ) { tablica[ Q ][ I ][ J ][ F ] = tablica[ d ][ i ][ j ][ f ]; } } } } } } } } } }
int main() { srand( time( 0 ) ); int **** tablica; int a, b, c, d = 0; cout << "podaj ilosc wierszy"; cin >> a; cin >> b; cin >> c; tablica = new int ***[ d ]; for( int i = 0; i <= d; i++ ) { tablica[ i ] = new int **[ a ]; for( int j = 0; j < a; j++ ) { tablica[ i ][ j ] = new int *[ b ]; for( int q = 0; q < b; q++ ) { tablica[ i ][ j ][ q ] = new int[ c ]; } } } for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { tablica[ d ][ i ][ j ][ f ] = rand(); } } } cout << "Przez ktory wymiar gdzies dzielic tablice? A-Pierwszy , B-Drugi , C- Trzeci"; char h; cin >> h; int x; if( h == 'B' ) { Dziel_drugi(); } else if( h == 'A' ) { Dziel_drugi(); } else if( h == 'C' ); { Dziel_trzeci(); } for( int i = 0; i < a; i++ ) delete[] tablica[ i ]; delete[] tablica; system( "pause" ); }
Problem polega na tym że jak już wybieram jedna z 3 funkcji to dalej program nic nie robi i konczy prace. |
|
DejaVu |
» 2011-01-20 23:46:39 Zapewne wychodzisz gdzieś poza zakres tablicy - w każdym razie jak widzę 8 zagnieżdżonych pętli czy nawet więcej to wcale się nie dziwię, że coś się w programie rypie :) Zapewne czegoś nie przemyślałeś skoro takie konstrukcje stosujesz. |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-01-21 00:18:18 co rozumieć poprzez "zagnieżdżonych" ? |
|
malan |
» 2011-01-21 00:21:36 Po prostu masz kilka pętli w pętli. for(...) { for(...) { for(...) { } } } |
|
jsc |
» 2011-01-21 00:49:25 Propozycje uproszczeń kodu: - deklaracja tablicy w postaci tablica [wysokość] [dlugosc] [szerokosc] - komórek tablicy odwoływać się jako do wskaźników, wtedy for może nie mieć zagnieżdżeń dzięki użyciu arytmetyki wskażników ( wskaznik = ((z -1) * (szerokosc * dlugosc)) * ((y - 1) * szeroksc) * x). |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-01-22 22:24:42 #include <iostream> #include <conio.h> using namespace std; void Dziel_pierwszy(); void Dziel_drugi(); void Dziel_trzeci(); int *** tablica; int a, b, c, d = 0; int x;
void Dziel_pierwszy() { char h; cin >> h; int x; cout << "na ile tablic podzielic pierwszy?"; cin >> x; for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int f = 0; f < c; f++ ) { if( !b % x ) { int H = b / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { for( int F = 0; F < c; F++ ) { tablica[ Q ][ I ][ J ] = tablica[ d ][ i ][ j ]; cout << tablica[ d ][ i ][ j ] << endl; } } } } } } } } }
void Dziel_drugi() { for( int P = 0; P <= d; P++ ) { for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { if( !a % x ) { int H = a / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { tablica[ Q ][ I ][ J ] = tablica[ d ][ i ][ j ]; } cout << tablica[ d ][ i ][ j ] << endl; } } } } } } }
void Dziel_trzeci() { for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { if( !c % x ) { int H = c / x; for( int Q = 0; Q <= H; Q++ ) { for( int I = 0; I < a; I++ ) { for( int J = 0; J < b; J++ ) { tablica[ Q ][ I ][ J ] = tablica[ d ][ i ][ j ]; cout << tablica[ d ][ i ][ j ] << endl; } } } } } } }
int main() { int *** tablica; int a, b, c, d = 0; cout << "podaj ilosc wierszy"; cin >> a; cin >> b; cin >> c; tablica = new int **[ a ]; for( int i = 0; i <= a; i++ ) { tablica[ i ] = new int *[ b ]; } for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { tablica[ i ][ j ] = new int[ c ]; } } for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { for( int k = 0; k < c; k++ ) { tablica[ i ][ j ][ k ] = rand() % 20; } } } for( int k = 0; k < c; k++ ) { cout << "z" << k + 1 << ":" << endl; for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) cout << tablica[ i ][ j ][ k ] << " "; cout << endl; } } cout << "Przez ktory wymiar gdzies dzielic tablice? A-Pierwszy , B-Drugi , C- Trzeci"; char h; cin >> h; int x; if( h == 'B' ) { Dziel_drugi(); } else if( h == 'A' ) { Dziel_drugi(); } else if( h == 'C' ); { Dziel_trzeci(); } for( int i = 0; i < a; i++ ) delete[] tablica[ i ]; delete[] tablica; system( "pause" ); }
Przebudowałem troche program ale i tak nie dzialaja funkcje nie wiem dlaczego.... |
|
« 1 » |