Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    53

    [C]Passagio matrici come parametro

    Ciao! Questo è il problema:

    la mia matrice grafo[nodi][nodi] rappresenta la matrice di adiacenza di un grafo che creo runtime in base all'input dell'utente.

    Quindi nella dichiarazione della funzione mi sono limitato a metterci **grafo, visto che ancora non conoscevo le dimensioni della matrice.

    Non sono riuscito a trovare un modo per chiamare la funzione da main senza errori!

    Questo e' il codice:
    codice:
    /*dichiarazione funzioni*/
    int verifica_connessioni(int *puntatore, int **grafo);
    
    int main()
    {
        ...
       printf("Inserisci il numero di nodi...\n");
       scanf("%d", &nodi);
       int grafo[nodi][nodi];
        ...
        controllo = verifica_connessioni(puntatore, grafo);/*SBAGLIO NELLA CHIAMATA?*/
        ....
    }
    
    int verifica_connessioni(int* puntatore, int** grafo)
    {
       ...
    }
    HELP!!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non va bene scrivere

    int grafo[nodi][nodi]

    anche in considerazione del fatto che non tutti i compilatori lo accetterebbero (solamente quelli C99)

    Devi allocare dinamicamente l'array a partire da un doppio puntatore, che è poi quello che passeresti alla funzione. Quindi

    int **grafo = ...

    con tutto quello che segue per l'allocazione dinamica della matrice.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    53
    Va bene provo così! Grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    53
    Ho provato a inizializzare la matrice in questo modo ma manda in crash l'applicazione...
    codice:
        /*matrice di adiacenza*/
        int **grafo; 
    
        grafo = (int **)malloc(sizeof(int *)*nodi);
    
        for(i=0;i<nodi;i++)
            grafo[i] = (int *)malloc(sizeof(int)*nodi);   
                            
        /*inizializzo la matrice*/
        for(i = 0; i<nodi;i++)
              for(j=0;j<nodi;j++)
                   grafo[i][j] = 0;

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    L'allocazione mi sembra corretta ... probabilmente il problema è in un'altra parte del codice che non hai mostrato.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    53
    Hai di nuovo ragione! Era un altro errore, ora funziona tutto! Grazie!

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.