Matrice definita dall'utente

di il
6 risposte

Matrice definita dall'utente

Salve a tutti vorrei creare un programma in c++ che permetta all utente di inserire un qualsiasi numero di elementi e questi che questi elementi si dispongano in modo ordinato all interno della matrice . Ad esempio l utente scrive il primo elemento e questo si va a salvaresulla prima riga della prima colonna poi scrive il secondo elemento e questo si va a salvare nella seconda riga della prima colonna e così via . E' possibile ? Premetto che sono abbastanza inesperto e che potrebbe essere una cosa banale ma sto trovando molte difficoltà .Se possibile mi farebbe comodo un esempio di un programma simile con magari una piccola spiegazione.Grazie mille in anticipo!

6 Risposte

  • Re: Matrice definita dall'utente

    Per allocare la matrice con il numero di righe e colonne definite dall'utente devi usare l'allocazione dinamica (con la new per allocare a partire da un doppio puntatore e la delete per liberare la memoria alla fine).

    Per inserire i dati bastano semplicemente due cicli for con due indici (r e c ad esempio) per inserire i dati.

    Se non hai chiari i concetti che ti ho suggerito, non te ne fai nulla dell'esempio. Un copia incolla non ti serve, bisogna solo studiare quello che ti ho detto.
  • Re: Matrice definita dall'utente

    #include<iostream>
    #include<stdlib.h>
    
    using namespace std;
    
    int mat[1000][1000]; //dichiarazione matrice
    int i; //indice righe della matrice
    int j; //indice colonne della matrice
    int n; //numero righe della matrice
    int m; //numero colonne della matrice
    int main(){
    cout<<"Inserisci il numero delle righe della matrice"<<endl;
    cin>>n;
    cout<<"Inserisci il numero delle colonne "<<endl;
    cin>>m;
    for (i=0;i<n;i++){
    	for(j=0;j<m;j++){
    		cout<<"Inserisci l'elemento di posizione "<<i<<"-"<<j<<endl;
    		cin>>mat[i][j];
    	}
    }
    return 0;
    
    quindi una cosa del genere è sbagliata ?
  • Re: Matrice definita dall'utente

    Cosi' l'utente non può scegliere di usare più di 1000 righe o colonne. L'allocazione massima diventa statica.
  • Re: Matrice definita dall'utente

    Grazie mille per l aiuto
  • Re: Matrice definita dall'utente

    
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    void leggimat( int **M, int dimr, int dimc ){
    	int i,j;
    	for(i=0;i<dimr;i++){
    		for(j=0;j<dimc;j++){
    			cout<<"A[ "<<i+1<<","<<j+1<<" ] = ";
    			cin>>M[i][j];
    		}
    	}
    }/*  leggimatrice */
    /* Stampa   matrice */
    void stampamat( int **M, int dimr, int dimc ){
    	int i,j;
    	for( i=0; i<dimr; i++ ){
    		for( j=0; j<dimc; j++ ){
    			cout<<M[i][j];
    		}
    		cout<<endl;
    	}
    }/* fine stampamatricee*/
    int main(){
    	int **Matrix;
    	int i, rows=2, cols=2;
    	Matrix = new int*[rows];
    	for(i=0;i<rows;i++)
    	Matrix[i] = new int[cols];
    /* Chiamo funzioni di Lettura e Stampa  */
    	leggimat( Matrix , rows , cols );
    	cout<<endl;
    	stampamat( Matrix , rows , cols );
    	for(i=0;i<rows;i++)
    	delete Matrix[i];
    	delete Matrix;
    	
    	system("PAUSE");
    	return 0;
    }
    
    Chiedo se secondo voi il codice è corretto per la creazione di una matrice allocata dinamicamente
    Perchè quando lo vado a compilare non ottengo errori ma non riesco ad eseguirlo
  • Re: Matrice definita dall'utente

    A parte il fatto che dovresti scrivere cosi'

    delete [] Matrix;
    delete [] Matrix;

    dovrebbe comunque funzionare senza problemi.
Devi accedere o registrarti per scrivere nel forum
6 risposte