PDA

Visualizza la versione completa : [C++]Errore esecuzione stampa matrice con puntatori per la dimensione


marionexus94
18-11-2013, 17:13
ragazzi ho un problema.il programma seguente dovrebbe leggere e stampare una matrice di dimensioni scelte dal'utente tipo 2x3.il programma viene compilato senza errori il problema è che quando stampa la matrice se inserisco tipo
1 2 3
4 5 6

mi stampa

4 5 6
4 5 6

ho controllato ma mi sembra tutto a posto qualcuno può aiutarmi?



#include <iostream>
using namespace std;


int main() {
int i,j;
int M[i][j];
int *p,*q;

p=&i;
q=&j;

cout<<"Inserisci numero di righe"<<endl;
cin>>*p;
cout<<"Inserisci numero di colonne"<<endl;
cin>>*q;

cout<<"La matrice ha dimensione "<<i<<" x " <<j<<endl;

cout<<"Inserisci la matrice"<<endl;
for(int r=0;r<i;r++)
{for(int c=0;c<j;c++)
cin>>M[r][c];
}

cout<<"La matrice da te inserita è"<<endl;
for(int r=0;r<i;r++)
{for(int c=0;c<j;c++)
cout<<M[r][c]<<" ";
cout<<endl;
}
}

oregon
18-11-2013, 17:25
Questo modo di allocare l'array è sbaglaito

int i,j;
int M[i][j];

All'inizio del programma, prima di chiedere in input i e j, non sai quanto valgono e l'array non ha dimensioni certe.

Inoltre non capisco perché tutto quel giro con i puntatori p e q ... non puoi semplicemente utilizzare i e j ?

marionexus94
18-11-2013, 18:12
Questo modo di allocare l'array è sbaglaito

int i,j;
int M[i][j];

All'inizio del programma, prima di chiedere in input i e j, non sai quanto valgono e l'array non ha dimensioni certe.

Inoltre non capisco perché tutto quel giro con i puntatori p e q ... non puoi semplicemente utilizzare i e j ?

in pratica vorrei fare una matrice dove io inserisco il numero di righe e colonne.
ho studiato i puntatori e volevo vede se avevo capito

oregon
18-11-2013, 18:31
Confermo quello che ti ho scritto ... hai compreso l'errore?

marionexus94
18-11-2013, 18:36
Confermo quello che ti ho scritto ... hai compreso l'errore?
si ho capito ma come dovrei fare?

marionexus94
18-11-2013, 19:29
Confermo quello che ti ho scritto ... hai compreso l'errore?
cioè dovrei definire una dimensione massima da quanto ho capito.non posso definirla io al momento dell'esecuzione e quindi allocare il numero giusto di bit?

oregon
18-11-2013, 19:53
Puoi usare l'allocazione dinamica della memoria (malloc)

marionexus94
18-11-2013, 19:59
Puoi usare l'allocazione dinamica della memoria (malloc)
e non l'ho ancora studiata.per caso ha a che fare con i puntatori?ma malloc non è del c?

oregon
18-11-2013, 20:04
Sì ... oppure la new per il C++

Loading