Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Autor: José Tobias
- Instituição: UNIFAL-MG*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- int main(){
- float a[100][100], b[100][100], y[100][100];
- int i, j, k, n, m, c, p, s, l, h, aux, x, sum;
- /*descrição das variáveis
- x=auxiliar fixador de linhas.
- i=contadora global.
- j=contadora global.
- k=contadora para as colunas e linhas das matrizes.
- n=contadora para as colunas e linhas das matrizes.
- m=usada para a escolha do primeiro menu.
- c=usada para a escola do segundo menu se necessário.
- l=linha da matriz A.
- h=coluna da matriz A.
- p=linha da matriz B.
- s=coluna da matriz B.
- sum=soma para o produto das matrizes.
- */
- //leitura da matriz A
- printf("Quantas linhas para a matriz A? [1<=linhas<=100]\n");
- scanf("%d" ,&l);
- while(l>100){
- printf("Você deve inserir um valor entre 1 e 100\n");
- scanf("%d" ,&l);
- }
- printf("Quantas colunas para a matriz A? [1<=linhas<=100]\n");
- scanf("%d" ,&h);
- while(h>100){
- printf("Você deve inserir um valor entre 1 e 100\n");
- scanf("%d" ,&h);
- }
- n=0;
- while(n<l){
- k=0;
- while(k<h){
- printf("A [%d] [%d]: ", n+1, k+1);
- scanf("%f" ,&a[n][k]);
- k++;
- }
- n++;
- }
- printf("\n\n");
- //leitura da matriz B
- printf("Quantas linhas para a matriz B? [1<=linhas<=100]\n");
- scanf("%d" ,&p);
- while(p>100){
- printf("Você deve inserir um valor entre 1 e 100\n");
- scanf("%d" ,&p);
- }
- printf("Quantas colunas para a matriz B? [1<=linhas<=100]\n");
- scanf("%d" ,&s);
- while(s>100){
- printf("Você deve inserir um valor entre 1 e 100\n");
- scanf("%d" ,&s);
- }
- n=0;
- while(n<p){
- k=0;
- while(k<s){
- printf("A [%d] [%d]: ", n+1, k+1);
- scanf("%f" ,&b[n][k]);
- k++;
- }
- n++;
- }
- printf("\n\n");
- //menu 1 e cálculos
- m=0;
- i=0;
- printf("Qual operação deseja fazer?\n");
- printf("[1]Multiplicação\n");
- printf("[2]Soma\n");
- printf("[3]Transposição\n");
- scanf("%d" ,&m);
- if(m==1){
- if(h!=p){
- printf("Operação de multiplicação não pode ser realizada nessa matriz, pois elas não são compatíveis.\n");
- printf("Você será enviado de volta a leitura das matrizes.\n\n");
- system ("pause");
- system("cls");
- printf("\n\n");
- return(main());
- }else{
- x=0;
- while(x<l){
- j=0;
- while(j<s){
- i=0;
- sum=0;
- while(i<h){
- sum=sum+a[x][i]*b[i][j];
- i++;
- }
- y[x][j]=sum;
- j++;
- }
- x++;
- }
- }
- }
- if(m==2){
- if(l!=p || h!=s){
- printf("Operação de soma não pode ser realizada nessa matriz, pois suas ordens são diferentes.\n");
- printf("Você será enviado de volta a leitura das matrizes.\n\n");
- system ("pause");
- system("cls");
- printf("\n\n");
- return(main());
- }else{
- while(i<n){
- j=0;
- while(j<k){
- y[i][j]=a[i][j]+b[i][j];
- j++;
- }
- i++;
- }
- }
- }
- //submenu da opção [3]
- if(m==3){
- c=0;
- j=0;
- printf("Em qual matriz deseja fazer a operação de transposição?\n");
- printf("[1]Matriz A\n");
- printf("[2]Matriz B\n");
- printf("[3]Em ambas\n");
- scanf("%d" ,&c);
- if(c==1){
- i=0;
- while(i<l){
- while(j<h){
- aux=a[i][j];
- a[i][j]=a[j][i];
- a[j][i]=aux;
- j++;
- }
- i++;
- }
- }
- j=0;
- if(c==2){
- i=0;
- while(i<p){
- while(j<s){
- aux=b[i][j];
- b[i][j]=b[j][i];
- b[j][i]=aux;
- j++;
- }
- i++;
- }
- }else{
- i=0;
- j=0;
- while(i<l){
- while(j<h){
- aux=a[i][j];
- a[i][j]=a[j][i];
- a[j][i]=aux;
- j++;
- }
- i++;
- }
- i=0;
- j=0;
- while(i<p){
- while(j<s){
- aux=b[i][j];
- b[i][j]=b[j][i];
- b[j][i]=aux;
- j++;
- }
- i++;
- }
- }
- }
- //saída dos resultados
- if(c==1 || c==3){
- i=0;
- printf("MATRIZ A:\n");
- while(i<l){
- j=0;
- printf("[");
- while(j<h){
- printf("%.1f " ,a[i][j]);
- j++;
- }
- printf("]");
- printf("\n");
- i++;
- }
- }
- printf("\n");
- if(c==2 || c==3){
- i=0;
- printf("MATRIZ B:\n");
- while(i<n){
- j=0;
- printf("[");
- while(j<k){
- printf("%.1f " ,b[i][j]);
- j++;
- }
- printf("]");
- printf("\n");
- i++;
- }
- }
- if(m==2){
- printf("\n");
- i=0;
- printf("MATRIZ RESULTADO:\n");
- while(i<n){
- j=0;
- printf("[");
- while(j<k){
- printf("%.1f " ,y[i][j]);
- j++;
- }
- printf("]");
- printf("\n");
- i++;
- }
- }
- if(m==1){
- printf("\n");
- i=0;
- printf("MATRIZ RESULTADO:\n");
- while(i<l){
- j=0;
- printf("[");
- while(j<s){
- printf("%.1f " ,y[i][j]);
- j++;
- }
- printf("]");
- printf("\n");
- i++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment