Manager
- Group
- User+
- Posts
- 20,990
- Reputation
- +414
- Status
- Anonymous
|
|
#include <stdio.h> #include <stdlib.h>
typedef struct { int **valori; int riga; int col; } tabella;
int leggi_riga(tabella t); int leggi_col(tabella t); int leggi_valore(tabella *t, int riga, int col); void scrivi_riga(tabella *t, int valore); void scrivi_col(tabella *t, int valore); void scrivi_valore(tabella *t, int riga, int col, int valore); int somma_diagonale_principale(tabella t); int somma_diagonale_sec(tabella t); int prodotto_diagonali(int n, int m); void popola_tabella(tabella *t); void stampa_tabella(tabella *t);
int main() { tabella tab; int dim; int somma1; int somma2; int prodotto;
printf("Inserisci dimensioni tabella: "); scanf("%d", &dim); scrivi_riga(&tab, dim); scrivi_col(&tab, dim);
tab.valori = (int**) malloc(sizeof(int*)*leggi_col(tab)); int i = 0; while (i < leggi_col(tab)) { *(tab.valori+i) = (int*) malloc(sizeof(int)*leggi_riga(tab)); i++; }
popola_tabella(&tab); stampa_tabella(&tab);
somma1 = somma_diagonale_principale(tab); somma2 = somma_diagonale_sec(tab); prodotto = prodotto_diagonali(somma1, somma2); printf("Somma diagonale principale: %d\n", somma1); printf("Somma diagonale secondaria: %d\n", somma2); printf("Prodotto tra le somme delle diagonali: %d\n", prodotto);
system("pause"); }
int leggi_riga(tabella t) { int a = t.riga; return a; }
int leggi_col(tabella t) { int a = t.col; return a; }
int leggi_valore(tabella *t, int riga, int col) { int a = t->valori[riga][col]; return a; }
void scrivi_riga(tabella *t, int valore) { t->riga = valore; }
void scrivi_col(tabella *t, int valore) { t->col = valore; }
void scrivi_valore(tabella *t, int riga, int col, int valore) { t->valori[riga][col] = valore; }
int somma_diagonale_principale(tabella t) { int i = 0; int tmp = 0; while (i < leggi_riga(t)) { tmp += leggi_valore(&t, i, i); i++; } return tmp; }
int somma_diagonale_sec(tabella t) { int i = 0; int tmp = 0; int col = leggi_riga(t)-1; while (i < leggi_riga(t)) { tmp += leggi_valore(&t, i, col-i); i++; } return tmp; }
int prodotto_diagonali(int n, int m) { int valore = n * m; return valore; }
void popola_tabella(tabella *t) { int scan; int x = 0; while (x < leggi_riga(*t)) { int y = 0; while (y < leggi_riga(*t)) { printf("Inserisci valore in riga %d, colonna %d: ", x, y); scanf("%d", &scan); scrivi_valore(t, x, y, scan); y++; } x++; } }
void stampa_tabella(tabella *t) { int z = 0; while (z < leggi_riga(*t)) { int k = 0; while (k < leggi_riga(*t)) { printf(" %d ", leggi_valore(t, z, k)); k++; } z++; printf("\n"); } }
|
|