Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/08/2008, 15:48
yackcae
 
Fecha de Ingreso: junio-2008
Mensajes: 63
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: Ayuda urgente plis

Hay algunos detalles:

Código:
imagen=(int*)malloc(ancho*alto*sizeof(int));
printf("el resultado es %d",repetir(imagen,ancho,alto,color));
Estás asignando la memoria, pero no estas inicializando los valores de la imagen, yo lo he puesto así para poder ver los datos y saber que se están leyendo bien:
Código:
imagen=(int*)malloc(ancho*alto*sizeof(int));
// Inicio todos los datos a 0, 1, 2, 3, 4... para ver con claridad las pruebas.
for(int i=0; i<ancho*alto; i++) *(imagen+i)=i;
printf("el resultado es %d",repetir(imagen,ancho,alto,color));
free(imagen); // Liberar la memoria usada. 
El cálculo correcto para acceder a los elementos de una matriz que está representada de forma lineal es x+(y*ancho), quedando así en el código:
Código:
printf("%d ",*(img + (i + (j*ncols))));
por último la comparación de las variables en el for no es hasta j<=nfilas es hasta j<nfilas, recuerda que empieza en 0 no en 1, y por motivos de comodidad yo invertiría los for para que así vaya en orden recorriendo la matriz y escriba los valores en pantalla como en la imagen, así:
Código:
for(j=0;j<nfilas;j++)
 for(i=0;i<ncols;i++)
  printf("%d ",*(img + (i + (j*ncols))));
No he revisado que haga bien el trabajo que pone en el ejercicio, solo me he limitado a revisar que los datos se lean bien desde "imagen".

PD: ¿Por qué el código en verde? casi no se lee.

Saludos.