Aiuto esercizio array 3 dimensioni

di il
2 risposte

Aiuto esercizio array 3 dimensioni

Ciao! Allora io devo creare un programma che legga dal file input un intero n_el tale che 0<n_el<=40.
Dopo di che legge n_el interi in X per strato. In generale quindi dopo questa lettura l'array non sarà completamente definito.
Dopodichè si deve leggere una coppia( carattere, intero) che individua una fetta e poi stampa la fetta richiesta prestando attenzione a stampare solo gli elementi definiti. Infatti si possono avere fette che non contengano alcun valore definito, ed in tal caso bisogna stampare sul file output la frase " fetta vuota"

ecco il mio codice, però praticamente dopo l'inizializzazione dell'array, non va avanti e non mi legge char dal file input.

Il mio IN ad esempio potrebbe essere il seguente:

30
1 2 1 0 0 0 2 2 3 1
0 0 1 1 1 1 1 2 1 0
1 1 0 1 0 0 2 2 2 0
1 2 2 2 2 2 1 1 2 1

H 1
ed io voglio che vengano letti i primi 30 valori e gli altri impostati a 0 ed in seguito stampare le righe H 1. Però il codice si blocca prima..
Qualcuno può aiutarmi a risolverlo?
Grazie mille

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream IN("input.txt");
ofstream OUT("output");
int X[2][4][5];
if ( IN && OUT)
{
 int n_el, idx_el=1;
 IN>>n_el;
 for( int i=0; i<2; i++)
 {
    for(int j=0; j<4; j++)
        {
            for(int z=0; z<5; z++)
            {
               while(idx_el<n_el)
               {
                IN>> X[i][j][z];
                idx_el++;
               }
            }
        }
 }
                char ch;
                int x;
                IN>> ch;
                cout<<ch;
                    if(ch=='H')
                    { IN>>x;
                            for(int i=0;i<2;i++)
                            {
                                for(int z=0;z<5;z++)
                                {
                                    while(idx_el<n_el)
                                    {
                                    OUT<<X[i][x][z]<<" ";
                                    idx_el++;
                                    }
                                }
                            OUT<<"  "<<endl;
                            }

                    }
                        if(ch=='V')
                        {int y;
                         IN>>y;

                                    for(int i=0;i<2;i++)
                                    {
                                        for(int j=0;j<4;j++)
                                        {
                                        OUT<<X[i][j][y]<<" ";
                                        }
                                        OUT<<"  "<<endl;
                                    }


                        }


}

else

    cout<<"errore con i files";
IN.close(); OUT.close();


}


2 Risposte

  • Re: Aiuto esercizio array 3 dimensioni

    Così tenti di leggere 30x2x4x5 numeri dal file ... ovvero 1200 numeri ...

    Spiega meglio il problema perché non si capisce bene cosa vuoi fare ...

    Non si capisce cosa intendi con "per strato" ... cosa intendi con "fetta" e cosa sia H 1...
  • Re: Aiuto esercizio array 3 dimensioni

    Ok allora questo è il primo esercizio che io ho gia fatto e da cui devo riprendere poi il secondo

    Un array a 3 dimensioni può essere visto come una torta e le torte si fanno a fette,
    quindi questo esercizio parla di fette. Spieghiamo cosa siano queste fette con un
    esempio:
    Esempio: assumiamo un array int X[2][4][5], quindi sarà costituita da 2 strati 4 x 5.
    Assumiamo che questi siano i due strati:
    strato 0 ---strato 1
    1 2 1 0 0 --- 0 2 2 3 1
    0 0 1 1 1 --- 1 1 2 1 0
    1 1 0 1 0 --- 0 2 2 2 0
    1 2 2 2 2 --- 2 1 1 2 1
    X ha 4 fette orizzontali e 5 fette verticali (H-fette e V-fette) La H-fetta di indice 0 è
    costituita dalle righe 0 dei 2 strati, quindi sarà:
    1 2 1 0 0
    0 2 2 3 1
    Mentre la H-fetta di indice 2 sarà:
    1 1 0 1 0
    0 2 2 2 0
    Invece le V-fette sono costituite dalle colonne degli strati. Per esempio, la V-fetta di
    indice 2 è:
    1 1 0 2
    2 2 2 1
    Esercizio 1: scrivere un programma che apra i file "input" e "output", dichiari un
    array int A[2][4][5] e legga da input 40 valori inserendoli in A per strati ed ogni strato
    viene riempito per righe. Quindi alla fine della lettura tutti gli elementi di A sono
    definiti.


    Ora dopo aver fatto questo devo fare il secondo in questione che mi chiede la seguente:

    Questo esercizio è una modifica dell'esercizio 1 di questa stessa settimana. La
    differenza rispetto all'esercizio 1 è che ora il programma deve leggere da "input" un
    intero n_el (numero_elementi) tale che 0<n_el<=40, dopo di che legge n_el interi in
    A per strato (come per l'esercizio 1). In generale quindi dopo questa lettura A non
    sarà completamente definito. Dopo questa lettura, l'esercizio continua come
    nell'esercizio 1: si deve leggere una coppia (carattere, intero) che individua una fetta
    e poi stampare la fetta richiesta avendo cura di stampare solo gli elementi definiti. Si
    deve fare attenzione al fatto che in questo esercizio è possibile che la fetta richiesta
    possa non contenere alcun elemento definito, nel qual caso il programma dovrà
    stampare su "output" la frase: "V/H fetta x/y vuota".


    Però sinceramente non ho nemmeno una vaga idea di come impostarlo...
Devi accedere o registrarti per scrivere nel forum
2 risposte