PDA

Visualizza la versione completa : [C++] Funzioni che lavorano su matrici multidimensionali


nenne88
18-12-2010, 20:41
ho scritto il seguente programma che riceve in imput una matrice e la stampa,usando due funzioni void

#include<iostream>
#include<cstdlib>
using namespace std;

void memomatrice(int *a,int n,int m);
void outmatrice (int *a,int n,int m);

int main()
{int n,m;
cout<<"\n inserisci il numero di righe ";cin>>n;
cout<<"\n inserisci il numero di colonne ";cin>>m;
int A[n][m];
cout<<"\n inserisci la matrice delle stazioni\n";
memomatrice(A,n,m);
cout<<"\nstampo\n";
outmatrice(A,n,m);
system("PAUSE");
return 0;}

void memomatrice(int *a,int n,int m)
{int i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
{cout<<"M["<<i<<"]["<<j<<"]=";
cin>>a[i];}}
return;}

void outmatrice(int *a,int n,int m)
{int i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
cout<<"M["<<i<<"]["<<j<<"]="<<a[i]<<'
return;}


il simpaticone mi d questo errore

14. cannot convert `int (*)[((unsigned int)((int)m))]' to `int*' for argument `1' to `void memomatrice(int*, int, int)'

che non so assolutamente cosa voglia dire....se per tolgo le funzioni e metto tutto nel main funziona perfettamente...purtroppo ho bisogno delle funzioni perch in teoria devo creare 3 diverse matrici e mi sembra inutile scrivere i procedimenti 3 volte!!!

grazie a tutti per l'aiuto
benedetta

MItaly
18-12-2010, 21:09
A una matrice bidimensionale, non puoi passarla semplicemente come un puntatore. Per passare matrici multidimensionali necessario specificarle come tali nella dichiarazione della funzione, specificando tutti gli indici tranne l'ultimo (che opzionale).

LeleFT
19-12-2010, 15:44
Invito l'autore a prendere visione del Regolamento interno (http://forum.html.it/forum/showthread.php?s=&threadid=973887), in particolare alla sezione del posting del codice con l'uso degli appositi tag CODE. Il codice, inoltre, deve essere opportunamente indentato. Il tuo non lo , quindi inutile qualunque tipo di aggiustamento da parte mia.

Ciao. :ciauz:

Loading