implemente un codigo que pida 6 datos a 5 personas pero no hace la busqueda bien

Iniciado por a.9471, 6 Diciembre 2014, 07:14 AM

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

a.9471

Código (cpp) [Seleccionar]
//*el problema es que no realiza la busqueda completa solo encuentra un registro si la opcion ingresada es 0 y por defecto tampoco me deja hacer una eliminacion por busqueda ni modificacion*//
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define p printf
#define s scanf
#define MAX 5
int buscar(int x);

using namespace std;
struct usuario
{
      char nombre[20],apellido[20], sexo[20], nivel[40],carrera[30];
      int telefono,no_lista;
      }
     
     
       e[MAX];
      int cont=0;
      int buscar(int x);
     
      void capturar()
      {
           p("Nombre: "); fflush(stdin); gets(e[cont].nombre);
           p("Apellido: "); fflush(stdin); gets(e[cont].apellido);
           p("Sexo: "); fflush(stdin); gets(e[cont].sexo);
           p("Numero telefonico: "); s("%d",&e[cont].telefono);
           p("Nivel Maximo de Estudios: "); fflush(stdin); gets(e[cont].nivel);
           p("Carrera de Especialidad: "); fflush(stdin); gets(e[cont].carrera);
           cont++;
           }
           void mostrar()
           {
                for(int i=0; i<cont; i++)
                {
                        p("\nNombre:\t %s",e[i].nombre);
                        p("\nApellido:\t %s",e[i].apellido);
                        p("\nSexo:\t %s",e[i].apellido);
                        p("\nNumero Telefonico:\t %d",e[i].telefono);
                        p("\nNivel Maximo de Estudios:\t %s",e[i].nivel);
                        p("\nCarrera de Especialidad:\t %s",e[i].carrera);
                        p("\nOPRIME ENTER PARA CONTINUAR");
                         getch();
                         system("cls");
                        }
                }
               
                void modificar()
                {
                     int op,i,pr;
                     pr=buscar(5);
                     if(pr!=-1)
                     {
                     do
                              {
                                    p("\n1) Nombre: %s",e[pr].nombre);
                                    p("\n2) Apellido: %s",e[pr].apellido);
                                    p("\n3) Sexo: %s",e[pr].sexo);
                                    p("\n4) Numero Telefonico: %d",e[pr].telefono);
                                    p("\n5) Nivel Maximo de Estudios: %s",e[pr].nivel);
                                    p("\n6) Carrera de especialidad: %s",e[pr].carrera);
                                    p("\n7) Salir)   ");
                                    p("\n¿QUE DECEA MODIFICAR?");
                                    s("%d",&op);
                                    switch(op)
                                    {
                                              case 1: p("Nombre: "); fflush(stdin); gets(e[pr].nombre); break;
                                             
                                              case 2: p("Apellido: "); fflush(stdin); gets(e[pr].apellido); break;
                                             
                                              case 3: p("Sexo: "); fflush(stdin); gets(e[pr].sexo); break;
                                             
                                              case 4: p("Numero telefonico: "); s("%d",&e[pr].telefono); break;
                                             
                                              case 5: p("Nivel Maximo de Estudios: "); fflush(stdin); gets(e[pr].nivel); break;
                                             
                                              case 6: p("Carrera de Especialidad: "); fflush(stdin); gets(e[pr].carrera); break;
                                              }
                                              }while(op!=7);
                                              }
                                              }
                                              void eliminar()
                                              {
                                                   int pr,i;
                                                   char r;
                                                   pr=buscar(4);
                                                   if(pr!=-1)
                                                   {
                                                            p("¿LO DECEA ELIMINAR S/N)?   ");
                                                            s("%s", &r);
                                                            if(r=='s'||r=='S')
                                                            {
                                                            for(i=pr; i<=cont; i++)
                                                            e[i]=e[i+1];
                                                            cont=cont+1;
                                                            }
                                                            }
                                                   }
                                                           
                                                           
                                                   int buscar(int x)
                                                            {
                                                                int nl,b=0,pos;
                                                               
                                                                if(x==4)  p("\n Dame el Numero de lista a eliminar:");
                                                               
                                                               
                                                                else if(x==5)
                                                                p("Introduce el numero de lista a modificar:");
                                                               
                                                               
                                                                else
                                                                p("introduce el numero de lista a buscar:");
                                                                s("%d",&nl);
                                                                if(cont==0)
                                                                p("\n EL REGISTRO NO EXISTE");
                                                                else
                                                                for(int i=0; i<cont; i++)
                                                               
                                                                if(nl==e[i].no_lista)
                                                                {
                                                                if(x!=5)
                                                                {
                                                                        p("\n Nombre: %s",e[i].nombre);
                                                                        p("\n Apellido %s",e[i].apellido);
                                                                        p("\n Sexo  %s",e[i].sexo);
                                                                        p("\n Numero Telefonico %d",e[i].telefono);
                                                                        p("\n Nivel Maximo de Estudios %s",e[i].nivel);
                                                                        p("\n Carrera de Especialidad %s",e[i].carrera);
                                                                        }
                                                                        b=1; pos=i; break;
                                                                        }
                                                                        if(b==0)
                                                                        {
                                                                                p("\nNO EXISTE REGISTRO");
                                                                                pos=-1;
                                                                                }
                                                                                if(x==3)
                                                                                {
                                                                                        p("\nOPRIME ENTER PARA CONTINUAR");
                                                                                        getch();
                                                                                        }
                                                                                        return(pos);
                                                                                        }
                                                                                       
                                                                                        int main()                                                                          
                                                                                        {
                                                                                              int opc; cont=0;
                                                                                               
                                                                                              do
                                                                                              {
                                                                                                      system("cls");
                                                                                                      p("\n1) AGREGAR \n 2) MOSTRAR\n 3) BUSCAR\n 4) ELIMINAR\n 5) MODIFICAR\n 6) SALIR\n");
                                                                                                      s("%d",&opc);
                                                                                                      if(opc==1)
                                                                                                      capturar();
                                                                                                      if(opc==2)
                                                                                                      mostrar();
                                                                                                      if(opc==3)
                                                                                                      buscar(3);
                                                                                                      if(opc==4)
                                                                                                      eliminar();
                                                                                                      if(opc==5)
                                                                                                      modificar();
                                                                                                      }while (opc!=6);
                                                                                             return 0;
                                                                                                      }

                                                                                                     
                                                                                                       
                                                                                             
                                                                       
                                                               
                                                             
                                             
                                             
         
           
                                   

soyloqbuskas

Buenas a.9471!

No he compilado tu codigo...pero a primera vista creo que si pide los 6 datos pero no ha 5 personas porque la void capturar() no esta dentro de un bucle para que se ejecute 5 veces.

Tambien veo que no usas bien los if() else()...

si pones:
if(condicion1) instruccion1;
else instruccion2;
instruccion3;


se ejecutaran instrcion1 y 3 o instrucion  2 y 3

te lo digo por estas lineas:
Citarint buscar(int x)
{
    int nl,b=0,pos;                                      
    if(x==4)  p("\n Dame el Numero de lista a eliminar:");                                                                                                                                                                                                  
    else if(x==5)
               p("Introduce el numero de lista a modificar:");                                                                                                                                                                                            
    else
         p("introduce el numero de lista a buscar:");
     s("%d",&nl);


Esta linea se ejecuta
Citars("%d",&nl);
aunque no deberia ejecutarse si no entra en el else;

Para ello usa los corchetes:

if(condicion1){
    instruccion11;
    instruccion12;
}
else if(condicion2){
    instruccion21;
    instruccion22;
}
else{
    instruccion31;
    instruccion32;
}


Y para hacer tu programa mas legible alinea correctamente las funciones() y los void()
Tal y como lo tienes escrito todos las funciones() y los void() deberian estar alineados a la izquierda ya que no tienes funciones dentro de funciones

Utiliza este estilo (de corchetes)que hace mas facil la lectura.

void 1(){

    //codigo....
    //codigo....
    //codigo....
}

void 2(){

    //codigo....
    //codigo....
    //codigo....

    if(condicion){
           //codigo....
           //codigo....
    }
    else{
           //codigo....
           //codigo....

    }
}


Es una buena practica de programacion para facilitar la lectura
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw