Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Zeldic
    Registrato dal
    Jan 2010
    Messaggi
    80

    [C] Problema con la stampa

    Salve. Ho un problema (purtroppo urgente) con la stampa di una matrice, dopo averne fatto la trasposta, la funzione di stampa mi stampa solo una riga di zeri ed il compilatore non mi fa eseguire il debug, per cui non riesco ad individuare l'errore.
    Spero tantissimo qualcuno mi possa aiutare ! Ecco le parti di codice interessate :

    codice:
     
    
    typedef struct {
            int righe;
            int colonne;
            float valori[][DIM];
            } Matrice;
    
    
    int leggiRighe (Matrice m){
        return m.righe;
        }
        
    int leggiColonne (Matrice m){
        return m.colonne;
        }
    
    float leggiMatrice (Matrice m, int i, int j){
          return m.valori[i][j];
          }
    
    void trasposta(Matrice m, Matrice m_t) {
         int i, j; 
         
         for(i = 0; i < leggiRighe(m); i++) { 
              for(j = 0; j < leggiColonne(m); j++) { 
                    scriviMatrice(&m_t, i, j, leggiMatrice(m, j, i) ); 
              } 
         }   
    } 
    
    void stampaMatrice(Matrice m_t) { 
         int i, j; 
         
         printf("\nSTAMPA MATRICE TRASPOSTA\n\n");
         for(i = 0; i < leggiRighe(m_t); i++) { 
               for(j = 0; j < leggiColonne(m_t); j++) { 
                        printf( "%.2f ", leggiMatrice(m_t, i, j) );
               }
         }
         printf("\n\n"); 
    }
    Per favore aiutatemi !

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma il main ?

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

  3. #3
    Utente di HTML.it L'avatar di Zeldic
    Registrato dal
    Jan 2010
    Messaggi
    80
    Sì, scusa..
    Ecco il main :


    codice:
     
    
    #include "funzioni.h"
    
    int main()
    {
      Matrice a, a_t;
      
      inizializzaMatrice(&a, acq_dim("Inserire il numero di righe: "), acq_dim("Inserire il numero di colonne: "));
      printf("%d %d", a.righe, a.colonne);
      acquisisciValori(&a, leggiRighe(a), leggiColonne(a));
      inizializzaMatrice(&a_t, leggiColonne(a), leggiRighe(a));
      trasposta(a, a_t);  
      stampaMatrice(a_t); 
      
      system("PAUSE");	
      return 0;
    }
    e la funzione scriviMatrice() :

    codice:
     
    
    void scriviMatrice (Matrice *m_t, int i, int j, float val){
         m_t->valori[i][j] = val;
         }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Allora ... dato che un errore può essere ovunque nel tuo codice, se vuoi che il codice venga testato devi produrne uno "compilabile" senza errori.

    Finché ci saranno errori di compilazione perché mancano delle parti, non potrò darti nessun aiuto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Spero di non sbagliare, ma:

    codice:
    void trasposta(Matrice m, Matrice m_t) {
         int i, j; 
         
         for(i = 0; i < leggiRighe(m); i++) { 
              for(j = 0; j < leggiColonne(m); j++) { 
                    scriviMatrice(&m_t, i, j, leggiMatrice(m, j, i) ); 
              } 
         }   
    }
    Non dovresti invertire gli indici di scriviMatrice?

    scriviMatrice(&m_t, j, i, leggiMatrice(m, i, j) );

  6. #6
    Utente di HTML.it L'avatar di Zeldic
    Registrato dal
    Jan 2010
    Messaggi
    80
    Scusatemi se rispondo in ritardo, vi ringrazio tutti dei suggerimenti che mi avete dato.. Ho sbagliato a passare per valore la matrice. Utilizzando i relativi puntatori ed apportando alcune modifiche al mio codice iniziale il programma funziona correttamente (non l'ho postato perché è un progetto composto da 5 file - abbastanza lungo quindi - che effettua diverse operazioni su una matrice). Grazie ancora, alla prossima !

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.