[ Foro de C ]

Problema al programar agenda electrónica

26-Oct-2014 23:39
Invitado (dim)
1 Respuestas

Hola a todos bueno tengo que hacer una agenda electronica que utilice funciones y que tengas las opción de agregar un contacto, buscar un contacto tecleando las primeras 3 letras y mostrar todos los registros, entonces todo iba bien hasta que no pude hacer el que te busca el contacto, y pensé que estaba mal en otras cosas. Porfavor necesito que me ayuden a saber como se hace o en que estoy mal se lo agradecería muchisimo.
Ésto es lo que llevo:


#include <stdio.h>
#include <string.h>
  char Nombre[10][50];
  char Correo[10][50];
  char Telefono[10][20];
  char Direccion[10][100];
  int NumeroRegistro=1, opcion, contactos;
  char uno,dos,tres;

  int main(){

  do {
    printf("\n\t\t\tAgenda Electr%cnica",162);
    printf("\n\t\t\t====================");
    printf("\n\n\t\t1.Agregar un registro");
    printf("\n\t\t2.Buscar registro");
    printf("\n\t\t3.Desplegar todos los registros");
    printf("\n\t\t4.Salir\n");
    printf("\n\t\tOpci%cn:",162);
    scanf ("%d",&opcion);
    switch  (opcion) {
      case 1:
          agregar_registro(NumeroRegistro);
        break;
      case 2:
            buscar_registro();
          break;
      case 3:
            mostrar_registros ();
          break;
      case 4:
           salir();
          break;
      default:
         printf ("\nOpci%cn no v%clida.",162,160);
    }
  } while (opcion != 4);

  }
agregar_registro(NumeroRegistro) {
    printf("¿Cuantos contactos deseas agregar?: ");
      scanf("%d",&contactos);
           for (NumeroRegistro=1; NumeroRegistro<=contactos; NumeroRegistro++) {
               printf("\nEscribe el nombre del contacto %d: ", NumeroRegistro);
               scanf ("%s",Nombre[NumeroRegistro]);
               printf("Escribe el correo: ");
               scanf ("%s",Correo[NumeroRegistro]);
               printf("Escribe el telefono: ");
               scanf ("%s",Telefono[NumeroRegistro]);
               printf("Escribe la direccion: \n");
               scanf("%s",Direccion[NumeroRegistro]);
          }
          return 0;
}

  mostrar_registros () {

      for (NumeroRegistro=1; NumeroRegistro<=contactos; NumeroRegistro++) {
      printf ("\n\t\tContacto %d\n ",NumeroRegistro);
     printf ("\nNombre: %s",Nombre[NumeroRegistro]);
     printf ("\nCorreo: %s",Correo[NumeroRegistro]);
     printf ("\nTelefono: %s",Telefono[NumeroRegistro]);
     printf ("\nDireccion: %s",Direccion[NumeroRegistro]);
      }
      return 0;
  }

salir() {
       printf("Adios");

    return 0;
}

buscar_registro() {
 printf ("Escribe los tres primeros caracteres a buscar: ");
 //fflush(stdin);
 scanf("%c,%c,%c",&uno,&dos,&tres);
//"%c%c%c", &uno,&dos,&tres);

  for (NumeroRegistro=1; NumeroRegistro==contactos; NumeroRegistro++) {
   if (uno == Nombre[NumeroRegistro][0])
    {
       if (dos == Nombre[NumeroRegistro][1])
       {
         if (tres == Nombre[NumeroRegistro][2])
           printf ("\tContactos:\n %s", Nombre[NumeroRegistro]);
       }
     }
   else {
        printf ("\nNo existe el contacto\n");
   }
  }
return 0;
}





28-Oct-2014 00:50
Nacho Cabanes (+83)

Hay algunos errores. Por ejemplo:

- En agregar_registros pasas un NumeroRegistro que luego no usas, y cuyo valor destruyes en el "for".

- En agregar_registros usas una variable "contactos", y siempre cuentas desde uno hasta ella, de modo que la segunda vez que añadas, sobreescribirías los datos de la pasada anterior.

- En buscar_registro, la condición del "for" es incorrecta: "NumeroRegistro==contactos"






(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.)