// // main.cpp // Proma_Matrice // // Created by Vincenzo Angelino on 22/04/16. // Copyright (c) 2016 akasamia. All rights reserved. // #include using namespace std; typedef struct result_S{ int somma; int differenza; }result_T; result_T leggiMatrice(int **m, int rows, int cols); void leggiMatrice(int **m, int rows, int cols, int &somma, int &differenza); void leggiMatrice(int **m, int rows, int cols, int *somma, int *differenza); int **creaMatriceRuotata(int **m, int rows, int cols); int **allocaMatrice(int rows, int cols); void stampaMatrici(int **m, int **mRotate, int rows, int cols); void stampaMatrice(int **m, int rows, int cols); int main() { int rows, cols; int **m, **mRotate; int somma, differenza; // int *ptrSomma, *ptrDifferenza; cout << "Inserisci il numero di righe della matrice" << endl; cin >> rows; if (rows < 0){ cout << "Impossibile inserire un numero di righe minore di 0" << endl; return -1; } cout << "Inserisci il numero di colonne della matrice" << endl; cin >> cols; if (cols < 0){ cout << "Impossibile inserire un numero di colonne minore di 0" << endl; return -1; } m = allocaMatrice(rows, cols); // result_T result = leggiMatrice(m, rows, cols); leggiMatrice(m, rows, cols, somma, differenza); stampaMatrice(m, rows, cols); // cout << "somma = " << result.somma << " differenza = " << result.differenza << endl; // if (result.somma + result.differenza != 0){ if (somma+differenza !=0){ mRotate = creaMatriceRuotata(m, rows, cols); stampaMatrici(m, mRotate, rows, cols); } return 0; } int **allocaMatrice(int rows, int cols){ int **m; // m = (int**) malloc (sizeof(int*) * rows); // // for (int i = 0; i < rows; i++){ // m[i] = (int*) malloc(sizeof(int) * cols); // } m = new int*[rows]; for (int i = 0; i < rows; i++){ m[i] = new int[cols]; } return m; } result_T leggiMatrice(int **m, int rows, int cols){ result_T result; result.somma = 0; for (int i = 0; i < rows; i++){ for (int j = 0; j < cols; j++){ cout << "Inserisci l'elemento di posizione " << i << ", " << j << " "; cin >> m[i][j]; } } for (int i = 0; i < cols; i++){ result.somma += m[0][i]; result.somma += m[rows-1][i]; } result.differenza = 2 * m[0][0]; for (int i = 0; i < rows; i++){ result.differenza -= m[i][0]; result.differenza -= m[i][cols-1]; } return result; } void leggiMatrice(int **m, int rows, int cols, int &somma, int &differenza){ somma = 0; for (int i = 0; i < rows; i++){ for (int j = 0; j < cols; j++){ cout << "Inserisci l'elemento di posizione " << i << ", " << j << " "; cin >> m[i][j]; } } for (int i = 0; i < cols; i++){ somma += m[0][i]; somma += m[rows-1][i]; } differenza = 2 * m[0][0]; for (int i = 0; i < rows; i++){ differenza -= m[i][0]; differenza -= m[i][cols-1]; } } void leggiMatrice(int **m, int rows, int cols, int *somma, int *differenza){ *somma = 0; for (int i = 0; i < rows; i++){ for (int j = 0; j < cols; j++){ cout << "Inserisci l'elemento di posizione " << i << ", " << j << " "; cin >> m[i][j]; } } for (int i = 0; i < cols; i++){ *somma += m[0][i]; *somma += m[rows-1][i]; } *differenza = 2 * m[0][0]; for (int i = 0; i < rows; i++){ *differenza -= m[i][0]; *differenza -= m[i][cols-1]; } } int **creaMatriceRuotata(int **m, int rows, int cols){ int **mRotate; mRotate = allocaMatrice(cols, rows); int x = 0; for(int i = 0; i < rows; i++) { for(int j = cols-1; j >= 0; j--) { mRotate[i][x++] = m[j][i]; } x = 0; } return mRotate; } void stampaMatrici(int **m, int **mRotate, int rows, int cols){ cout << "Matrice originale" << endl; for (int i = 0; i < rows; i++){ for (int j = 0; j < cols; j++){ cout << m[i][j] << " "; } cout << endl; } cout << endl << "Matrice ruotata" <