elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  estructura de datos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: estructura de datos  (Leído 4,769 veces)
juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
estructura de datos
« en: 22 Abril 2013, 20:25 pm »

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


En línea

gorystyle

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: estructura de datos
« Respuesta #1 en: 22 Abril 2013, 21:18 pm »

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


En línea

juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: estructura de datos
« Respuesta #2 en: 22 Abril 2013, 21:43 pm »

ok gracias por la ayuda deja corregir esos errores
En línea

juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: estructura de datos
« Respuesta #3 en: 22 Abril 2013, 21:48 pm »

una pregunta que es identacion??
En línea

gorystyle

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: estructura de datos
« Respuesta #4 en: 22 Abril 2013, 21:52 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::

Código:
#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
En línea

juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: estructura de datos
« Respuesta #5 en: 22 Abril 2013, 22:42 pm »

Ya lo tengo donde lo puedo poner para que lo visualices ademas ya cambie los clrs
En línea

gorystyle

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: estructura de datos
« Respuesta #6 en: 22 Abril 2013, 22:47 pm »

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

juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: estructura de datos
« Respuesta #7 en: 22 Abril 2013, 23:21 pm »

#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();
                                                     }
                                              }

  }
En línea

flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: estructura de datos
« Respuesta #8 en: 22 Abril 2013, 23:52 pm »

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
Código:
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"
Código:
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 ...
Código:
 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');
« Última modificación: 22 Abril 2013, 23:57 pm por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
juanks92

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: estructura de datos
« Respuesta #9 en: 23 Abril 2013, 00:19 am »

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
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Estructura de datos
Programación General
EFEX 1 2,585 Último mensaje 27 Junio 2011, 14:25 pm
por EFEX
¿Alguién conoce un buen curso/libro de minería de datos y estructura de datos?
Programación General
Aikanáro Anário 0 1,919 Último mensaje 30 Agosto 2012, 23:06 pm
por Aikanáro Anário
estructura de datos
Programación C/C++
manutmac 1 1,907 Último mensaje 11 Diciembre 2012, 04:09 am
por twins
Estructura de datos
Programación C/C++
juanks92 0 1,414 Último mensaje 22 Abril 2013, 23:20 pm
por juanks92
Estructura de datos en java
Java
Valent 0 1,551 Último mensaje 18 Mayo 2013, 01:05 am
por Valent
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines