#include #include"matrice.h" void visualizzaMenu(); void calcolaTrasposta(); void calcolaTraspostaDaFile(); void confrontaMatrici(); void confrontaMatriciDaFile(); void scriviTrasposta(); /* main(): fornisce un menu principale mediante il quale l'utente puoi scegliere di effettuare una tra le possibili operazioni fornite dalla libreria */ main(){ int scelta; do { visualizzaMenu(); scanf("%d",&scelta); switch (scelta){ case 1: calcolaTrasposta(); break; case 2: confrontaMatrici(); break; case 3: calcolaTraspostaDaFile(); break; case 4: confrontaMatriciDaFile(); break; case 9: break; default: printf("Opzione inserita non valida!"); } } while(scelta!=9); printf("Fine\n"); } /* visualizzaMenu(): visualizza il menu principale a video */ void visualizzaMenu(){ printf("----- OPERAZIONI SU MATRICI -----\n"); printf("-1- Calcola trasposta (lettura da tastiera)\n"); printf("-2- Confronta due matrici (lettura da tastiera)\n"); printf("-3- Calcola trasposta (lettura da file)\n"); printf("-4- Confronta due matrici (lettura da file)\n"); printf("-9- Esci\n"); } /* calcolaTrasposta(): effettua tutte le operazioni necessarie a calcolare la matrice trasposta di una matrice letta da tastiera. La matrice trasposta viene poi passata alla funzione scriviTrasposta() che permette all'utente di visualizzarla a video o di scriverla su file mediante l'utilizzo di un menu. */ void calcolaTrasposta(){ int scelta=0; char nomeFile[30]; matriceT mat, trasp; printf("Inserire la matrice da tastiera\n"); leggiMatrice(&mat); trasposta(&mat, &trasp); scriviTrasposta(&trasp); } /* Funzione che si occupa di calcolare la matrice trasposta di una matrice letta da un file il cui nome viene richiesto all'utente. La matrice trasposta viene poi passata alla funzione scriviTrasposta() che permette all'utente di visualizzarla a video o di scriverla su file mediante l'utilizzo di un menu. */ void calcolaTraspostaDaFile(){ char nomeFileMat[30]; matriceT mat, trasp; printf("Inserire il nome del file\n"); scanf("%s",nomeFileMat); leggiMatriceDaFile(&mat, nomeFileMat); trasposta(&mat, &trasp); scriviTrasposta(&trasp); } /* scriviTrasposta(matriceT *trasp): si occupa di visualizzare un menu che permette all'utente di scegliere un'operazione da effetture sulla matrice trasposta trasp calcolata precedentemente. In particolare il menu permette di effettuare più volte una tra le possibili operazioni di scrittura a video o su file, fino a che l'utente non inserisce 3. ATTENZIONE: si può utilizzare questa funzione anche per le operazioni da effettuare su una matrice che è risultato di un'altra operazione? (ad esempio l'inversa, il prodotto, la somma, etc.) No, poichè il menu si riferisce alla matrice trasposta (ovvero al risultato dell'operazione di trasposizione di una matrice di partenza) Per renderla utilizzabile in tutti i casi, una soluzione è quella di aggiungere un parametro alla funzione, ovvero la stringa che corrisponde al tipo di matrice da stampare. Ad esempio per la trasposta si passerà " la matrice trasposta" per il prodotto "la matrice prodotto", etc */ void scriviTrasposta(matriceT *trasp){ char nomeFile[30]; int scelta; do { printf("-1- Scrivi la matrice trasposta a video\n"); printf("-2- Scrivi la matrice trasposta su file\n"); printf("-3- Esci da questo menu\n"); scanf("%d",&scelta); switch (scelta){ case 1: scriviMatrice(trasp); break; case 2: printf("Inserire il nome del file\n"); scanf("%s",nomeFile); scriviMatriceSuFile(trasp, nomeFile); printf("Operazione di scrittura su file effettuata"); break; case 3: break; default: printf("Inserire una opzione valida!"); } } while(scelta!=3); } /* QUESTA FUNZIONE ESEGUE IL CONFRONTO TRA DUE MATRICI LETTE DA TASTIERA PER FUNZIONARE CORRETTAMENTE, RICHIEDE CHE VENGA IMPLEMENTATA LA FUNZIONE CONFRONTA() DELLA LIBRERIA MATRICE.H */ void confrontaMatrici(){ matriceT mat1, mat2; int risultato; printf("Inserire la prima matrice\n"); leggiMatrice(&mat1); printf("Inserire la seconda matrice\n"); leggiMatrice(&mat2); risultato = confronta(&mat1, &mat2); if(risultato) printf("le matrici sono diverse\n"); else printf("le matrici sono uguali\n"); } /* COMPLETATE QUESTA FUNZIONE!!! */ void confrontaMatriciDaFile(){ }