Ejemplo de uso del programa de prueba para despulgar sus librerias: ejemplo con funcion concatena

Ejemplo de uso del programa de prueba para despulgar sus librerias: ejemplo con funcion concatena

de Leonardo Barboni -
Número de respuestas: 0

Estimados

Frente a las dudas planteadas, y ademas de la aclaracion que ya envio Gregory, les paso otro ejemplo que espero los pueda ayudar a entender como usar la informacion del programa de test. 

Repetimos que el programa de test trabaja con las variables tal como se piden en el obligatorio y prueba las implementaciones de sus librerias tal como se piden en la letra del obligatorio.

La impresion en binario de las variables es solamente un formato para visualizar los datos que ayuda mucho a despulgar sus programas


Veamos paso a paso como utilizar la informacion:

1 ) supongamos que usamos la funcion concatena()

    El programa de prueba toma la funcion concatena(.) , por ejemplo de la siguiente manera     

    concatena(1907204998,2,59330089,17) 

    Donde, 

    buffer=1907204998

    nbb=2

    codigo=59330089

    nbc=17

    (el programa de prueba toma valores al azar)


2)  En ese caso la funcion concatena debe devolver :  concatena(1907204998,2,593300891,17)=1774526464

3) Veamos las variables en binario 

1907204998  = 0b01110001101011011010001110000110

59330089    = 0b00000011100010010100111000101001

1774526464  = 0b01101001110001010010000000000000


3) Veamos la concatenacion paso a paso 


0b01110001101011011010001110000110   ->  tomo los 2  bits mas significativos  = 01

0b00000011100010010100111000101001   ->  tomo los 17 bits menos significativos  = 10100111000101001 


Y estos se concatenan:   0b0110100111000101001    (resultaron 19 bits)

Ademas recuerde que la letra dice que si la suma de los bits concatenados es menor a 32 bits se debe completar a la derecha de la 

concatenación con tantos ceros como sea necesario

Es resultado es : 0b01101001110001010010000000000000    (resultaron 32 bits)

El programa de test muestra entonces lo siguente:


SUCCESS:concatena(01110001101011011010001110000110,2,00000011100010010100111000101001,17)=01101001110001010010000000000000 ,Su codigo= 01101001110001010010000000000000


Efectivamente  su libreria paso la prueba porque su programa  concatena(1907204998,2,593300891,17) devolvio la variable 1774526464


4)   Si el programa de test devolviera :

   FAILURE:concatena(01110001101011011010001110000110,2,00000011100010010100111000101001,17)=01101001110001010010000000000000 ,Su codigo= 01101001110001010010000000100000


   Esto es equivalente a  decir que  concatena(1907204998,2,593300891,17)=1774526464  pero su codigo devolvio 1774526496

 ¿ Puede ver cual fue su error mirando las variables ?  ¿Verdad que resulta dificil indentificar que bit esta mal ?

  Por eso el programa de prueba muestra formatos binarios,  

 FAILURE:concatena(01110001101011011010001110000110,2,00000011100010010100111000101001,17)=01101001110001010010000000000000 ,Su codigo= 01101001110001010010000000100000


   Se puede leer que el resultado correcto es                           :   0b01101001110001010010000000000000=1774526464

   Se puede leer que el resultado que su codigo devuelve es  :   0b01101001110001010010000000100000=1774526496

   ¿ Puede indentificar ahora claramente que bit o bits tiene mal ? 


Esperamos que esto pueda ayudar 

Cualquier consulta a las ordenes y no duden en escribir  


Atte

Leonardo