No pude colocar los cin me saca error y el error del que hablaba es que despues de meter el primer estudiante ya no pide el carne al registrar el siguiente estudiante
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
#include <stdio.h>
#include <string.h>
#include <conio.h>
typedef struct alumno{
char carne[32];
char nombre[20];
int nota1;
int nota2;
int nota3;
int nota4;
int tot;
}Alumno;
Alumno alumnos[40];
int total = 0;
void cargar(), guardar(), insertar(Alumno info);
void ingresar(), buscar(), modificar(), eliminar(), ordenar(), mostrar(), ayuda();
char menu(void);
main()
{
cargar();
char op;
for(;;)
{
switch(op=menu())
{
case '1':
ingresar();
getch();
break;
case '2':
buscar();
getch();
break;
case '3':
modificar();
getch();
break;
case '4':
eliminar();
getch();
break;
case '5':
ordenar();
getch();
break;
case '6':
mostrar();
getch();
break;
case '7':
break;
default :
printf("Opcion no valida");
getch();
break;
}
if(op=='7') break;
}
printf("Presione (g) para guardar los cambios: ");
if(getche()=='g')
guardar();
}
void insertar(Alumno info)
{
strcpy(alumnos[total].carne, info.carne);
strcpy(alumnos[total].nombre, info.nombre);
alumnos[total].nota1 = info.nota1;
alumnos[total].nota2 = info.nota2;
alumnos[total].nota3 = info.nota3;
alumnos[total].tot = info.tot;
total++;
}
void cargar()
{
Alumno info;
FILE *fp;
fp=fopen("alumnos.txt","r");
if(fp==NULL)
{
printf("No se puede abrir el archivo\n");
return;
}
while(!feof(fp))
{
if(fread(&info, sizeof(Alumno), 1, fp)!=1) break;
insertar(info);
}
fclose(fp);
}
void guardar()
{
Alumno info;
FILE *fp;
fp=fopen("alumnos.txt","w");
if(fp==NULL)
{
printf("No se puede abrir el archivo\n");
return;
}
for(int i=0; i<total; i++)
fwrite(&alumnos[i], sizeof(Alumno), 1, fp);
fclose(fp);
}
void ingresar()
{
Alumno info;
printf("Ingrese carne: "); gets(info.carne);
printf("Ingrese nombre: "); gets(info.nombre);
printf("Ingrese Parcial No 1: "); scanf("%d", &(info.nota1));
printf("Ingrese Parcial No 2: "); scanf("%d", &(info.nota2));
printf("Ingrese Parcial No 3: "); scanf("%d", &(info.nota3));
insertar(info);
printf("Alumno ingresado exitosamente\n");
}
void buscar()
{
char carne[32];
int i;
printf("Ingrese carne a buscar: ");
gets(carne);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].carne, carne))
{
printf("--- Datos del alumno ---\n");
printf("Num.: %d\n", i+1);
printf("Carné: %s\n", alumnos[i].carne);
printf("Nombre: %s\n", alumnos[i].nombre);
printf("Nota1: %d", alumnos[i].nota1);
printf("Nota2: %d", alumnos[i].nota2);
printf("Nota3: %d", alumnos[i].nota3);
printf("nota definitiva: %d", alumnos[i].nota1+alumnos[i].nota2+alumnos[i].nota3);
break;
}
if(i==total)
printf("Alumno no encontrado");
}
void modificar()
{
char nombre[20];
int i;
printf("Ingrese nombre a modificar: ");
gets(nombre);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].nombre, nombre))
{
printf("--- Datos actuales del alumno ---\n");
printf("Num.: %d\n", i+1);
printf("Carné: %s\n", alumnos[i].carne);
printf("Nombre: %s\n", alumnos[i].nombre);
printf("Nota1: %d\n\n", alumnos[i].nota1);
printf("Nota2: %d\n\n", alumnos[i].nota2);
printf("Nota3: %d\n\n", alumnos[i].nota3);
printf("--- Nuevos datos del alumno ---\n");
printf("Carné: %s\n", alumnos[i].carne);
printf("Ingrese nombre: "); gets(alumnos[i].nombre);
printf("Ingrese nota1: "); scanf("%d", &(alumnos[i].nota1));
printf("Ingrese nota2: "); scanf("%d", &(alumnos[i].nota2));
printf("Ingrese nota3: "); scanf("%d", &(alumnos[i].nota3));
printf("\n\nDatos actualizados exitosamente!");
break;
}
if(i==total)
printf("Alumno no encontrado");
}
void eliminar()
{
char nombre[20];
int i;
printf("Ingrese nombre a eliminar: ");
gets(nombre);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].nombre, nombre))
{
/* Recorre registros posteriores */
for(int j=i+1; j<total; j++)
{
strcpy(alumnos[j-1].carne, alumnos[j].carne);
strcpy(alumnos[j-1].nombre, alumnos[j].nombre);
alumnos[j-1].nota1 = alumnos[j].nota1;
alumnos[j-1].nota2 = alumnos[j].nota2;
alumnos[j-1].nota3 = alumnos[j].nota3;
}
printf("Alumno eliminado");
total--;
break;
}
if(i==total)
printf("Alumno no encontrado");
}
void ordenar()
{
int i, j;
Alumno temp;
for(i=0; i<total-1; i++)
{
for(j=i+1; j<total; j++)
if(strcmp(alumnos[i].nombre, alumnos[j].nombre)>0)
{
/* Copia en variable temporal datos actuales */
strcpy(temp.carne, alumnos[i].carne);
strcpy(temp.nombre, alumnos[i].nombre);
temp.nota1 = alumnos[i].nota1;
temp.nota2 = alumnos[i].nota2;
temp.nota3 = alumnos[i].nota3;
/* Intercambia informacion */
strcpy(alumnos[i].carne, alumnos[j].carne);
strcpy(alumnos[i].nombre, alumnos[j].nombre);
temp.nota1 = alumnos[i].nota1;
temp.nota2 = alumnos[i].nota2;
temp.nota3 = alumnos[i].nota3;
strcpy(alumnos[i].carne, alumnos[j].carne);
strcpy(alumnos[j].nombre, temp.nombre);
temp.nota1 = alumnos[i].nota1;
temp.nota2 = alumnos[i].nota2;
temp.nota3 = alumnos[i].nota3;
}
}
printf("Se han ordenado los registros");
}
void mostrar()
{
for(int i=0; i<total; i++)
{
printf("Num: %d\n", i+1);
printf("carne: %s\n", alumnos[i].carne);
printf("nombre: %s\n", alumnos[i].nombre);
printf("parcial No 1: %d\n", alumnos[i].nota1);
printf("parcial No 2: %d\n", alumnos[i].nota2);
printf("parcial No 3: %d\n", alumnos[i].nota3);
printf("nota definitiva: %d", alumnos[i].nota1+alumnos[i].nota2+alumnos[i].nota3+alumnos[i].nota4);
}
}
char menu(void)
{
char c;
printf("(1)Ingresar, (2)Buscar, (3)Modificar, (4)Eliminar, (5)Ordenar, (6)Mostrar lista\n, ( (7)Salir\n");
printf("\nSeleccion: ");
c=getche();
printf("\n");
return(c);
}