Esercizio array bidimenionali(con valori pseudo-casuali)

di il
4 risposte

Esercizio array bidimenionali(con valori pseudo-casuali)

Salve a tutti, sono nuovo in questo forum ed ho bisogno di un aiuto da parte vostra riguardo un esercizio con gli array bidimensionali ( matrici ), di seguito vi allego il testo dell'esercizio:

Creare una matrice (mrighe*ncolonne) costituita da valori casuali compresi tra 1 e 10.

1. Visualizzare matrice.

2. Determinare e visualizzare la somma degli elementi della matrice.

3. Visualizzare la prima riga della matrice.

4. Visualizzare un elemento la cui posizione viene richiesta all'utente.

Il mio problema è che, una volta creata la matrice ed impostato rand e srand(per evitare che si ripetano i numeri pseudo-casuali del primo caricamento) e una volta finito e avviato il programma, i numeri della prima riga della matrice sono casuali, ma poi, quelli delle righe successive sono uguali a quelli della propria colonna.

Ecco il mio format su DevC++( ovviamente solo il tratto di programma sul quale ho il problema):
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;


int main(int argc, char** argv) {
	int m,n,somma=0,posrig,poscol;
	int a[m][n];
	srand(time(NULL));
	cout<<"Inserisci il numero di righe"<<endl;
	cin>>m;
	cout<<"Inserisci il numero di colonne"<<endl;
	cin>>n;
	for(int i=0; i<m; i++){
		for(int j=0; j<n; j++){
			a[i][j]=rand()%10+1;
		}
	}
	cout<<"L'intera tavola a numeri casuali e': "<<endl;
	cout<<endl;
	for(int i=0; i<m; i++){
		for(int j=0; j<n; j++){
			cout<<a[i][j]<<"\t";
		}
		cout<<endl;
	}
Vi allego anche lo screen del programma a video così magari capite meglio il mio problema
Allegati:
21391_553b71e5761a2dcad6d9deb7a23cd07f.png
21391_553b71e5761a2dcad6d9deb7a23cd07f.png

4 Risposte

  • Re: Esercizio array bidimenionali(con valori pseudo-casuali)

    Intanto il codice che hai scritto non è completo, manca il return e l'ultima graffa, ma non è questo che conta. Poi leggendolo non mi è sembrato che ci fosse qualcosa di sbagliato quindi ho controllato: ho compilato e la prima volta mi ha dato un "segmentation fault (core dumped)" quindi mi sono accorto che dichiari a[m][n] prima di assegnare un valore ad m e n, quindi ho messo la dichiarazione di a[m][n] dopo l'ultimo cin e a me funziona tutto...
  • Re: Esercizio array bidimenionali(con valori pseudo-casuali)

    Il codice non è completo perchè ho inserito solo la prima parte ( dove riscontro il problema dato che col resto mi va tutto), comunque adesso inserisco tutto il codice:
    #include <iostream>
    #include <time.h>
    #include <stdlib.h>
    using namespace std;
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char** argv) {
    	int m,n,somma=0,posrig,poscol;
    	int a[m][n];
    	srand(time(NULL));
    	cout<<"Inserisci il numero di righe"<<endl;
    	cin>>m;
    	cout<<"Inserisci il numero di colonne"<<endl;
    	cin>>n;
    	srand(time(NULL));
    	for(int i=0; i<m; i++){
    		for(int j=0; j<n; j++){
    			a[i][j]=rand()%10+1;
    		}
    	}
    	cout<<"L'intera tavola a numeri casuali e': "<<endl;
    	cout<<endl;
    	for(int i=0; i<m; i++){
    		for(int j=0; j<n; j++){
    			cout<<a[i][j]<<"\t";
    		}
    		cout<<endl;
    	}
    	for(int i=0; i<m; i++){
    		for(int j=0; j<n; j++){
    			somma=somma+a[i][j];
    		}
    	}
    	cout<<"La somma degli elementi dell'intera tavola a numeri casuali e': "<<somma<<endl;
    	cout<<"La prima riga della tavola a numeri casuali e': "<<endl;
    	for(int j=0; j<n; j++){
    		cout<<a[0][j]<<"\t";
    	}
    	cout<<endl<<endl;
    	cout<<"Digitare la posizione dell'elemento che si desidera visualizzare"<<endl;
    	do {
    	    cout<<"Digitare la riga( NON INFERIORE A 0 NE' MAGGIORE/UGUALE A "<<m<<" ) :"<<endl;
            cin>>posrig;
        }while(posrig>=m||posrig<0);
        do{
            cout<<"Digitare la colonna ( NON INFERIORE A 0 NE' MAGGIORE/UGUALE A "<<n<<" ) :"<<endl;
            cin>>poscol;
        }while(poscol>=n||poscol<0);
        cout<<"La posizione che hai inserito e': ("<<posrig<<";"<<poscol<<") ed il suo valore corrispondente e': "<<endl;
        cout<<a[posrig][poscol];
    	return 0;
    }
    Il mio problema è solo sul fatto che però i numeri casuali della prima riga sono ripetuti per tutte le altre..prova magari ad inserire tutto ciò codice e farmi sapere se a video ti esce come a me
  • Re: Esercizio array bidimenionali(con valori pseudo-casuali)

    Okay, ho provato a fare come hai detto tu: ho messo la dichiarazione
    int a[m][n];
    dopo l'ultimo cin e adesso mi funziona tutto..prima, però, non mi dava l'errore che dava a te:

    ANDPRI ha scritto:


    "segmentation fault (core dumped)"
    .
  • Re: Esercizio array bidimenionali(con valori pseudo-casuali)

    Sarà che ho usato il telefono per provarlo...
Devi accedere o registrarti per scrivere nel forum
4 risposte