Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Array dinamici multidimensionali e bus error

    Ciao a tutti,
    devo creare un programma che genera una matrice N x N dinamica. Il problema è che il mio codice funziona perfettamente per N < 5 dopodiché mi restituisce l'errore "Bus error". Sapete dirmi come mai?


    Il sorgente è il seguente:
    codice:
    #include <iostream>
    using namespace std;
    
    int main(){
    	int dim, i, j;
    	int ** m = new int*[dim];
    	
    	
    	cout << "Choose the dimension of the squared matrix: ";
    	cin >> dim;
    	
    	
    	for(i=0;i<dim;i++){
    		m[i] = new int[dim];
    	}
    	
    
    	
    	for(i=0;i<dim;i++){ // Righe
    		
    		for (j=0;j<dim;j++){ // Colonne
    			m[i][j] = i*dim + (j + 1);
    		}
    		
    	
    	}
    	
    
    		for(i=0;i<dim;i++){ // Righe
    		
    		for (j=0;j<dim;j++){ // Colonne
    			cout << " " << m[i][j] << " ";
    		}
    		cout << endl;
    	}
    
    return 0;
    }
    http://www.newsol.ch
    "I'm so sorry"
    Mario Corti, CEO Swissair, 2 Ottobre 2001
    La crisi della società Swissair è culminata con il "grounding" dell’intera flotta aerea nei primi giorni del mese di ottobre 2001.

  2. #2
    Hahha adesso ho scoperto che funziona anche con i numeri dal 125 in poi... sapete spiegarmi come mai?


    Thx
    http://www.newsol.ch
    "I'm so sorry"
    Mario Corti, CEO Swissair, 2 Ottobre 2001
    La crisi della società Swissair è culminata con il "grounding" dell’intera flotta aerea nei primi giorni del mese di ottobre 2001.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    L'errore è all'inizio e sinceramente non so come faccia il programma a funzionare per qualunque numero ...
    codice:
    int dim, i, j;
    int ** m = new int*[dim];
    Qui dim non è definito o è uguale a 0, per cui l'allocazione che fai non ha alcun significato.
    Codice corretto:
    codice:
    #include <iostream>
    using namespace std;
    
    int main(){
    	int dim, i, j;
    	int **m;
    	
    	
    	cout << "Choose the dimension of the squared matrix: ";
    	cin >> dim;
    	
            m = new int*[dim];
    	for(i=0;i<dim;i++){
    		m[i] = new int[dim];
    	}
    	
    	for(i=0;i<dim;i++){ // Righe
    		
    		for (j=0;j<dim;j++){ // Colonne
    			m[i][j] = i*dim + (j + 1);
    		}
    		
    	
    	}
    	
    
    	for(i=0;i<dim;i++){ // Righe
    		
                    for (j=0;j<dim;j++){ // Colonne
    			cout << " " << m[i][j] << " ";
    		}
    		cout << endl;
    	}
    
            return 0;
    }
    Così dovrebbe andare.

  4. #4
    Scusa, mi vergogno della banalità dell'errore. Sono le tipiche cose che ti sfuggono dagli occhi

    Che figura hehehe

    Grazie mille!
    http://www.newsol.ch
    "I'm so sorry"
    Mario Corti, CEO Swissair, 2 Ottobre 2001
    La crisi della società Swissair è culminata con il "grounding" dell’intera flotta aerea nei primi giorni del mese di ottobre 2001.

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.