Salve a tutti, sono nuovo del forum e vorrei fare i complimenti a tutti perchè è fatto benissimo
Vorrei chiedervi un aiuto nella compilazione di questo programma. Allora dovrei fare questo:
realizzare un programma che, mediante opportuni sottoprogrammi, legga da tastiera una matrice di
interi con segno di dimensioni scelte dall'utente, restituendo la somma degli elementi della prima e
dell'ultima riga e la differenza tra la prima colonna e l'ultima, la stampi e, qualora la somma tra la
somma e la differenza sia diversa da 0, sposti gli elementi della stessa in posizione tale che la
matrice risulti ruotata di 90 gradi in senso orario, e la stampi.
Io ho scritto questo codice:
codice:
#include <iostream>
using namespace std;
int lmatrix(int signed *m,int r,int c);
int secmatrix(int signed *m,int r,int c,int signed *m2,int r2,int c2);

int main()
{
    int r;int c;
    cout<<"Inserisci numero di righe"<<endl;
    cin>>r;
    cout<<"Inserisci numero di colonne"<<endl;
    cin>>c;
    int signed m[r][c];
    int res=lmatrix(&m[0][0],r,c);
    if(res!=0)
    {
        int r2=r;
        int c2=c;
        int signed m2[r2][c2];
        secmatrix(&m[0][0],r,c,&m2[0][0],r2,c2);
    }else
    {
        cout<<"La somma è zero"<<endl;
    }

    return 0;
}

int lmatrix(int signed *m,int r,int c)
{
    for(int i=0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            cout<<"Inserisci elementi della matrice "<<endl;
            cin>>*(m+i*c+j);
        }cout<<endl;
    }
    for(int i=0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            cout<<*(m+i*c+j);
        }cout<<endl;
    }
  int somma=0;int differenza=0;
  for(int k=0;k<r;k++)
  {
      somma+=*(m+0*c+k)+*(m+(r-1)*c+k);
  }for(int z=0;z<c;z++)
  {
      differenza-=*(m+z*c+0)-*(m+z*c+(c-1));
  }
  cout<<"La somma è "<<somma<<endl;
  cout<<"La differenza è "<<differenza<<endl;
  int res=somma+differenza;
  return res;
}

int secmatrix(int signed *m,int r,int c,int signed *m2,int r2,int c2)
{
    int temp1;int temp2;int temp3;int temp4;
    for(int k=0;k<c;k++)
    {
        temp1=*(m+0*c+k); //prima riga
        temp2=*(m+k*c+(c-1)); //ultima colonna
        temp3=*(m+(r-1)*c+k); //ultima riga
        temp4=*(m+(r-1)*c+k); //ultima riga
        *(m+0*c+k)=*(m+k*c+0);
        *(m+k*c+(c-1))=temp1;
        *(m+(r-1)*c+k)=temp2;
        *(m+k*c+0)=temp1;
    }for(int i=0;i<r2;i++)
    {
        for(int j=0;j<c2;j++)
        {
            cout<<*(m2+i*c2+j);
        }cout<<endl;
    }
   return 0;
}
cosi facendo il programam funziona a metà cioè, riesce a fare tutti i primi punti ma quando la somma della differenza e somma e diversa da zero e dovrebbe ruotare di 90 gradi escono fuori valori strani.
Vorrei chiedervi qualcuno può darmi una mano per capire dove sta l'errore???grazie a tutti in anticipo per la risposta.