estructura de datos

Iniciado por juanks92, 22 Abril 2013, 20:25 PM

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

juanks92

Hola que tal me dejaron un proyecto de estructura de datos de dar altas y bajas al igual que modificaciones de alumnos pero al momento de compilar me marca error  en el primer printf alguien sabria decirme por que seria de mucha ayuda si me lo pueden resolver ya que no se que sea aqui esta el codigo:
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define max 5


struct alumno{
   char  mat[10];
   char  nom[50];
   char  carrera[20];
   int   edad;
   
};

int busqueda(alumno [10], char [20], int);
void altas(struct alumno[10],int *);
void bajas(struct alumno[10],int *);
void cambios(struct alumno[10],int );
void consultas(struct alumno[10],int );


  int main()
{
   struct alumno students[10];
   int contador=0;
   char opcion;
   do
   {   system("cls")
    printf("1) Altas");
   printf("2) Bajas");
   printf("3) Cambios");
   printf("4) Consultas");
   printf("5) Salida");
   printf("Opcion [ ]\b\b");
   opcion=getch();
   switch(opcion)
   {
     case '1': altas(students,&contador); break;
     case '2': bajas(students,&contador); break;
     case '3': cambios(students,contador); break;
     case '4': consultas(students,contador); break;
     case '5': break;
     default: printf("Opcion no valida"); getch();
   }
   }while(opcion!='5');


int busqueda( struct alumno stu[], char llave[], int n)
{
  int i;

  for (i=0; i<n; i++)
      if (strcmpi (stu.mat,llave)==0)
     return(i);
  return (-1);
}

void altas (struct alumno stu[], int *c)
{
  int ban;
  char temp[10];
  float aux;

  system("cls")
  if (*c <max)
  {  do{ clrscr();
    printf("Matricula: ");
    fflush(stdin);// limpia el buffer de entrada de datos, sirve para cuando necesitas tomar muchos datos seguidos y se generan saltos de línea automáticos que se guardan en este buffer.


    gets(temp);
    ban=busqueda(stu,temp,*c);
    if (ban!=-1)
    {
       printf("Ya existe.");
       getch();

    }
  }while (ban!=-1);

       strcpy(stu[*c].mat, temp);
       printf("Nombre: ");  gets(stu[*c].nom);
       printf("Carrera: "); gets(stu[*c].carrera);
       printf("Edad: "); scanf("%d",&stu[*c].edad);
     
}

  else
  {
     printf("No hay espacio suficiente");
     getch();
  }


void bajas (struct alumno stu[], int *c)
{
  int pos,i;
  char temp[10];

  clrscr();
  if (*c >0)
  {  printf("Matricula: ");
     fflush(stdin);
     gets(temp);
     pos=busqueda(stu,temp,*c);
     if (pos!=-1)
     {
   for(i=pos;i<(*c)-1;i++)
      stu=stu[i+1];
   (*c)--;
     }
     else
     {
   printf("No se encontro");
   getch();
     }
  }
  else
  {
     printf("No hay datos");
     getch();
  }
}


void consultas(struct alumno stu[], int c)
{
  int pos,i;
  char temp[10];

  clrscr();
  if (c >0)
  {  printf("Matricula: ");
     clrscr();
     fflush(stdin);
     gets(temp);
     pos=busqueda(stu,temp,c);
     if (pos!=-1)
     {
   printf("\nMatricula: %s",stu[pos].mat);
   printf("\nNombre: %s", stu[pos].nom);
   printf("\nCarrera: %s", stu[pos].carrera);
   printf("\nEdad: %d", stu[pos].edad);
   getch();
     }
     else
     {
   printf("No se encontro");
   getch();
     }
  }
  else
  {
     printf("No hay datos");
     getch();
  }
}

void cambios(struct alumno stu[], int c)
{
  int pos;
  char temp[10],campo;
  float aux;

  clrscr();
  if (c >0)
  {  printf("Matricula: ");
     fflush(stdin);
     gets(temp);
     pos=busqueda(stu,temp,c);
     if (pos!=-1)
     {
   do
   {  clrscr();
      printf("--- Datos Actuales ---");
      printf("Matricula: %s",stu[pos].mat);
      printf("\nNombre: %s", stu[pos].nom);
      printf("\nCarrera: %s", stu[pos].carrera);
      printf("\nEdad: %d", stu[pos].edad);
      printf("\n \n Seleccione el campo que desea cambiar \n" );
      puts("1) Nombre");
      puts("2) Carrera");
      puts("3) Edad");
       puts("4) Regresar al menu Principal");
      printf("\nCampo: ");campo=getch();
      fflush(stdin);
      switch(campo)
      {
          case '1': printf("Nombre: ");  gets(stu[pos].nom); break;
          case '2': printf("Carrera: "); gets(stu[pos].carrera); break;
          case '3': printf("Edad: "); scanf("%d",&stu[pos].edad); break;
          
          break;
          case '4': break;
      }
   }while (campo!='4');
     }
     else
     {
   printf("No se encontro");
   getch();
     }
  }
  else
  {
     printf("No hay datos");
     getch();
  }
}

}
si encuentran otro error y lo localizan se los agradecere

gorystyle

panita estoy revisando tu codigo pero tienes demasiados errores..
te faltan muchos ';' antes de algunos printf() , deberia cambiar el clrscr() por system("cls") ese es otro error que te esta dando, hay errores de identacion osea faltan y sobran llaves en algunas partes.. estas trabajando algunos punteros como si fueran objetos normales osea con '.' en vez de '->' ademas la identacion es fatal y es muy dificil ayudarte asi... si corriges la identacion y subes nuevamente el programa te ayudo pero me da ladilla comenzar yo a acomodar las sangrias en cada bloque de codigo

juanks92

ok gracias por la ayuda deja corregir esos errores

juanks92

una pregunta que es identacion??

gorystyle

Cita de: juanks92 en 22 Abril 2013, 21:48 PM
una pregunta que es identacion??

es colocar el codigo de manera ordenada y respetando las sangrias.. y deberias tambien colocar el codigo cuando lo vallas a publicar aqui buscar la etiqueta que dice codigo tiene el simbolo de # de esta manera es mas legible y te pueden ayudar mas ejemplo::


#include <stdio.h>

int main()
{
    int i = 0;
    for(i = 0; i<20; i++)
    {
           if((i%2)==0)
           {
                 printf("%d",i);
           }
    }

    return 0;
}


algo asi si notas como cada vez que entro a una instruccion hago sangria hacia la derecha -> y cuando la finalizo vuelvo a emparejar donde habia quedado

juanks92

Ya lo tengo donde lo puedo poner para que lo visualices ademas ya cambie los clrs

gorystyle

ps subelo aqui pero recuerda cuando estes posteando buscar la etiqueta code y pegas el codigo dentro de lo q te sale

juanks92

#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define max 5


struct alumno
{
   char  mat[10];
   char  nom[50];
   char  carrera[20];
   int   edad;
   
};

   int busqueda(alumno [10], char [20], int);
   void altas(struct alumno[10],int *);
   void bajas(struct alumno[10],int *);
   void cambios(struct alumno[10],int );
   void consultas(struct alumno[10],int );


  int main()
  {
       struct alumno students[10];
       int contador=0;
       char opcion;
       do
         {   
           system("cls")
           printf("1) Altas");
          printf("2) Bajas");
           printf("3) Cambios");
          printf("4) Consultas");
          printf("5) Salida");
          printf("Opcion [ ]\b\b");
          opcion=getch();
          switch(opcion)
                                     {
                                       case '1': altas(students,&contador); break;
                                        case '2': bajas(students,&contador); break;
                                       case '3': cambios(students,contador); break;
                                       case '4': consultas(students,contador); break;
                                       case '5': break;
                                       default: printf("Opcion no valida");
                                        getch();
                                      }
        }
       
       while(opcion!='5');


     int busqueda( struct alumno stu[], char llave[], int n)
                                             {
                                               int i;
                                               for (i=0; i<n; i++)
                                               if (strcmpi (stu.mat,llave)==0)
                                              return(i);
                                               return (-1);
                                             }

     void altas (struct alumno stu[], int *c)
                                                      {
                                                        int ban;
                                                        char temp[10];
                                                        float aux;
                                                        system("cls")
                                                        if (*c <max)
                                                                        { 
                                                                          do
                                                                             {
                                                                               clrscr();
                                                                              printf("Matricula: ");
                                                                              fflush(stdin);// limpia el buffer de entrada de datos, sirve para cuando necesitas tomar muchos datos seguidos y se generan saltos de línea automáticos que se guardan en este buffer.
                                                                               gets(temp);
                                                                              ban=busqueda(stu,temp,*c);
                                                                              if (ban!=-1)
                                                                                                         {
                                                                                                           printf("Ya existe.");
                                                                                                           getch();

                                                                                                          }
                                                                             }
                                                                         
                                                                          while (ban!=-1);
                                                                          strcpy(stu[*c].mat, temp);
                                                                          printf("Nombre: ");  gets(stu[*c].nom);
                                                                          printf("Carrera: "); gets(stu[*c].carrera);
                                                                          printf("Edad: "); scanf("%d",&stu[*c].edad);
     
                                                                        }

                                                        else
                                                             {
                                                               printf("No hay espacio suficiente");
                                                               getch();
                                                             }
                                                      }

     void bajas (struct alumno stu[], int *c)
                                              {
                                                int pos,i;
                                                char temp[10];
                                                system("cls")
                                                if (*c >0)
                                                               { 
                                                                 printf("Matricula: ");
                                                                 fflush(stdin);
                                                                 gets(temp);
                                                                 pos=busqueda(stu,temp,*c);
                                                                 if (pos!=-1)
                                                                                            {
                                                                                             for(i=pos;i<(*c)-1;i++)
                                                                                             stu=stu[i+1];
                                                                                             (*c)--;
                                                                                            }
                                                                 else
                                                                      {
                                                                       printf("No se encontro");
                                                                       getch();
                                                                      }
                                                               }
                                                else
                                                     {
                                                       printf("No hay datos");
                                                       getch();
                                                     }
                                              }


     void consultas(struct alumno stu[], int c)
                                                {
                                                  int pos,i;
                                                  char temp[10];
                                                  system("cls")
                                                  if (c >0)
                                                                  { 
                                                                    printf("Matricula: ");
                                                                    system("cls")
                                                                    fflush(stdin);
                                                                    gets(temp);
                                                                    pos=busqueda(stu,temp,c);
                                                                    if (pos!=-1)
                                                                                               {
                                                                                                printf("\nMatricula: %s",stu[pos].mat);
                                                                                                printf("\nNombre: %s", stu[pos].nom);
                                                                                                printf("\nCarrera: %s", stu[pos].carrera);
                                                                                                printf("\nEdad: %d", stu[pos].edad);
                                                                                                getch();
                                                                                               }
                                                                    else
                                                                         {
                                                                          printf("No se encontro");
                                                                          getch();
                                                                         }
                                                                  }
                                                  else
                                                        {
                                                          printf("No hay datos");
                                                          getch();
                                                        }
                                                }

     void cambios(struct alumno stu[], int c)
                                              {
                                                int pos;
                                                char temp[10],campo;
                                                float aux;

                                                system("cls")
                                                if (c >0)
                                                                     { 
                                                                       printf("Matricula: ");
                                                                       fflush(stdin);
                                                                       gets(temp);
                                                                       pos=busqueda(stu,temp,c);
                                                                       if (pos!=-1)
                                                                                                 {
                                                                                                  do
                                                                                                    { 
                                                                                                       system("cls")
                                                                                                      printf("--- Datos Actuales ---");
                                                                                                      printf("Matricula: %s",stu[pos].mat);
                                                                                                      printf("\nNombre: %s", stu[pos].nom);
                                                                                                      printf("\nCarrera: %s", stu[pos].carrera);
                                                                                                      printf("\nEdad: %d", stu[pos].edad);
                                                                                                      printf("\n \n Seleccione el campo que desea cambiar \n" );
                                                                                                      printf("1) Nombre");
                                                                                                      printf("2) Carrera");
                                                                                                      printf("3) Edad");
                                                                                                       printf("4) Regresar al menu Principal");
                                                                                                      printf("\nCampo: ");campo=getch();
                                                                                                      fflush(stdin);
                                                                                                      switch(campo)
                                                                                                                                                                 {
                                                                                                                                                                  case '1': printf("Nombre: ");  gets(stu[pos].nom); break;
                                                                                                                                                                  case '2': printf("Carrera: "); gets(stu[pos].carrera); break;
                                                                                                                                                                  case '3': printf("Edad: "); scanf("%d",&stu[pos].edad); break;
          
                                                                                                                                                                break;
                                                                                                                                                                  case '4': break;
                                                                                                                                                                 }
                                                                                                     }
                                                                                                   while (campo!='4');
                                                                                                 }
                                                                       else
                                                                            {
                                                                             printf("No se encontro");
                                                                             getch();
                                                                            }
                                                                     }
                                                else
                                                     {
                                                       printf("No hay datos");
                                                       getch();
                                                     }
                                              }

  }

flony

#8
por el printf parece c, no soy experto, pero bue yo le doy a c++...
pasando al problema en cuestión veo que la función búsqueda es la mas usada
int busqueda( struct alumno stu[], char llave[], int n)
                                            {
                                              int i;
                                              for (i=0; i<n; i++)
                                              if (strcmpi (stu.mat,llave)==0)
                                             return(i);
                                              return (-1);
                                            }

en ella veo que pasas dos datos stu.mat y llave, la llave debería provenir de las otras funciones, pero nunca la pedís, deberías pedir la "llave"
scanf("%c",&llave);...o algo asi...como dije prefiero cin y cout...para la entrada de datos es mas fácil ;)
edito, tampoco pedís que ingrese la opción en ...
do
         {   
           system("cls")
           printf("1) Altas");
          printf("2) Bajas");
           printf("3) Cambios");
          printf("4) Consultas");
          printf("5) Salida");
          printf("Opcion [ ]\b\b");
          opcion=getch();
          switch(opcion)
                                     {
                                       case '1': altas(students,&contador); break;
                                        case '2': bajas(students,&contador); break;
                                       case '3': cambios(students,contador); break;
                                       case '4': consultas(students,contador); break;
                                       case '5': break;
                                       default: printf("Opcion no valida");
                                        getch();
                                      }
        }
       
       while(opcion!='5');
si un problema no tiene solucion entonces no es un problema...es algo inevitable

juanks92

En que parte debo poner los scanf, es que ocupo printf y scanf por que llevo programacion basica y es lo que me enseñaron es por eso que tengo muchas dudas de mi programa ya que lo que se es por tutoriales pero no se mucho por eso mi duda del scanf