[ Foro de C ]

Arrays indeterminados

01-Feb-2011 20:10
Diego Fernández
1 Respuestas

estoy intentando hacer un ejercicio de la sección 5.4 y el compilador me da error. ¿Alguien puede decirme que es lo que hago mal?


#include<stdio.h>
#include<windows.h>
#include<string.h>
main()
{
     start:
     char texto[][80] = {"Diego","Pedro","Luis","Jose"};
     char texto2[80];
     gets(texto2);
     if (strcmp(texto,texto2)==0)
     {
                                 printf("\nEse nombre aparece en la lista\n");
                                 }
     else goto start;
     system("PAUSE");
     }


gracias


01-Feb-2011 22:33
Tomás Poveda Retamosa

Hola Diego, aquí te dejo el código:

#include<stdio.h>
#include<string.h>
main()
{
     char texto[4] [15]= {"Diego","Pedro","Luis","Jose"};
     char texto2[15];
     int i;

start:
       puts ("\n\nIntroduce un nombre: ");
       gets(texto2);

       do
       {
           for (i=0; i<=3;i++)
           {
               if (strcmp(texto2,texto[i])==0)
               {
                   printf("\nEse nombre aparece en la lista\n");
                   system("\nPAUSE");
                   goto start;
               }
           }
       }
       while(strcmp(texto2,texto[i])==0);
       puts ("\n\nFin del programa.\n");
}



Te lo explico por encima: A ti te faltaba indicar el número de elementos que contiene el array, en este caso los nombres, 4.

El "do" lo que hace es realizar un bucle "infinito" hasta que introduzcamos un nombre que no está en la lista, en ese caso, saldrá del programa.

He indicado una variable entera "i" la cual funciona como un contador para  que el programa sepa que nombre comparar y decir si esta en la lista o no, para eso sirve el for.

Por lo tanto, una vez inicies, el programa te pedirá un nombre, lo introduces, y el programa lo que hace es comparar (con el for) desde el primer nombre texto[0] = Diego hasta el último, si encuentra una coincidencia, pues entonces te dirá que el nombre está en la lista y el ciclo comenzará de nuevo, en caso contrario saldrá del programa.

No se si me he explicado, jeje, bueno, lo siento si no lo entiendes pero no puedo entenerme más que mañana tengo examen en el insti y voy jodio xD.

Un saludo

PD. HAY QUE EVITAR EL USO DE GOTO (culpa mía).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)