marcoshuck

Matriz dinámica con cálculo de promedio

Dec 15th, 2016
436
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.76 KB | None | 0 0
  1. /*
  2.  
  3. CONSIGNA:
  4. ---------
  5.  
  6. Mátriz dinámica promedio
  7.  
  8. A partir de una matriz dada de n filas por m columnas, la cual contiene números aleatorios menores a 20;
  9. se desea calcular otra matriz con las mismas dimensiones pero con la particularidad que, salvo su primer y ultimo elemento,
  10. el valor de cada uno de sus elementos es el resultado del promedio de la suma del elemento anterior, el actual y el siguiente.
  11.  
  12. Desarrolle un programa que sea capaz de generar la matriz original a partir de las dimensiones asignadas por el usuario,
  13. calcule la matriz resultado y la muestre por pantalla.
  14.  
  15. */
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19.  
  20. #define MAX_VAL 20
  21. #define MIN_VAL 0
  22.  
  23. int generar_matriz(int ** m, int filas, int cols);
  24. int resolver_matriz(float ** pr, int filas, int cols);
  25. void mostrar_matriz(void ** m, int filas, int cols);
  26.  
  27. int main(int argc, char *argv[])
  28. {
  29.     // Variables
  30.     unsigned int filas, cols;
  31.    
  32.     // Acumuladores
  33.     unsigned int i;
  34.    
  35.     // Matrices (original y promedio)
  36.     int ** m;
  37.     float ** pr;
  38.    
  39.     // Inicio de la app
  40.     printf("Matriz dinamica aleatoria\n-------------------------\n");
  41.    
  42.     // Cantidad de filas
  43.     printf("Ingrese cantidad de filas: ");
  44.     scanf("%u", &filas);
  45.    
  46.     // Cantidad de columnas
  47.     printf("Ingrese cantidad de columnas: ");
  48.     scanf("%u", &cols);
  49.    
  50.     // Inicializacion de las matrices
  51.     m = (int **)calloc(filas, sizeof(int *));
  52.     pr = (float **)calloc(filas, sizeof(float *));
  53.    
  54.     // Verificar si fue correcta la inicialización
  55.     if(m == NULL || pr == NULL)
  56.     {
  57.         printf("Error: No hay memoria disponible para la asignacion.\n");
  58.         system("PAUSE");
  59.         return -1;
  60.     }
  61.    
  62.     // Asignación de filas y columnas
  63.     for(i = 0; i < filas; i++)
  64.     {
  65.         m[i] = (int *)calloc(cols, sizeof(int));
  66.         pr[i] = (float *)calloc(cols, sizeof(float));
  67.         if(m[i] == NULL || pr[i] == NULL)
  68.         {
  69.             for(j = 0; j < i; j++)
  70.             {
  71.                 free(m[j]);
  72.                 free(pr[j]);
  73.             }
  74.         }
  75.     }
  76.    
  77.     // Generar matriz (original)
  78.     generar_matriz(m, filas, cols);
  79.    
  80.     // Mostrar matriz (original)
  81.     mostrar_matriz((int **)m, filas, cols);
  82.    
  83.    
  84.     system("PAUSE");   
  85.     return 0;
  86. }
  87.  
  88. int generar_matriz(int ** m, int filas, int cols)
  89. {
  90.     unsigned int i, j;
  91.     for(i = 0; i < filas; i++)
  92.     {
  93.         m[i] = (int *)calloc(cols, sizeof(int));
  94.         if(m[i] == NULL)
  95.         {
  96.             free(m[i]);
  97.         }
  98.     }
  99.     srand(time(0));
  100.     for(i = 0; i < filas; i++)
  101.         for(j = 0; j < filas; j++)
  102.             m[i][j] = (rand()%MAX_VAL) + MIN_VAL;
  103. }
  104.  
  105. void mostrar_matriz(void ** m, int filas, int cols)
  106. {
  107.     // Completar
  108. }
Advertisement
Add Comment
Please, Sign In to add comment