Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int l, c;
- int** aloca(int **v){
- int i, j;
- printf("Digite o numero de linhas da matriz: ");
- scanf("%d",&l);
- printf("Digite o numero de colunas da matriz: ");
- scanf("%d",&c);
- v=(int**)malloc(l*sizeof(int*));
- for(i=0;i<l;i++) v[i]=(int*)malloc(c*sizeof(int));
- printf("Digite os valores do vetor: ");
- for(i=0;i<l;i++){
- for(j=0;j<c;j++) scanf("%d",&v[i][j]);
- }
- return v;
- }
- void imprime(int **v){
- int i,j;
- for(i=0;i<l;i++){
- for(j=0;j<c;j++) printf("%d\t",v[i][j]);
- printf("\n");
- }
- }
- int** soma(int **a, int **b){
- int i, j, **S;
- S=(int**)malloc(l*sizeof(int*));
- for(i=0;i<l;i++) S[i]=(int*)malloc(c*sizeof(int));
- for(i=0;i<l;i++){
- for(j=0;j<c;j++) S[i][j] = a[i][j]+b[i][j];
- }
- return S;
- }
- int** subt(int **a, int **b){
- int i, j, **sub;
- sub=(int**)malloc(l*sizeof(int*));
- for(i=0;i<l;i++) sub[i]=(int*)malloc(c*sizeof(int));
- for(i=0;i<l;i++){
- for(j=0;j<c;j++) sub[i][j] = a[i][j]-b[i][j];
- }
- return sub;
- }
- int** produ(int **a, int **b, int linha1, int coluna1, int linha2, int coluna2){
- int i, j, k, **prod;
- prod=(int**)malloc(linha1*sizeof(int*));
- for(i=0;i<linha1;i++) prod[i]=(int*)malloc(coluna2*sizeof(int));
- for(i=0;i<linha1;i++){
- for(j=0;j<coluna2;j++){
- prod[i][j]=0;
- for(k=0;k<coluna1;k++) prod[i][j] = prod[i][j] + (a[i][k]*b[k][j]);
- }
- }
- return prod;
- }
- int** in_mat(int **a){
- int i, j, inmat, **inm;
- inm=(int**)malloc(l*sizeof(int*));
- for(i=0;i<l;i++) inm[i]=(int*)malloc(c*sizeof(int));
- printf("Digite o inteiro que deseja multiplicar pelo vetor: ");
- scanf("%d",&inmat);
- for(i=0;i<l;i++){
- for(j=0;j<c;j++) inm[i][j] = inmat*a[i][j];
- }
- return inm;
- }
- int main(){
- int **a, **b, i, op, **k;
- int linha1,coluna1,linha2,coluna2;
- k=(int**)malloc(l*sizeof(int*));
- for(i=0;i<l;i++) k[i]=(int*)malloc(c*sizeof(int));
- menu:
- system("cls");
- printf("Opcoes:\n1 - Calcular a soma entre duas matrizes;\n2 - Calcular a subtracao entre duas matrizes;\n");
- printf("3 - Calcular o produto entre duas matrizes;\n4 - Calcular o produto entre um inteiro e uma matriz;\n5 - Sair.\nDigite a opcao: ");
- scanf("%d",&op);
- switch(op){
- case 1:
- system("cls");
- a = aloca(a);
- linha1 = l;
- coluna1 = c;
- b = aloca(b);
- linha2 = l;
- coluna2 = c;
- if(linha1 != linha2 || coluna1 != coluna2){
- system("cls");
- printf("A soma so e possivel se as matrizes possuirem o mesmo numero de linhas e colunas");
- getch();
- goto menu;
- }
- k = soma(a,b);
- printf("A matriz resultante e: \n");
- imprime(k);
- free(a);
- free(b);
- getch();
- goto menu;
- break;
- case 2:
- system("cls");
- a = aloca(a);
- linha1 = l;
- coluna1 = c;
- b = aloca(b);
- linha2 = l;
- coluna2 = c;
- if(linha1 != linha2 || coluna1 != coluna2){
- system("cls");
- printf("A subtracao so e possivel se as matrizes possuirem o mesmo numero de linhas e colunas");
- getch();
- goto menu;
- }
- k = subt(a,b);
- printf("A matriz resultante e: \n");
- imprime(k);
- free(a);
- free(b);
- getch();
- goto menu;
- break;
- case 3:
- free(k);
- k=(int**)malloc(linha1*sizeof(int*));
- for(i=0;i<l;i++) k[i]=(int*)malloc(coluna2*sizeof(int));
- system("cls");
- a = aloca(a);
- linha1 = l;
- coluna1 = c;
- b = aloca(b);
- linha2 = l;
- coluna2 = c;
- getch();
- if(coluna1 != linha2){
- system("cls");
- printf("O produto so e possivel se a quantidade de colunas da primeira matriz for a mesma quantidade de linhas da segunda matriz");
- getch();
- goto menu;
- }
- k = produ(a,b,linha1,coluna1,linha2,coluna2);
- printf("A matriz resultante e: \n");
- imprime(k);
- free(a);
- free(b);
- k=(int**)malloc(l*sizeof(int*));
- for(i=0;i<l;i++) k[i]=(int*)malloc(c*sizeof(int));
- getch();
- goto menu;
- break;
- case 4:
- system("cls");
- a = aloca(a);
- k = in_mat(a);
- printf("A matriz resultante e: \n");
- imprime(k);
- free(a);
- getch();
- goto menu;
- break;
- case 5:
- system("cls");
- printf("Fim do Programa");
- sleep(1000);
- free(k);
- return 0;
- default:
- system("cls");
- printf("Opcao Invalida");
- getch();
- goto menu;
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement