Punt a matriz y mult x constante

15 puntMatriz.html
/****************** Array de dos dimensiones ******************/
/* puntero a una matriz
comentar las instrucciones con la variable "puntero" y descomentar las instrucciones con la variable "p" y viceversa
El objetivo es probar 2 opciones de aritmética distintas.
 */
#include <stdio.h>
#define F 4  /* número de filas */
#define C 5  /* número de columnas */

int main()
{
  int tabla[F][C] = { { 10, 12, 15, 17, 14 },
                      { 22, 20, 23, 25, 21 },
                      { 38, 30, 34, 36, 35 },
                      { 45, 41, 44, 48, 49 }};
  const int k = 10;
  int f, c;
  int *puntero[F];
  int *p; //otro puntero
  p=(int*)tabla;
  puntero[0]=tabla[0]; 
  puntero[1]=tabla[1];
  puntero[2]=tabla[2];
  puntero[3]=tabla[3];
  /* Multiplicar cada elemento por una constante k */
  for (f = 0; f < F; f++)
    for (c = 0; c < C; c++) // Para acceder a una columna se hace con esta aritmética de punteros
      //*(*(puntero+f)+c) *= k; // Esto es para multiplicar cada valor por la constante k, que es 10. Apunta a la fila y sumo la columna y obtengo direccion de la fila. Con asterisco externo accedo al valor contenido en la direccion apuntada por todo lo demás. Y eso multiplicado por k
      p[f*C+c]*=k; // f = numero de filas * numero de columnas que es 5, con eso me muevo por las filas. Y luego sumo c minuscula que es la columna actual

  /* Escribir el array */
  for (f = 0; f < F; f++)
  {
    for (c = 0; c < C; c++)
      printf("%5d", *(*(puntero+f)+c)); 
      //printf("%5d", p[f*C+c]);
    putchar('\n');
  }
  
  system("pause");
  return 0;
}

No hay comentarios:

Publicar un comentario