Foros del Web » Programación para mayores de 30 ;) » C/C++ »

no puedo eliminar datos???

Estas en el tema de no puedo eliminar datos??? en el foro de C/C++ en Foros del Web. hola que tal miren tengo este programa el cual siento que hay la llevo pero me falta el poder borrar toda la lista o un ...
  #1 (permalink)  
Antiguo 10/11/2009, 20:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
Información no puedo eliminar datos???

hola que tal miren tengo este programa el cual siento que hay la llevo pero me falta el poder borrar toda la lista o un solo dato alguien me podria orientar de como realizarlo
Código:
#include <stdio.h>
#include <string.h>
#include <conio.h>

typedef struct alumno{
	char nombre[50];
	char cuenta[7];
   char materia[20];
} Alumno;

// Arreglo que almacena alumnos
Alumno alumnos[100];
// Contiene el numero de alumnos actual
int total = 0;

void cargar(), guardar(), insertar(Alumno info);
void ingresar(), eliminar(), mostrar(), ordenar();
char menu(void);

void main(void)
{
   clrscr();
   cargar();
   char op;

   for(;;)
   {
     switch(op=menu())
     {
        case '1':
           ingresar();
           printf("Alumno ingresado exitosamente");
           getch();
			  break;
        case '2':
           eliminar();
           getch();
           break;
        case '3':
           ordenar();
           printf("Se han ordenado los registros");
           getch();
           break;
        case '4':
           mostrar();
           getch();
           break;
        case '5':
           break;
        default :
           printf("Opcion no valida");
           getch();
           break;
     }

     if(op=='5') break;
     clrscr();
   }

   guardar();
}


void insertar(Alumno info)
{
   strcpy(alumnos[total].nombre, info.nombre);
	strcpy(alumnos[total].cuenta, info.cuenta);
   strcpy(alumnos[total].materia, info.materia);
   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 nombre: "); scanf("%s",&(info.nombre));
	printf("Ingrese No de cuenta: "); scanf("%s",&(info.cuenta));
   printf("Ingrese la materia: "); scanf("%s", &(info.materia));
   insertar(info);
}

void eliminar()
{
   char nombre[20];
   int i;

	//printf("Ingrese el numero de cuenta del alumno 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].nombre, alumnos[j].nombre);
				strcpy(alumnos[j-1].cuenta, alumnos[j].cuenta);
           strcpy( alumnos[j-1].materia, alumnos[j].materia);


         printf("Alumno eliminado");
         total--;
         break;
      }

   if(i==total)
      printf("Alumno no encontrado");
}

void mostrar()
{
   printf("--- Listado de alumnos ---\n");
	printf("Num. - Nombre - No. de Cuenta - materia\n");
	for(int i=0; i<total; i++)
   {
      printf("%d - ", i+1);
      printf("%s - ", alumnos[i].nombre);
		printf("%s - ", alumnos[i].cuenta);
      printf("%s\n", alumnos[i].materia);
   }
}

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.nombre, alumnos[i].nombre);
			strcpy(temp.cuenta, alumnos[i].cuenta);
			strcpy(temp.materia, alumnos[i].materia);

         // Intercambia informacion
         strcpy(alumnos[i].nombre, alumnos[j].nombre);
			strcpy(alumnos[i].cuenta, alumnos[j].cuenta);
         strcpy(alumnos[i].materia, alumnos[j].materia);

         strcpy(alumnos[j].nombre, temp.nombre); 
			strcpy(alumnos[j].cuenta, temp.cuenta);
			strcpy(alumnos[j].materia, temp.materia);
      } 
   }
} 

char menu(void) 
{ 
   char c; 
	printf("\n\n\tPROGRAMA DE ALTA DE ALUMNOS \n");
	printf("\tREGISTRO DE ALUMNOS\n");
	printf("Por favor teclee una opcion del menu \n");
	printf("(1)Dar de alta almuno \n");
	printf("(2) Eliminar alumno\n");
	printf("(3) Ordenas la lista de alumnos \n");
	printf("(4) Imprimir lista de alumnos \n");
	printf("(5) Salir del programa \n");
	printf("Seleccion:\n ");
	c=getche();
   printf("\n"); 
   return(c); 
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:18.