Comparando cadenas

Iniciado por DickGumshoe, 22 Enero 2012, 01:17 AM

0 Miembros y 4 Visitantes están viendo este tema.

armizh

Pues la primera vez funciona y el resto no porque simplemente el for modifica el valor hasta 10 y luego tu no lo seteas a 0 para que vuelva a buscar en todo el puntero. Tu bucle for y el if...else son deficientes, necesitas mejorarlos. Si aun asi no funciona no estaria mal que probaras con un switch en vez de if.

int salir = 0;
char pregunta[3];

//Mientras salir sea 0 seguimos con el bucle
while(salir==0) {
    //Comparamos nombre[i] y aux
    switch(strcmp(nombre[i],aux)){
        case 0: //En caso de que haya correspondencia
            printf("El nombre se encuentra entre los anteriores\n");
            salir++;
            break;
        default:
            i++;
            break;
    }
    while(i==10) {
        //Si es 's' lo repite, cualquier otra cosa termina el bucle
        printf("Desea volver a buscar? [s/*]");
        gets(pregunta);
        switch(strcmp(pregunta,"s") {
            case 0:
                salir=0;
                i=0;
                break;
            default:
                salir++;
                break;
        }
    }
}

Esto es lo que hubiese intentado yo en tu caso, aunk no lo he probado aun xd. Ciertamente este código no te avisa si estas equivocado, pero eso es lo minimo. Pues analizalo y crea tu propio algoritmo, esto es una idea de lo que mas o menos podrias hacer y recalco: no lo he probado.
Este codigo necesita de las declaraciones y el primer for. Un consejo: yo uso for solo cuando es necesario, si te produce problemas cambialo y usa otro bucle que te de mas libertades.
Saludos.
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Eternal Idol

#21
Cita de: armizh en 25 Enero 2012, 20:33 PMPues la primera vez funciona y el resto no porque simplemente el for modifica el valor hasta 10 y luego tu no lo seteas a 0 para que vuelva a buscar en todo el puntero.

No, no es asi ...  for (i=0;i<10;i++){

Funciona solamente cuando se busca el primer elemento del array, sea la primera o la decima vez que se busca.

Cita de: armizh en 25 Enero 2012, 20:33 PMSi aun asi no funciona no estaria mal que probaras con un switch en vez de if.

No tiene ningun sentido reemplazar el if por un switch cuando solo interesan uno o dos valores a comparar.

Cita de: armizh en 25 Enero 2012, 20:33 PMUn consejo: yo uso for solo cuando es necesario, si te produce problemas cambialo y usa otro bucle que te de mas libertades.

Justamente for es el bucle que mas libertad ofrece, hasta se puede omitir la inicializacion, la condicion y el incremento para tener un bucle infinito.

Por favor, asegurate de lo que vas a escribir, no es bueno que los que estan aprendiendo se confundan con conceptos erroneos.


DickGumshoe: usa mas la cabeza y menos las manos para escribir mensajes.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón