Oppure

Loading
23/11/20 19:25
enneZeta
Postato originariamente da AldoBaldo:
Non so se comprenda argomenti che enneZeta non ha ancora affrontato, però potrebbe essere una soluzione anche quella di basare il programma su cicli che possano operare su quantità di vettori e di elementi per vettori più semplicemente modificabili.

Ad esempio, in questo caso basterebbe modificare g_qVett, g_qMinVal e g_qMaxVal per adattare il programma a una gamma di vettori più flessibile...

#include <iostream>
using namespace std;

// costanti globali (volendo si potrebbero anche usare dei #define)
const int g_qVett   = 2; // quantita' dei vettori da trattare
const int g_qMinVal = 1; // quantita' minima dei valori ammessi in ogni vettore
const int g_qMaxVal = 9; // quantita' massima dei valori ammessi in ogni vettore

// prototipi
bool richiesta_dimensioni_vettore( int idVett, int *qEl );
bool richiesta_dati_vettore( int idVett, int *v, int qEl );
bool visualizzazione_dati_vettore( int idVett, const int *v, int qEl );

int main (){
    int v[g_qVett][g_qMaxVal]; // i vettori
    int qEl[g_qVett]={0};      // la quantita' degli elementi nei vettori
    int i;

    for( i=0; i<g_qVett; ++i )
        if( !richiesta_dimensioni_vettore(i+1,qEl+i) )
            return 0; // errore gia' segnalato dalla funzione

    for( i=0; i<g_qVett; ++i )
        if( !richiesta_dati_vettore(i+1,v[i],qEl[i]) )
            return 0; // errore gia' segnalato dalla funzione

    for( i=0; i<g_qVett; ++i )
        if( !visualizzazione_dati_vettore(i+1,v[i],qEl[i]) )
            return 0; // errore gia' segnalato dalla funzione

    return 0;
}

bool richiesta_dimensioni_vettore( int idVett, int *qEl ) {
    if( idVett<1 || NULL==qEl ) { // verifica parametri
        cout<<&amp;quot;Errore in richiesta_dimensioni_vettore():&amp;quot;<<endl;
        // verifica i parametri, segnalando gli errori se qualcosa non va
        return false; // parametri non validi
    }

    // chiede le dimensioni del vettori, insistendo
    // finche' non viene fornita una risposta adeguata

    return true;
}

bool richiesta_dati_vettore( int idVett, int *v, int qEl ) {
    if( idVett<1 || NULL==v || qEl<1 ) { // verifica parametri
        cout<<&amp;quot;Errore in richiesta_dati_vettore():&amp;quot;<<endl;
        // verifica i parametri, segnalando gli errori se qualcosa non va
        return false; // parametri non validi
    }
    
    // in un ciclo che si ripete qEl volte, riceve i valori
    // da inserire nell'array, ripetendo le richieste ogni
    // volta che viene inserito un valore non accettabile

    return true;
}

bool visualizzazione_dati_vettore( int idVett, const int *v, int qEl ) {
    if( idVett<1 || NULL==v || qEl<1 ) { // verifica parametri
        cout<<&amp;quot;Errore in visualizzazione_dati_vettore():&amp;quot;<<endl;
        // verifica i parametri, segnalando gli errori se qualcosa non va
        return false; // parametri non validi
    }

    cout<<&amp;quot;Valori immessi nel vettore n. &amp;quot;<<idVett<<&amp;quot;:&amp;quot;<<endl;

    // in un ciclo che si ripete qEl volte, mostra il
    // valore contenuto in ogni elemento dell'array v

    return true;
}

Ricorrere all'allocazione dinamica dei vettori sarebbe ancora pi&Atilde;&sup1; flessibile, ma dal tipo di esercizio proposto dubito che enneZeta abbia gi&Atilde;&nbsp; studiato quel che serve.

P.S.
Lo so, quel che ho proposto &Atilde;&uml; pi&Atilde;&sup1; vicino al C che al C++. Pignoli.

Grazie mille Aldo Baldo per la risposta e il bel compliemento. :) ho visto il codice ma non ho ben capito alcuni passaggi, probabilmente come hai già detto mi mancano alcuni concetti che dovrò affrontare in futuro. Non appena la mia conoscenza sarà più approfondita tornerò sicuramente a rivedere questa alternativa.
Ultima modifica effettuata da enneZeta 23/11/20 19:29
23/11/20 19:29
enneZeta
Postato originariamente da enneZeta:
Postato originariamente da AldoBaldo:
Non so se comprenda argomenti che enneZeta non ha ancora affrontato, per&Atilde;&sup2; potrebbe essere una soluzione anche quella di basare il programma su cicli che possano operare su quantit&Atilde;&nbsp; di vettori e di elementi per vettori pi&Atilde;&sup1; semplicemente modificabili.

Ad esempio, in questo caso basterebbe modificare g_qVett, g_qMinVal e g_qMaxVal per adattare il programma a una gamma di vettori pi&Atilde;&sup1; flessibile...

#include <iostream>
using namespace std;

// costanti globali (volendo si potrebbero anche usare dei #define)
const int g_qVett   = 2; // quantita' dei vettori da trattare
const int g_qMinVal = 1; // quantita' minima dei valori ammessi in ogni vettore
const int g_qMaxVal = 9; // quantita' massima dei valori ammessi in ogni vettore

// prototipi
bool richiesta_dimensioni_vettore( int idVett, int *qEl );
bool richiesta_dati_vettore( int idVett, int *v, int qEl );
bool visualizzazione_dati_vettore( int idVett, const int *v, int qEl );

int main (){
    int v[g_qVett][g_qMaxVal]; // i vettori
    int qEl[g_qVett]={0};      // la quantita' degli elementi nei vettori
    int i;

    for( i=0; i<g_qVett; ++i )
        if( !richiesta_dimensioni_vettore(i+1,qEl+i) )
            return 0; // errore gia' segnalato dalla funzione

    for( i=0; i<g_qVett; ++i )
        if( !richiesta_dati_vettore(i+1,v[i],qEl[i]) )
            return 0; // errore gia' segnalato dalla funzione

    for( i=0; i<g_qVett; ++i )
        if( !visualizzazione_dati_vettore(i+1,v[i],qEl[i]) )
            return 0; // errore gia' segnalato dalla funzione

    return 0;
}

bool richiesta_dimensioni_vettore( int idVett, int *qEl ) {
    if( idVett<1 || NULL==qEl ) { // verifica parametri
        cout<<&amp;quot;Errore in richiesta_dimensioni_vettore():&amp;quot;<<endl;
        // verifica i parametri, segnalando gli errori se qualcosa non va
        return false; // parametri non validi
    }

    // chiede le dimensioni del vettori, insistendo
    // finche' non viene fornita una risposta adeguata

    return true;
}

bool richiesta_dati_vettore( int idVett, int *v, int qEl ) {
    if( idVett<1 || NULL==v || qEl<1 ) { // verifica parametri
        cout<<&amp;quot;Errore in richiesta_dati_vettore():&amp;quot;<<endl;
        // verifica i parametri, segnalando gli errori se qualcosa non va
        return false; // parametri non validi
    }
    
    // in un ciclo che si ripete qEl volte, riceve i valori
    // da inserire nell'array, ripetendo le richieste ogni
    // volta che viene inserito un valore non accettabile

    return true;
}

bool visualizzazione_dati_vettore( int idVett, const int *v, int qEl ) {
    if( idVett<1 || NULL==v || qEl<1 ) { // verifica parametri
        cout<<&amp;quot;Errore in visualizzazione_dati_vettore():&amp;quot;<<endl;
        // verifica i parametri, segnalando gli errori se qualcosa non va
        return false; // parametri non validi
    }

    cout<<&amp;quot;Valori immessi nel vettore n. &amp;quot;<<idVett<<&amp;quot;:&amp;quot;<<endl;

    // in un ciclo che si ripete qEl volte, mostra il
    // valore contenuto in ogni elemento dell'array v

    return true;
}

Ricorrere all'allocazione dinamica dei vettori sarebbe ancora pi&Atilde;&sup1; flessibile, ma dal tipo di esercizio proposto dubito che enneZeta abbia gi&Atilde;&nbsp; studiato quel che serve.

P.S.
Lo so, quel che ho proposto &Atilde;&uml; pi&Atilde;&sup1; vicino al C che al C++. Pignoli.