Autor
|
Tema: estructura de datos (Leído 5,349 veces)
|
juanks92
Desconectado
Mensajes: 14
|
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
Mensajes: 18
|
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
Mensajes: 14
|
ok gracias por la ayuda deja corregir esos errores
|
|
|
En línea
|
|
|
|
juanks92
Desconectado
Mensajes: 14
|
una pregunta que es identacion??
|
|
|
En línea
|
|
|
|
gorystyle
Desconectado
Mensajes: 18
|
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
|
|
|
En línea
|
|
|
|
juanks92
Desconectado
Mensajes: 14
|
Ya lo tengo donde lo puedo poner para que lo visualices ademas ya cambie los clrs
|
|
|
En línea
|
|
|
|
gorystyle
Desconectado
Mensajes: 18
|
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
Mensajes: 14
|
#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
Mensajes: 584
|
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" ...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');
|
|
« Ú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
Mensajes: 14
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Estructura de datos
Programación General
|
EFEX
|
1
|
2,861
|
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
|
2,129
|
30 Agosto 2012, 23:06 pm
por Aikanáro Anário
|
|
|
estructura de datos
Programación C/C++
|
manutmac
|
1
|
2,168
|
11 Diciembre 2012, 04:09 am
por twins
|
|
|
Estructura de datos
Programación C/C++
|
juanks92
|
0
|
1,611
|
22 Abril 2013, 23:20 pm
por juanks92
|
|
|
Estructura de datos en java
Java
|
Valent
|
0
|
1,696
|
18 Mayo 2013, 01:05 am
por Valent
|
|