Visualizzazione dei risultati da 1 a 10 su 15

Hybrid View

  1. #1
    Ringrazio entrambi! Quindi Scara se ho capito bene non sempre devo dichiarare parametri di I/O per le funzioni? Ma se non lo faccio non rischio che il compilatore mi dia errori?
    Mi è molto più chiaro lo scopo di size_t, e ho compreso concettualmente come funziona l'allocazione di array di array! Inoltre poco fa ho aggiunto una nuova funzione al mio programma, completandolo. Ecco qui:

    codice:
    #include <iostream>#include <fstream>
    #include <cstdlib>
    
    
    
    
    using namespace std;
    
    
    // lettura matrice da file + allocazione
    int **readMat(int**&m, size_t& size) 
    {
        ifstream in("mat.txt");
        in >> size;
        m = new int *[size];
        for(int i = 0; i < size; ++i)
            m[i] = new int[size];
        for(int i = 0; i < size; ++i)
            for(int j = 0; j < size; ++j)
                in >> m[i][j];
        return m;
    }
    
    
    // Liberazione memoria
    void freeMat(int **&m, size_t size) {
        for(int i = 0; i < size; ++i)
            delete[] m[i];
        delete[] m;
    }
    
    
    // Calcolo del minimo delle righe
    int   calc_ind_min(int **m,int size,int r)
    {
        int min=m[r][0];
        int i,indmin=0;
        for (i=0;i<size;i++)
        {
          if (m[r][i]<min)
          {
            min=m[r][i];
            indmin=i;
          }
        }
        
        return indmin;
    }
    // Calcolo del massimo delle colonne + calcolo e stampa del punto di sella
    
    int trova_punto_sella(int**m,int size, int t)
    {
          int sella;
          int posc;
          posc = calc_ind_min(m,size,t);
          int maxcol=m[t][posc];
          for(int i=0;i<size;i++)
          {
                  if(maxcol<m[i][posc])
                     maxcol=m[i][posc];
          }
          if(maxcol==m[t][posc])
          {
                  sella=maxcol;
                  cout<<sella<<" Punto di sella in posizione "<<t<<" "<<posc<<endl;
                  return sella;
           }
           else
           return -1;
     
    }
    
    
    int main(void) {
        size_t size;
        int **m;
        readMat(m, size);
       // stampa a video della matrice allocata
        for(int i = 0; i < size; ++i) {
            for(int j = 0; j < size; ++j)
                cout << m[i][j] << '\t';
            cout << endl;
        }
        
        int r;
        for(r=0;r<size;r++)
        {
            calc_ind_min(m,size,r);
        }
        cout << endl;
        cout << endl;
        
        int t;
        for(t=0;t<size;t++)
        
    { trova_punto_sella(m,size,t);
    }
        freeMat(m, size);
        return 0;
    }
    Ultima modifica di DaemonDestroyer; 11-06-2014 a 16:00

  2. #2
    Ti ringrazio MAW per i materiali da te fornitomi, poiché sono diciamo nella fase iniziale dello studio del C++, mi saranno molto utili. Mi permetto di dire, che spesso confronti come questo sui forum (almeno nel mio caso) risultano molto più utili alla comprensione e allo studio dei linguaggi informatici che non leggere dai libri universitari, spesso non molto chiari...

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da DaemonDestroyer Visualizza il messaggio
    Quindi Scara se ho capito bene non sempre devo dichiarare parametri di I/O per le funzioni?
    No hai mal interpretato: devi evitare operazioni di IO all'interno delle funzioni se non create appositamente per quello scopo, cioè devi evitare cin>> cout<< ...
    Il principio è: se non è necessario alla funzione non includerlo nella funzione, ma nel main.
    Concordo con M.A.W. che è molto migliore l'allocazione di un blocco unico.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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 © 2026 vBulletin Solutions, Inc. All rights reserved.