Sai_Bot

MATRIZES- uso do "while" em operações.

Apr 30th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.48 KB | None | 0 0
  1. /*Autor: José Tobias
  2. Instituição: UNIFAL-MG*/
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <conio.h>
  6.  
  7. int main(){
  8.     float a[100][100], b[100][100], y[100][100];
  9.     int i, j, k, n, m, c, p, s, l, h, aux, x, sum;
  10.  
  11.     /*descrição das variáveis
  12.     x=auxiliar fixador de linhas.
  13.     i=contadora global.
  14.     j=contadora global.
  15.     k=contadora para as colunas e linhas das matrizes.
  16.     n=contadora para as colunas e linhas das matrizes.
  17.     m=usada para a escolha do primeiro menu.
  18.     c=usada para a escola do segundo menu se necessário.
  19.     l=linha da matriz A.
  20.     h=coluna da matriz A.
  21.     p=linha da matriz B.
  22.     s=coluna da matriz B.
  23.     sum=soma para o produto das matrizes.
  24.     */
  25.  
  26.     //leitura da matriz A
  27.     printf("Quantas linhas para a matriz A?  [1<=linhas<=100]\n");
  28.     scanf("%d" ,&l);
  29.     while(l>100){
  30.         printf("Você deve inserir um valor entre 1 e 100\n");
  31.         scanf("%d" ,&l);
  32.     }
  33.     printf("Quantas colunas para a matriz A?  [1<=linhas<=100]\n");
  34.     scanf("%d" ,&h);
  35.     while(h>100){
  36.         printf("Você deve inserir um valor entre 1 e 100\n");
  37.         scanf("%d" ,&h);
  38.     }
  39.     n=0;
  40.     while(n<l){
  41.         k=0;
  42.         while(k<h){
  43.             printf("A [%d] [%d]: ", n+1, k+1);
  44.             scanf("%f" ,&a[n][k]);
  45.             k++;
  46.         }
  47.         n++;
  48.     }
  49.     printf("\n\n");
  50.     //leitura da matriz B
  51.     printf("Quantas linhas para a matriz B?  [1<=linhas<=100]\n");
  52.     scanf("%d" ,&p);
  53.     while(p>100){
  54.         printf("Você deve inserir um valor entre 1 e 100\n");
  55.         scanf("%d" ,&p);
  56.     }
  57.     printf("Quantas colunas para a matriz B?  [1<=linhas<=100]\n");
  58.     scanf("%d" ,&s);
  59.     while(s>100){
  60.         printf("Você deve inserir um valor entre 1 e 100\n");
  61.         scanf("%d" ,&s);
  62.     }
  63.     n=0;
  64.     while(n<p){
  65.         k=0;
  66.         while(k<s){
  67.             printf("A [%d] [%d]: ", n+1, k+1);
  68.             scanf("%f" ,&b[n][k]);
  69.             k++;
  70.         }
  71.         n++;
  72.     }
  73.     printf("\n\n");
  74.     //menu 1 e cálculos
  75.     m=0;
  76.     i=0;
  77.     printf("Qual operação deseja fazer?\n");
  78.     printf("[1]Multiplicação\n");
  79.     printf("[2]Soma\n");
  80.     printf("[3]Transposição\n");
  81.     scanf("%d" ,&m);
  82.     if(m==1){
  83.         if(h!=p){
  84.             printf("Operação de multiplicação não pode ser realizada nessa matriz, pois elas não são compatíveis.\n");
  85.             printf("Você será enviado de volta a leitura das matrizes.\n\n");
  86.             system ("pause");
  87.             system("cls");
  88.             printf("\n\n");
  89.             return(main());
  90.         }else{
  91.             x=0;
  92.             while(x<l){
  93.                 j=0;
  94.                 while(j<s){
  95.                     i=0;
  96.                     sum=0;
  97.                     while(i<h){
  98.                         sum=sum+a[x][i]*b[i][j];
  99.                         i++;
  100.                     }
  101.                     y[x][j]=sum;
  102.                     j++;
  103.                 }
  104.                 x++;
  105.             }
  106.         }
  107.     }
  108.     if(m==2){
  109.         if(l!=p || h!=s){
  110.             printf("Operação de soma não pode ser realizada nessa matriz, pois suas ordens são diferentes.\n");
  111.             printf("Você será enviado de volta a leitura das matrizes.\n\n");
  112.             system ("pause");
  113.             system("cls");
  114.             printf("\n\n");
  115.             return(main());
  116.         }else{
  117.             while(i<n){
  118.                 j=0;
  119.                 while(j<k){
  120.                     y[i][j]=a[i][j]+b[i][j];
  121.                     j++;
  122.                 }
  123.                 i++;
  124.             }
  125.         }
  126.     }
  127.     //submenu da opção [3]
  128.     if(m==3){
  129.         c=0;
  130.         j=0;
  131.         printf("Em qual matriz deseja fazer a operação de transposição?\n");
  132.         printf("[1]Matriz A\n");
  133.         printf("[2]Matriz B\n");
  134.         printf("[3]Em ambas\n");
  135.         scanf("%d" ,&c);
  136.         if(c==1){
  137.             i=0;
  138.             while(i<l){
  139.                 while(j<h){
  140.                     aux=a[i][j];
  141.                     a[i][j]=a[j][i];
  142.                     a[j][i]=aux;
  143.                     j++;
  144.                 }
  145.                 i++;
  146.             }
  147.         }
  148.         j=0;
  149.         if(c==2){
  150.             i=0;
  151.                 while(i<p){
  152.                     while(j<s){
  153.                         aux=b[i][j];
  154.                         b[i][j]=b[j][i];
  155.                         b[j][i]=aux;
  156.                         j++;
  157.                     }
  158.                     i++;
  159.                 }
  160.         }else{
  161.             i=0;
  162.             j=0;
  163.             while(i<l){
  164.                     while(j<h){
  165.                         aux=a[i][j];
  166.                         a[i][j]=a[j][i];
  167.                         a[j][i]=aux;
  168.                         j++;
  169.                     }
  170.                 i++;
  171.             }
  172.             i=0;
  173.             j=0;
  174.             while(i<p){
  175.                 while(j<s){
  176.                     aux=b[i][j];
  177.                     b[i][j]=b[j][i];
  178.                     b[j][i]=aux;
  179.                     j++;
  180.                 }
  181.             i++;
  182.             }
  183.         }
  184.     }
  185.     //saída dos resultados
  186.     if(c==1 || c==3){
  187.         i=0;
  188.         printf("MATRIZ A:\n");
  189.         while(i<l){
  190.             j=0;
  191.             printf("[");
  192.             while(j<h){
  193.                 printf("%.1f  " ,a[i][j]);
  194.                 j++;
  195.             }
  196.             printf("]");
  197.             printf("\n");
  198.             i++;
  199.         }
  200.     }
  201.     printf("\n");
  202.     if(c==2 || c==3){
  203.         i=0;
  204.         printf("MATRIZ B:\n");
  205.         while(i<n){
  206.             j=0;
  207.             printf("[");
  208.             while(j<k){
  209.                 printf("%.1f  " ,b[i][j]);
  210.                 j++;
  211.             }
  212.             printf("]");
  213.             printf("\n");
  214.             i++;
  215.         }
  216.     }
  217.     if(m==2){
  218.         printf("\n");
  219.         i=0;
  220.         printf("MATRIZ RESULTADO:\n");
  221.         while(i<n){
  222.             j=0;
  223.             printf("[");
  224.             while(j<k){
  225.                 printf("%.1f  " ,y[i][j]);
  226.                 j++;
  227.             }
  228.             printf("]");
  229.             printf("\n");
  230.             i++;
  231.         }
  232.     }
  233.     if(m==1){
  234.         printf("\n");
  235.         i=0;
  236.         printf("MATRIZ RESULTADO:\n");
  237.         while(i<l){
  238.             j=0;
  239.             printf("[");
  240.             while(j<s){
  241.                 printf("%.1f  " ,y[i][j]);
  242.                 j++;
  243.             }
  244.             printf("]");
  245.             printf("\n");
  246.             i++;
  247.         }
  248.     }
  249. }
Advertisement
Add Comment
Please, Sign In to add comment