Guest User

Untitled

a guest
Jan 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.83 KB | None | 0 0
  1. /**
  2.  * programa para operações com duas matrizes:
  3.  * - Carga em 2 matrizes quadradas de valores inteiros
  4.  * - Função para obter a soma da diagonal principal
  5.  * - Função para obter a soma da diagonal secundária
  6.  * - Função para realizar a soma das duas matrizes.
  7.  * - Função para verificar se as matrizes são do tipo identidade.
  8.  * - Função para fazer a multiplicação das matrizes
  9.  * - Função para calcular a determinante
  10.  * Autor: Renato Santos de Souza
  11.  * Data: 17/10/2011
  12.  * Programa: matrix.c
  13. **/
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. // ----------------------------------------------------------------------------
  17. int read_number(char *str){
  18.     printf("digite o número %s: ", str);
  19.     int n;
  20.     scanf("%d", &n);
  21.     return n;
  22. }
  23. // ----------------------------------------------------------------------------
  24. double read_numberd(char *str){
  25.     printf("digite o número %s: ", str);
  26.     double n;
  27.     scanf("%lf", &n);
  28.     return n;
  29. }
  30. // ----------------------------------------------------------------------------
  31. int confirm_action(char *str){
  32.     printf("%s: 1/0: ", str);
  33.    
  34.     char ch = 0;
  35.     scanf("%d1", &ch);
  36.  
  37.     return (ch == 1);
  38.  
  39. }
  40. // ----------------------------------------------------------------------------
  41. void input_matrix(double ***matrix, int lines, int cols){
  42.  
  43.     for (int i = 0; i < lines; i++){
  44.         for (int j = 0; j < cols; j++){
  45.             //char* str;
  46.             //sprintf(str, "matrix[%d][%d] = ?; // linha %d, coluna %d: ", i, j, i+1, j+1);
  47.            
  48.             *matrix[i][j] = (double)read_numberd((char*)"a");
  49.         }
  50.     }
  51.    
  52. }
  53. // ----------------------------------------------------------------------------
  54. void show_matrix(double ***matrix, int lines, int cols){
  55.     if (matrix == NULL)
  56.     {
  57.         printf("ERRO: MATRIX NAO CARREGADA\n");
  58.         return;
  59.     }
  60.    
  61.     printf("--- MATRIX ------------------------------\n");
  62.     for (int i = 0; i < lines; i++){
  63.         printf("|   ");
  64.         for (int j = 0; j < cols; j++){
  65.             printf("%.02f, ", (*matrix)[i][j]);
  66.         }
  67.         printf("\n");
  68.     }
  69.     printf("--- LINEAR ------------------------------\n");
  70.     for (int i = 0; i < lines; i++){
  71.         for (int j = 0; j < cols; j++){
  72.             printf("matrix[%d][%d] = %.02f; // linha %d, coluna %d\n", i, j, (*matrix)[i][j], i+1, j+1);
  73.         }
  74.     }
  75.     printf("-----------------------------------------\n");
  76. }
  77. // ----------------------------------------------------------------------------
  78. void new_matrix(double ***matrix, int *linhas, int *colunas){
  79.     *linhas  = read_number((char*)"de linhas");
  80.     *colunas = read_number((char*)"de colunas");
  81.    
  82.     if (*colunas == *linhas)
  83.         printf("matriz quadrada\n");
  84.     else
  85.         printf("matriz não quadrada\n");
  86.  
  87.    
  88.     // aloca memoria para as linhas
  89.     *matrix = (double**)malloc(*linhas * sizeof(double*));
  90.     printf("1\n");
  91.     for (int i = 0; i < *linhas; i++) {
  92.         printf("i = %d\n", i);
  93.         // pra cada linha aloca mais memora pra cada coluna
  94.         // fazendo isso, pode-se criar memoria mais segmentadas
  95.         // entao sistemas com pouca memoria livre e sem um kernel inteligente
  96.         // continuam funcionando
  97.         (*matrix)[i] = (double*)malloc(*colunas * sizeof(double));
  98.        
  99.         // inicializando um por um, mas poderia ser feito com um menset()
  100.         for (int j = 0; j < *colunas; j++){
  101.             printf("4\n");
  102.             (*matrix)[i][j] = .0;
  103.             printf("4.1\n");
  104.         }
  105.     }
  106.  
  107.    
  108. }
  109. // ----------------------------------------------------------------------------
  110. int j_colunas_a, i_linhas_a;
  111. int j_colunas_b, i_linhas_b;
  112. double **matrix_a = NULL;
  113. double **matrix_b = NULL;
  114. // ----------------------------------------------------------------------------
  115. main(){
  116.  
  117.  
  118.     printf("Entre com os dados da Matriz A\n");
  119.     new_matrix(&matrix_a, &i_linhas_a, &j_colunas_a);
  120.  
  121.     if(confirm_action((char*)"deseja digitar a Matriz A?"))
  122.     //  input_matrix(matrix_a, i_linhas_a, j_colunas_a);
  123.    
  124.     show_matrix(&matrix_a, i_linhas_a, j_colunas_a);
  125.    
  126. /*
  127.     printf("Entre com os dados da Matriz B\n");
  128.     new_matrix(matrix_b, &i_linhas_b, &j_colunas_b);
  129.     if (confirm_action((char*)"deseja digitar a Matriz B?"))
  130.         input_matrix(matrix, linhas, colunas);
  131.     */
  132.    
  133. }
Add Comment
Please, Sign In to add comment