[C] Gestor de notas

  • 1 Respuestas
  • 3351 Vistas

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

Desconectado mr.blood

  • *
  • Underc0der
  • Mensajes: 73
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

[C] Gestor de notas

  • en: Mayo 20, 2013, 01:18:43 pm
Un programa para organizar alumnos y notas utilizando listas enlazadas.

Código: (c) You are not allowed to view links. Register or Login
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct alumnos
{
struct alumnos *last;
char nombre[15];
int nota;
};

struct alumnos *actual;
 
void nuevo_alumno(char *nombre, int nota)
{
struct alumnos *nuevo;
nuevo=(struct alumnos *)malloc(sizeof(struct alumnos));
strcpy(nuevo->nombre, nombre);
nuevo->nota=nota;

if(actual==NULL)
{
actual=nuevo;
}
else
{
nuevo->last=actual;
actual=nuevo;
}
}

void mostrar_lista()
{
struct alumnos *consulta;
for(consulta=actual;consulta->last!=NULL;consulta=consulta->last)
{
printf("\n%s --- %i", consulta->nombre, consulta->nota);
}
printf("\n%s --- %i", consulta->nombre, consulta->nota);
}

void borrar_lista()
{
struct alumnos *consulta;
struct alumnos *buffer;
consulta=actual;
while(consulta->last!=NULL)
{
buffer=consulta->last;
free(consulta);
consulta=buffer;
}
}

void guardar_lista()
{
FILE *archivo=fopen("archivo", "w");
struct alumnos *consulta;
for(consulta=actual;consulta->last!=NULL;consulta=consulta->last)
{
fprintf(archivo, "%s %i\n", consulta->nombre, consulta->nota);
}
fprintf(archivo, "%s %i\n", consulta->nombre, consulta->nota);
fclose(archivo);
}

void cargar_lista()
{
FILE *archivo=fopen("archivo", "r");
struct alumnos consulta;
fscanf(archivo, "%s %i", consulta.nombre, &consulta.nota);
while(!feof(archivo))
{
nuevo_alumno(consulta.nombre, consulta.nota);
fscanf(archivo, "%s %i", consulta.nombre, &consulta.nota);
}
fclose(archivo);
}

void borrar_alumno(char *nombre)
{
struct alumnos *consulta, *buffer;
buffer=actual;
for(consulta=actual;consulta->last!=NULL;consulta=consulta->last)
{
if(strcmp(consulta->nombre, nombre))
{
buffer=consulta;
}
else
{
buffer->last=consulta->last;
free(consulta);
return;
}
}

buffer->last=NULL;
free(consulta);

}
int buscar_alumno(char *nombre)
{
struct alumnos *consulta;
for(consulta=actual;consulta->last!=NULL;consulta=consulta->last)
{
if(!strcmp(consulta->nombre, nombre))
{
return consulta->nota;
}
}
if(!strcmp(consulta->nombre, nombre))
{
return consulta->nota;
}
return -1;
}

int main()
{
//~ char nombre[15];
//~ int nota;
//~ while((getchar())!=' ')
//~ {
//~ printf("Introduzca nombre y nota: ");
//~ scanf("%s %i", nombre, &nota);
//~ setbuffer(stdin, 0, 0);
//~ nuevo_alumno(nombre, nota);
//~ mostrar_lista();
//~ }
//~ guardar_lista();
//~ borrar_lista();

cargar_lista();
mostrar_lista();
borrar_alumno("Aurelio");
printf("%i", buscar_alumno("Irene"));
borrar_lista();

return 0;
}

Sa1uDoS
« Última modificación: Octubre 28, 2013, 09:18:48 am por Expermicid »

Desconectado StuXn3t

  • *
  • Underc0der
  • Mensajes: 198
  • Actividad:
    0%
  • Country: 00
  • Reputación 0
  • Twitter: @hackem
    • Ver Perfil
    • Ethical Hacking, Malware Analysis, Disinfection Techniques and more...

Re:[C] Gestor de notas

  • en: Mayo 25, 2013, 12:40:09 am
Gracias por el aporte!
You are not allowed to view links. Register or Login