int SubMat(MatHandler mat1, MatHandler mat2, MatHandler *ans){ matrix_t m = *(matrix_t *)mat2; if (!mat2) return M_ERR_PTRISNULL; for (int i = 0; i < m.cols; ++i){ for (int j = 0; j < m.rows; ++j){ int t = idx(i, m.cols, j); m.data[t] *= -1; } } return AddMat(mat1, &m, ans); }
int main(void) { short Tab1[MAX_COL][MAX_COL] ,Tab2[MAX_COL][MAX_COL] ,Tab3[MAX_COL][MAX_COL]={0} ,Vect[MAX_COL]={0},n,val; char choix,retour='O'; srand(time(NULL)); Init(&Tab1[0][0],&Tab2[0][0],&n); printf("\n Matrice 1: \n"); printf(" ----------\n"); Affiche(&Tab1[0][0],n,n); printf("\n"); printf(" Matrice 2: \n"); printf(" ----------\n"); Affiche(&Tab2[0][0],n,n); printf("\n"); system("pause"); system("cls"); while((retour=='O')||(retour=='o')) { Menu(&choix); switch(choix) { case '1': printf("Valeur du nombre a ajouter a la premiere matrice : "); scanf("%hd",&val); AddVal(&Tab1[0][0],&Tab3[0][0],n,val); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '2': AddMat(&Tab1[0][0],&Tab2[0][0],&Tab3[0][0],n); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '3': printf("Valeur du nombre a soustraire a la premiere matrice : "); scanf("%hd",&val); SousVal(&Tab1[0][0],&Tab3[0][0],n,val); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '4': SousMat(&Tab1[0][0],&Tab2[0][0],&Tab3[0][0],n); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '5': printf("Valeur du nombre a multiplier a la premiere matrice : "); scanf("%hd",&val); MultVal(&Tab1[0][0],&Tab3[0][0],n,val); printf("\n Resultat : \n"); printf(" -----------\n"); Affiche(&Tab3[0][0],n,n); printf("\n"); break; case '6': MultMat(&Tab1[0][0],&Tab2[0][0],&Vect[0],n); printf("\n Matrice 1 : \n"); printf(" -----------\n"); Affiche(&Tab1[0][0],n,n); printf("\n"); printf("\n Matrice 2 : \n"); printf(" -----------\n"); Affiche(&Tab2[0][0],n,n); printf("\n Vecteur : \n"); printf(" -----------\n"); Affiche(&Vect[0],n,1); break; case '7': ; } if (choix!='7') { printf("\n\nRetour au menu ? [O/N] \n"); fflush(stdin); scanf("%c",&retour); system("cls"); } else { retour='n'; } } system("pause"); return(0); }