PDA

Visualizza la versione completa : [C++] Errore Rotazione di una matrice di 90 gradi


marionexus94
13-11-2013, 14:25
Ragazzi ho un problema.Sto risolvendo questo esercizio e in parte di sono riuscito tranne l'ultimo punto qualcuno mi aiuta?Si realizzi 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.

Grazie.

P.S come faccio a visualizzare la matrice in stile matematico?
1 2 3
4 5 6
7 8 9



#include <iostream>
using namespace std;


int read (int[3][3],int ,int,int);
int somma (int[3][3],int,int,int);
int diff (int[3][3],int,int,int);
int rotation (int[3][3],int,int,int,int[3][3],int,int);
int main()
{const int size=3;
int m[size][size];
int f[size][size];
int i,j,i2,j2;
read (m,i,j,size);
cout<<"La somma degli elementi della prima e ultima riga "<<somma(m,i,j,size)<<endl;
cout<<"La differenza tra gli elementi della prima e ultima colonna "<<diff(m,i,j,size)<<endl;
if( ( somma(m,i,j,size) + diff(m,i,j,size) )!=0)
{rotation(m,i,j,size,f,i2,j2);}


for(i2=0;i2<size;i2++)
{for(j2=0;j2<size;j2++)
{cout<<f[i2][j2]<<endl;
}
}
}


int read (int k[3][3],int r,int c,int d)
{cout <<"Inserisci la matrice"<<endl;
for(r=0;r<d;r++)
{for(c=0;c<d;c++)
cin>>k[r][c];
}
return k[3][3];
}


int somma(int k[3][3],int r,int c,int d)
{int sum=0;
for(r=0;r<d;r++)
{for (c=0;c<d;c++)
{if(r==0 || r==d-1)
sum=sum+k[r][c];
}
}
return sum;
}


int diff(int k[3][3],int r,int c,int d)
{int dif=2*k[0][0];
for(r=0;r<d;r++)
{for(c=0;c<d;c++)
{if(c==0 || c==d-1)
dif=dif-k[r][c];
}
}
return dif;
}




int rotation(int k[3][3],int r,int c,int d,int g[3][3],int r2,int c2)
{r2=0;
c2=2;
for(r=0;r<d;r++ && c2--)
{for(c=0;c<d;c++ && r2++)
{g[r2][c2]=k[r][c];
}
}
return g[3][3];
}

oregon
13-11-2013, 14:40
come faccio a visualizzare la matrice in stile matematico?

for(i2=0;i2<size;i2++)
{
for(j2=0;j2<size;j2++)
{
cout<<f[i2][j2]<<" ";
}
cout << endl;
}
}

marionexus94
13-11-2013, 15:00
for(i2=0;i2<size;i2++)
{
for(j2=0;j2<size;j2++)
{
cout<<f[i2][j2]<<" ";
}
cout << endl;
}
}

ora la stampa grazie.
P.S anche per l'imput si puo fare?

oregon
13-11-2013, 15:32
No dato che per l'input devi usare il tasto Invio ...

marionexus94
13-11-2013, 15:43
No dato che per l'input devi usare il tasto Invio ...
ah ok.per caso hai avuto modo di vedere la parte della rotazione? in pratica devo fare questo

1 2 3 1 4 1
4 5 6 1 5 2
1 1 1 1 6 3

oregon
13-11-2013, 15:46
Ma la domanda non era sull'output?

marionexus94
13-11-2013, 17:34
Ma la domanda non era sull'output?

si anche sull'output.forse non hai letto bene all'inizio

oregon
13-11-2013, 19:27
Ho letto bene ... ma pensavo che l'ultimo punto che non sapevi fare fosse proprio l'ultimo che hai detto

come faccio a visualizzare la matrice in stile matematico?

Per la rotazione, dato che hai scritto una funzione che dovrebbe ruotare, cosa non va?

marionexus94
13-11-2013, 20:55
Ho letto bene ... ma pensavo che l'ultimo punto che non sapevi fare fosse proprio l'ultimo che hai detto

come faccio a visualizzare la matrice in stile matematico?

Per la rotazione, dato che hai scritto una funzione che dovrebbe ruotare, cosa non va?

mi escono valori sballati puo controllare il ciclo for.non riesco a trovare l'errore

marionexus94
14-11-2013, 19:49
up

Loading