PDA

Visualizza la versione completa : [C++] Generare e visualizzare matrice di valori random


ilmimmeo
08-03-2011, 20:55
salve a tutti,
ho riscontrato un problema nella risoluzione di questo esercizio:

Scrivere un programma tale che, letti due numeri interi n ed m compresi nell’intervallo (3,5) definisca una matrice A di dimensioni con elementi interi generati in modo random e compresi nell’intervallo [0,20] ; successivamente visualizzare tale matrice a video. Quindi, con h e k interi inseriti a piacere, visualizzare a video gli elementi della riga h e della colonna k, con e . Qualora la matrice risultasse quadrata se ne calcoli la traccia.

riesco a scrivere la matrice e a stamparla, però no so come visualizzare gli elementi della riga 'h' e colonna 'k' inserendoli a piacere. Potreste darmi una mano? Ringrazio anticipatamente =)
Vi allego il testo dell'esercizio fin'ora svolto.

#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <cstdlib>
using namespace std;


void main()
{
int mat[5][5], n, m, a, b;
int num,range, min=0, max=20;
int h, k;


cout<<"Inserire due numeri interi conpresi nell'intervallo (3,5): "<<endl;
while (!(cin>>n) || (n<3) || (n>5))
{
cout<<"Input errato. Reinserire input.";
cin.clear();
cin.ignore(100, '\n');
}

while (!(cin>>m) || (m<3) || (m>5))
{
cout<<"Input errato. Reinserire input.";
cin.clear();
cin.ignore(100, '\n');
}


srand(time(0));
range=max-min+1;
for (a=0; a<n; a++)
{
for (b=0; b<m; b++)
{
num=rand()%range+min;
mat[n][m]=num;
cout<<mat[n][m]<<' ';
}
cout<<endl;
}

cout<<"Inserire due numeri per visualizzare gli elementi riga-colonna: "<<endl;
while (!(cin>>h) || (h<1) || (h>n))
{
cout<<"Input errato. Reinserire input.";
cin.clear();
cin.ignore(100, '\n');
}

while (!(cin>>k) || (k<1) || (k>m))
{
cout<<"Input errato. Reinserire input.";
cin.clear();
cin.ignore(100, '\n');
}

cout<<endl<<"ecco h: "<<h<<" Ecco k: "<<k<<endl;

/*Fino a qui riesco a svolgere, il problema è inserire
'h' e 'k' a piacere e visualizzare gli elementi di quella riga e colonna.
Ho provato a svolgerlo cosi : */

for (h=0; h<n; h++)
{
cout<<mat[h][n];
}
}

dario09
08-03-2011, 23:42
in questa riga devi scrivere - mat[b][a]- altrimenti memorizzi sempre n-m

mat[n][m]=num;
al posto di queste righe

for (h=0; h<n; h++)
{
cout<<mat[h][n];
}

cout << mat[k-1][h-1];
ciao

ilmimmeo
09-03-2011, 00:31
mmm... a ok :)
grazie dario :)

e se volessi visualizzare tutti gli elementi di una determinata riga e di una determinata colonna?

VincenzoTheBest
09-03-2011, 00:45
Originariamente inviato da ilmimmeo
Quindi, con h e k interi inseriti a piacere, visualizzare a video gli elementi della riga h e della colonna k, con e . Qualora la matrice risultasse quadrata se ne calcoli la traccia.

Per stampare la riga h:
finchè i < colonne_matrice, stampi mat[h][i]
invece per stampare la colonna k:
finchè i < righe_matrice, stampi mat[i][k]
i va inizializzato a 0.

ilmimmeo
09-03-2011, 01:40
ok perfetto risolto :)

grazie a tutti =)

Loading