¿Como hacer una lista de nombres usando array con lenguaje C?

Iniciado por alejandrodiaz, 13 Julio 2015, 03:12 AM

0 Miembros y 1 Visitante están viendo este tema.

alejandrodiaz

Buenas a todos

Soy muy novato programando y me estoy iniciando con lenguaje C, así que pido que disculpen mi gran ignorancia.

Tengo un ejercicio de arrays el cual dice:

Se tiene una lista de n nombres, escribir un programa que solicite el nombre de un alumno y busque el nombre del alumno en la lista.

Para esto no debo usar ni punteros ni registros, solo array y lo más básico de C (bucles etc).

He leído y he visto en youtube muchos ejercicios de comparación de cadenas pero siempre tienen un solo nombre establecido, no una lista, ejemplo:

char nombre[10] ="maria";
char nombre2[10];


Allí se supone que en "nombre2" se guarda lo que introduce el usuario y se compara usando ctrcmp con el array "nombre".

Hasta allí todo bien, pero mi pregunta es ¿si es posible tener mas nombres guardados en el array "nombre" y como hacerlo?

Quise guardar varios nombres en una array de este modo:

char [10]= "maria";"jose";"luis";

Pero luego supe que una array solo almacena un caracter por cada elemento (pense que almacenaba cadenas enteras en cada elemento). No sé si es que deba crear más arrays, pero en una lista con más de cien alumnos sería un codigo muy extenso.

En fin, espero me hayan entendido y me puedan ayudar.


crack81

Que bueno que aprendas a programar en c sigue asi
Bueno tu lo que andas buscando es un arreglo bidimensional o tambien llamado de dos divisones

prueba esto:

int main()
{
char nombre[10]="maria";

//Esto es un arreglo bidimensinal
//el primer corcheta es la cantidad de nombres
//el segundo corchete es el tamano maximo de caracteres por cada nombre
char nombres[4][10]={"jose","maria","rosa","sara"};

int i;
for(i=0;i<4;i++){
  printf("%s\n",nombres[i]);   //mostramos todos los nombres
  if(strcmp(nombre,nombres[i])==0){
printf("se encontro el nombre en la lista\n");//si encuentra el nombre muestra el mensaje
  }
}

getchar();
return 0;
}
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

alejandrodiaz

Un millón de gracias amigo crack81, era exactamente lo que estaba buscando.

Había leído de arrays bidimensional pero ejemplos con enteros no con caracteres y juraba que necesitaba un array unidimensional.

Al fin pude hacer el ejercicio quedandome de esta forma



int main()
{
    char nombres[6][10] = {"maria","teresa","mariana","jose","pedro","juan"};
    char alum[10];
    int cont=0;

    printf("Ingrese el nombre del alumno: \n");
    scanf("%s", alum);

    int i;

    for(i=0; i<6; i++){
            if (strcmp(nombres[i],alum)==0){

                printf("El alumno %s esta registrado\n", nombres[i]);

                }else{
                    cont++;
                }
            }
                    if (cont==6){
                        printf("%s no esta registrado",alum);
                    }


    getch();
    return 0;
}



Nuevamete gracias!  ;-)