[C con Clase] Duda acerca de else if

Davidson, Steven srd4121 en njit.edu
Jue Abr 24 18:40:17 CEST 2014


Hola Óscar,

2014-04-24 8:12 GMT-04:00 Oscar <pelucheloko en hotmail.com>:

> El pasado 2014-04-15 18:21:46, Steven Davidson escribió:
>
> Gracias por la respuesta Steven, estaba "desuscrito" de la lista de
> distribución por que al ser cuenta de hotmail me comenta Salvador Pozo que
> hay algún tipo de problema y hasta hoy no habia visto tu respuesta
>
>
Entendido. Es una pena que haya estos problemas con Hotmail.

Probaré a quitar el ; después del if y veré que tal :-)
>
>
Mejor :)

SD> Estás comprobando direcciones de memoria, porque el contenido de
> SD> 'ordenador' es un puntero. Además, no tiene sentido comprobar cadenas
> de
> SD> caracteres, cuando tienes un índice.
> SD> Simplemente comprueba el índice calculado de 's'.
>
> Esto no lo entendí muy bien
>
>
Estás haciendo esto:

if( ordenador[s] == ordenador[0] )  ...

Lo cual implica que compruebas direcciones de memoria. Sin embargo, sabemos
que estas direcciones de memoria son elementos del array, 'ordenador', y
por tanto, se guardan contiguamente en memoria. Lo anterior se puede
reescribir así:

*(ordenador + s) == *(ordenador + 0)

Lo que propongo es comprobar los índices en lugar de las direcciones de
memoria; esto es,

if( s == 0 )  ...

Aquí, 0 (cero) significaría "piedra", que es la primera cadena guardada en
'ordenador'.

Podrías crear un tipo enumerado o tres constantes para representar cada
resultado; por ejemplo,

enum resultado_t { PIEDRA, PAPEL, TIJERA };
...

y luego, usamos estas constantes en lugar de las cadenas de caracteres; por
ejemplo,

if( s == PIEDRA )  ...

El código queda más legible.


Por último, debería aclarar que no estoy diciendo que tu solución para
comprobar el resultado sea incorrecta, sino que hay otra forma algo más
simple de solucionar el problema.


Espero que esto te oriente.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140424/4c5537ed/attachment.html>


Más información sobre la lista de distribución Cconclase