PDA

Visualizza la versione completa : [C++] Problema con una procedura.


Europerforation
05-02-2014, 17:12
Salve a tutti,
avrei bisogno di un aiuto con un programma in C++ che mi ha un po spiazzato, essendo diverso da quelli precedentemente affrontati.
La traccia questa:
"Si progetti ed implementi in C++ un algoritmo che, presi in input 2 numeri interi, n>=2 ed m>=2:

-Acquisisca da standard input gli elementi di vettore bidimensionale A di dimensione n*m e di un vettore bidimensionale B
di dimensione m*n.

-Invochi una procedura che verifichi se A la matrice trasposta di B.
In caso affermativo la procedura deve fornire su standard output il messaggio "true"; altrimenti su standard output, la procedura
deve fornire la lista degli elementi differenti e dei rispettivi indici di posizione delle matrici A e B."

Il mio svolgimento questo:



#include <iostream>

using namespace std;
int acquisisci (){
int num;
cout<<"inserisci un intero maggiore di 2"<<endl;
do{
cin>> num;
if(num<2)
cout<<"Errore. Riprova."<<endl;
}while (num<2);
}

void trasposta (int A[][m], int B[][n], int n, int m){
for( int i=0; i<n; i++)
for( int j=0; j<m; j++){
if(A[i][j] == B[j][i])
cout<<"true"<<endl;
else
if(A[i][j]!= B[j][i]){
cout<<"l'elemento"<<A[i][j]<<"posizionato in"<<i+1<<j+1<<endl;
cout<<"e' diverso da "<<B[j][i]<<"posizionato in"<< j+1<<i+1<<endl;
}
}



int main()
{
int n=acquisisci;
int m=acquisisci;
int A[n][m];
int B[m][n];

for( int i=0; i<n;i++)
for( int j=0; j<m; j++){
cout<<"inserisci elemento riga"<<i+1<<"colonna"<< j+1<<"della prima matrice"<<endl;
cin>> A[i][j];
}
for( int i=0; i<m;i++)
for( int j=0; j<n; j++){
cout<<"inserisci elemento riga"<<i+1<<"colonna"<< j+1<<"della prima matrice"<<endl;
cin>>B[i][j];
}

trasposta (A, B, n, m);


system("PAUSE");
return 0;
}

Tralasciando il fatto che ora l'ho scritto velocemente e con qualche imprecisione, mi sono reso conto gi durante l'esame che nella procedura "trasposta" la seconda dimensione di entrambi gli array non corretta perch non rispetta le regole di scope, essendo dichiarata solo nel main. Come si risolve questo problema, non volendo usare i puntatori?

Loading