Visualizzazione dei risultati da 1 a 1 su 1
  1. #1

    [C++] Problema con una procedura.

    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:

    codice:
    #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?
    Ultima modifica di MItaly; 05-02-2014 a 23:48 Motivo: Tag [CODE] ... [/CODE]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.