Hola.
Resulta que estuve leyendo lo más detenidamente el K&R y me encuentro en la parte de punteros (supongo yo la parte más importante de todo el lenguaje C).
Quiero ver si entendí bien cuál es la noción de matrices (Arreglos bidimensionales) y su relación con los punteros, porque hice un programa que por donde lo vea pienso que debería andar pero no anda.
Veamos: Sé que un puntero es una variable que indica la dirección de memoria de otra variable (a la cual "apunta"). Se también, que en los arreglos las direcciones de memoria son contiguas, es decir que si creo un puntero al primer elemento del arreglo, puedo obtener la dirección de los otros elementos del arreglo mediante sumas y, si es posible restas(por ejemplo si p es un puntero a int, p se puede tomar como la dirección del elemento 0, p+1 vendria a ser la dirección del elemento 1, etc).
Ahora bien, si cada puntero podemos considerar que comienza en "el primer elemento de un arreglo", entonces yo podria pensar en hacer un arreglo de punteros para obtener un "arreglo de arreglos", lo cual simularía una matriz. Luego tendría un puntero a puntero, que me indicaría en qué fila estoy y después según a qué se encuentre apuntando el puntero fila tendría en qué columna estoy.
En fin... resulta que busqué ejercicios para hacer en internet y uno decía "pida un número y luego imprima una matriz de nxn tal que el elemento a
[j] es 1 si i y j son coprimos, y 0 de lo contrario".
Esto es lo que hice:
#include <stdio.h>
#include <stdlib.h>
char son_coprimos(int x, int y)
{
int i;
if(x<=1 || y<=1) return 1;
if((x%2 == 0) && (y%2 == 0)) return 0;
for(i=3; 2*i<=x;i+=2)
if((x%i == 0) && (y%i == 0)) return 0;
return 1;
}
void matriz_coprimos(char **m, int n)
{
int i, j;
m
= (char**) malloc(sizeof(char*) * n
); for(i=0;i<n;++i)
m
[i
] = (char*) malloc(sizeof(char) * n
);
for(i=0;i<n;++i)
for(j=0;j<n;++j)
m[i][j] = son_coprimos(i+1, j+1);
}
main()
{
char **a, n, i, j;
matriz_coprimos(a, n);
for(i=0;i<n;++i)
{
for(j=0;j<n;++j)
}
}
PD: Claramente mi SO es windows xD
Saludos y muchas gracias.