Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kłopot z zadaniem

Ostatnio zmodyfikowano 2011-01-22 22:24
Autor Wiadomość
Tymek
Temat założony przez niniejszego użytkownika
Kłopot z zadaniem
» 2011-01-20 00:37:01
C/C++
#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
P-26733
jsc
» 2011-01-20 02:08:37
Możesz podzielić program na funkcje?
P-26736
Tymek
Temat założony przez niniejszego użytkownika
» 2011-01-20 22:43:23
C/C++
#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.
P-26755
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.
P-26756
Tymek
Temat założony przez niniejszego użytkownika
» 2011-01-21 00:18:18
co rozumieć poprzez "zagnieżdżonych" ?
P-26757
malan
» 2011-01-21 00:21:36
Po prostu masz kilka pętli w pętli.
C/C++
for(...)
{
    for(...) // Pętla zagnieżdżona...
    {
        for(...) // Pętla zagnieżdżona...
        {
        }
    }
}
P-26758
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).
P-26759
Tymek
Temat założony przez niniejszego użytkownika
» 2011-01-22 22:24:42
C/C++
#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....
P-26876
« 1 »
  Strona 1 z 1