Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mili03 en 27 Junio 2010, 22:50 pm



Título: Manipular cadenas
Publicado por: mili03 en 27 Junio 2010, 22:50 pm
otra preguntita me disculpan pero no se a quien preguntar , es otro programita en C es sobre un menu el ejercicio dice que realice un programa que pida una cadena de caracteres y que muestre un menu con las siguienetes opciones
1.cadena al reves
2.numero de caracteres
3.cadena en mayuscula
4.cadena en minusculas
5.salir
esto es lo que llevo hasta ahora, lo estoy haciendo con while pero no puedo lograr que me muestre la opcion si pulso el num 1 si no q me sale corrido, ayudenme porfa, ha me han dicho que con case es mejor pero no se talves me proporcionan un ejemplo para intntarlo Gracias por Todo.
aca les muestro lo que e intentado hacer:
Código:
 #include <stdio.h>
void main (void)
{
    char c, palabra[21];
    int i;
int opcion;

printf("Teclee la palabra que decee:\n");
    scanf("%s", palabra);
    i =0;
printf("Eliga la opcion que quiere \n:");
printf("\n1-->numero de caracteres");
printf("\n2-->cadena al revez");
printf("\n3-->cadena en mayuscula");
printf("\n4-->cadena en minuscula");
printf("\n5-->salir\n  opcion:");
scanf("%s",&opcion);

  
    while(palabra[i++] != '\0');
      
    printf("%s tiene %d letras.\n", palabra, i);
    printf("%s escrita al revés es: ", palabra);
    while (i >= 0)
        printf("%c", palabra[i--]);


}




Título: Re: Manipular cadenas
Publicado por: Littlehorse en 27 Junio 2010, 23:01 pm
mili03, títulos descriptivos por favor. :)

Prueba con un switch-case para las opciones y con funciones para cada tarea.

Saludos


Título: Re: Manipular cadenas
Publicado por: @synthesize en 27 Junio 2010, 23:04 pm
http://c.conclase.net/librerias/?ansilib=string#inicio (http://c.conclase.net/librerias/?ansilib=string#inicio)


Título: Re: Manipular cadenas
Publicado por: leogtz en 27 Junio 2010, 23:07 pm
Deber usar int main(), no void main(), un compilador decente no te dejaría compilar.


Título: Re: Manipular cadenas
Publicado por: nicolas_cof en 27 Junio 2010, 23:09 pm
mili03, ademas de lo ya mencionado

Código:
int main( void ) {  }

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Otra recomendacion seria usar fgets() y no scanf()

Y otra seria no abusar del uso de printf() ya que con uno podrias englobar todas esas cadenas

Salu10.


Título: Re: Manipular cadenas
Publicado por: leogtz en 27 Junio 2010, 23:11 pm
Viendo el código, me parece que i se incrementa de más, prueba a hacer:

Código:
while(palabra[i++] != '\0');
    i--;
   


Título: Re: Manipular cadenas
Publicado por: nicolas_cof en 27 Junio 2010, 23:47 pm
Otra forma de poder saber la cantidad de caracteres de una cadena es usando la funcion strlen() de la libreria string.h que te menciono Daemon Freedom

Y con respecto a minisculas y mayusculas te dejo un codigo de ejemplo

Código:
#include <stdio.h>
#include <string.h>

int main( void )
{
    char min[] = "abcdefghijklmnopqrstuvwxyz";
    char may[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int i;

    for ( i = 0; i < strlen( min ); ++i )
    {
        if ( min[i] >= 97 && min[i] <= 122 )
            min[i] -= 32;
    }

    for ( i = 0; i < strlen( may ); ++i )
    {
        if ( may[i] >= 65 && may[i] <= 90 )
            may[i] += 32;
    }

    printf( "de minuscula a mayuscula: %s\n"
            "de mayuscula a minuscula: %s\n", min, may );

    return 0;
}

http://personal.telefonica.terra.es/web/oscarmartinez/_imatges/ascii.gif

Salu10.