[C con Clase] Vocal o Consonante

David fire ddfire en gmail.com
Jue Jul 16 17:12:44 CEST 2009


Steven, pregunta por que lo ignoro...siempre se puede afirmar lo que
explicas de que el indice 3 de letra es el primer byte de largo? esto es
para toda arquitectura (big endian, litle endian, arm, y cualquier otra cosa
que corra c)?
me refiero a que las variables son alojadas en memoria en el mismo orden que
son creadas y una a continuacion de la otra...

gracias
David

El 16 de julio de 2009 12:07, Steven Richard Davidson <
stevenrichard.davidson en gmail.com> escribió:

> Hola Carlos,
>
> 2009/7/16 Carlos Wrangller Encarnacion Rodriguez <carlos.w04 en gmail.com>:
> > Tengo el siguiente programa pasa saber si un caracter es vocal o
> consonante
> > pero siempre me dice que es consonante nose q tengo mal me imagino q
> cuando
> > hace la comparacion en el switch el caracter que llega no es la vocal
> pero
> > si le introdusco 2 (a) me dice q es consonante como quiera.
> >
>
> Veamos el código fuente.
>
> > #include <conio.h>
> > #include <stdio.h>
> > char letra[3];
> > int largo=0;
>
> No te acostumbres a declarar variables globalmente. Mete estas
> declaraciones en 'main()'.
>
> > int main ()
> > {
> > printf ("\n DIGITE UNA LETRA:");
> > scanf ("%s",letra);
> > while(letra[3] != '\0');
>
> Esto es un error. Recuerda que los índices de un array SIEMPRE
> empiezan por 0. Por lo tanto, tu array de 3 elementos los índices van
> de 0 á 2. El hecho de que tu programa no se quede retenido en este
> bucle es la suerte de que ese elemento contenga un cero (carácter
> nulo); pero esto puede cambiar en cualquier instante. La verdad es que
> la probabilidad no existe en tu programa, porque el elemento
> 'letra[3]' realmente es el primer byte de la variable 'largo', que
> inicialmente es 0. Sin embargo, si cambias tu programa o incluso el
> orden de las declaraciones de tus variables, esta parte no funcionará.
>
> > switch(letra[3])
>
> Aquí tienes el mismo problema. Accedes a un elemento que no pertenece
> al array 'letra'.
>
> > {
> >    case 'a':
> >    case 'e':
> >    case 'i':
> >    case 'o':
> >    case 'u':
> > printf ("\n La letra %s es una vocal",letra);
> >       break;
> >    default:
> > printf ("\n La letra %s es una consonante",letra);
> > }
> > getch();
>
> Debes retornar un número entero que por convenio es 0 (cero).
>
> > }
>
> Sugiero declarar 'letra' como un solo 'char' y no como un array. Esto es,
>
> char letra;
> ...
> scanf( "%c", &letra );
>
> switch( letra )
> {
> ...
> }
>
>
> Si quieres usar un array, entonces sólo te interesa el primer
> cáracter: 'letra[0]'.
>
>
> Espero haber aclarado las dudas.
>
> Steven
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090716/a73965b6/attachment.html>


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