Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    14

    [C++] Delucidazione passaggio array bidimensionali in un sottoprogramma

    Buonasera. Vorrei avere un chiarimento.

    Inizialmento leggo una matrice di interi memorizzata righe per colonne. In seguito devo costruire un sottoprogramma di tipo procedura che riceve come parametri, tra gli altri, un array di interi più riempimento, dove gli array sono le mie righe e il rimpimento è il numero di colonne (poiché devo effettuare una ricerca di proprietà sulle righe). Ovviamente il sottoprogramma sarà usato in una for che cicla fino al termine delle righe.

    Il problema è che non saprei come passare al sottoprogramma soltanto le righe, proprio dal punto di vista sintattico. Il problema sono riuscito a risolverlo passando la matrice interamente e poi considerando solo le righe.

    C'è una soluzione più formale?

    Vi ringrazio in anticipo.

    Ciao.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Com'è allocata la matrice? Mostra il codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    14
    Purtroppo non dispongo del codice, perché questo problema l'ho avuto in sede d'esame (purtroppo).

    Comunque a grandi linee era così, proviamo a riscriverlo:

    #define MAX_RIGHE 50
    #define MAX_COLONNE 50

    int main()
    {
    int matrice[MAX_RIGHE][MAX_COLONNE],i,j,N,M;
    cin >> N;
    cin >> M;
    for(i=0;i<N;i++)
    for(j=0;j<M;j++)
    cin >> matrice[i][j];
    }

    Poi al sottoprogramma avevo passato la matrice interamente.

    void SottoProgramma (matrice[MAX_RIGHE],M).

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho chiaro un fatto ...

    Tu non passi il numero di righe effettivamente allocate ... come deve fare i sottoprogramma a sapere quante sono le righe valide?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    14
    Io avevo risolto usando il sottoprogramma in un ciclo, nel senso che veniva eseguito una nuova volta per ogni riga; del tipo:

    for(i=0;i<N;i++)
    sottoprogramma(matrice,N,...).

    Non so se è troppo chiaro. In ogni caso cerco di scrivere tutto da zero, compreso la specifica e posto tutto sul forum perché non è una cosa complicata. Grazie ancora.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In effetti non e' chiaro ... riproponi il quesito quando lo potrai spiegare meglio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    14
    Traccia

    Scrivere un programma che legge due interi N ed M seguiti da una matrice di interi N x M e che determina se tutte le righe della matrice contengono almeno un elemento negativo. Si assuma che la matrice da leggere possa avere al massimo 50 righe e 50 colonne. Procedere nel modo seguente:

    • usare un primo sottoprogramma di tipo funzione che svolge il seguente compito:
    riceve come parametri una matrice di interi con le sue dimensioni e restituisce un valore logico che indica se tutte le righe della matrice contengono almeno un elemento negativo
    • usare un secondo sottoprogramma di tipo procedura che svolge il seguente compito:
    riceve come parametri una lista di interi (array + riempimento) e restituisce, sempre attraverso un parametro di scambio, un valore logico che indica se la lista contiene almeno un elemento negativo

    --------------------------------------------------------------------------------------------
    Questa la mia soluzione per il primo sottoprogramma


    codice:
    #include <iostream.h> 
    #include <stdlib.h> 
    #define MAX 50  
    
    bool TutteRigheConNegativo (int matrice[][MAX], int N, int M);  
    int main() 
    {     
         int matrice[MAX][MAX],N,M,i,j;
         cout << "Inserisci il numero di righe -> ";     
         cin >> N;
         cout << endl << "Inserisci il numero di colonne -> ";
         cin >> M;
         for(i=0;i<N;i++)
            for(j=0;j<M;j++){
                cout << endl << "Inserisci l'elemento (" << i+1 << "," << j+1 << ") -> ";
                cin >> matrice[i][j];
                }
         
         if( TutteRigheConNegativo(matrice,N,M) )
            cout << endl << "Tutte le righe contengono almeno un elemento negativo.";  
         else        
            cout << endl << "Almeno una riga non contiene elementi negativi.";     
         cout << endl;     
         system("PAUSE");
         return 0;
    }
    
    bool TutteRigheConNegativo (int matrice[][MAX], int N, int M){
         int i,j;     bool TrovatoElementoNegativo;
         bool TrovataRigaSenzaNegativo=false;
         for(i=0; i<N && !TrovataRigaSenzaNegativo; i++){
             TrovatoElementoNegativo=false;
             for(j=0; j<M && !TrovatoElementoNegativo ;j++)
                 if(matrice[i][j]<0)
                    TrovatoElementoNegativo=true; 
             if(!TrovatoElementoNegativo)
                TrovataRigaSenzaNegativo=true;
             }
         return !TrovataRigaSenzaNegativo;
    }
    ------------------------------------------------------------------------------------------

    Adesso non saprei come fare per il secondo programma. Io ricordo di averlo applicato nel primo sottoprogramma, anche se mi sembrava una cosa contorta. Grazie ancora.

    Ciao.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cosa intende la traccia esattamente con

    "una lista di interi (array + riempimento) "

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    14
    Nemmeno a me è sembrata molto chiara. L'unica cosa che mi è stata confermata è che il secondo sottoprogramma va usato insieme al primo. Io ho interpretato che per array vuole le righe e per riempimento il numero di colonne, visto lo scopo (un valore logico che indica se la lista contiene almeno un elemento negativo).

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... vuole chiaramente una "lista di interi" ... (sembrerebbe una ArrayList ...) ...

    Ma fate C o Java ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.