Autor Tema: Problema con shift_left en matriz  (Leído 1973 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Problema con shift_left en matriz
« en: 23 de Diciembre de 2008, 23:31:11 »
Me pasé unas cuantas horas revisando el problema, pero no entiendo que es lo que esta pasando con esta operación que hago, el desplazamiento a la izquierda no esta funcionando, me da como resultado 1, que es falso:

Código: [Seleccionar]
#include <16f88.h>
#fuses HS,NOWDT,NOLVP,PUT,NOBROWNOUT
#use delay(clock=20000000)

int matriz[2][8]={{255,0,0,0,0,0,0,0},{182,0,0,0,0,0,0,0}};
int carries[2];

void main(void){
   int i,j;
   
   for(i=0;i<8;i++){
      for(j=0;j<2;j++){
         carries[j]=shift_left(&matriz[j][i],1,0);
      }
   }
}

que es lo que hago mal? porque los resultados de la rotación son 1 :shock: no entiendo porque, es posible desplazar los datos de una matriz?

un saludo y muchas gracias por la ayuda.

Esto lo hice con el proteus y el ccs, les dejo el adjunto para que prueben el cof y que los valores se ponen en 1
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con shift_left en matriz
« Respuesta #1 en: 24 de Diciembre de 2008, 13:45:15 »
hola, anoche como mi cabeza solo daba vueltas en el shift_left me soñé que no hay forma de utilizar esa función con una matriz :D

ahora hice esto:
carries[j]=shift_left(&(matriz[j][i ]),1,0);

y nada

cambie todo por esto:
Código: [Seleccionar]
         a=matriz[j][i];
         carries[j]=shift_left(&a,1,0);
         matriz[j][i]=a;

y este si dio, entonces concluyo que para direccionar una matriz o bien no hay forma o se hace de otra manera, porque con solo un arreglo lineal la función va bien.

Que opinan??
.