secundario
Publicado por Fernando (1 intervención) el 18/06/2009 04:41:26
Buenas comunidad este e smi primer post.. Soy estudiante de analista de sistemas y me tope con un problema.... Tenia que crear una lista que inserte, ordene, elimine, modifique y muestre los datos cargados que deben ser numeros enteros... Mi problema es que solo pude lograr ordenar los datos en forma de char y encesito que me los tome como numeros enteros al que em pueda ayudar muchisimas gracias.. el programa funciona perfectamente, solo neceistaria cambiar los chars x int..
saludos
#include <stdio.h>
#include <string.h>
#include <conio.h>
typedef struct alumno{
char Dato[20];
} Alumno;
/* Arreglo que almacena alumnos */
Alumno alumnos[5];
/* Contiene el numero de alumnos actual */
int total = 0;
void cargar(), guardar(), insertar(Alumno info);
void ingresar(), buscar(), modificar(), eliminar(), ordenar(), mostrar();
char menu(void);
void main(void)
{
clrscr();
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;
clrscr();
}
printf("Presione (g) para guardar los cambios: ");
if(getche()=='g')
guardar();
}
void insertar(Alumno info)
{
strcpy(alumnos[total].Dato, info.Dato);
total++;
}
void cargar()
{
Alumno info;
FILE *fp;
fp=fopen("alumnos.txt","r");
if(fp==NULL)
{
printf("No se puede abrir el archivo ");
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 ");
return;
}
for(int i=0; i<total; i++)
fwrite(&alumnos[i], sizeof(Alumno), 1, fp);
fclose(fp);
}
void ingresar()
{
Alumno info;
printf("Ingrese Dato: "); gets(info.Dato);
insertar(info);
printf("Dato ingresado exitosamente");
}
void buscar()
{
char Dato[20];
int i;
printf("Ingrese Dato a buscar: ");
gets(Dato);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].Dato, Dato))
{
printf("--- Datos del alumno --- ");
printf("Num.: %d ", i+1);
printf("Dato: %s ", alumnos[i].Dato);
break;
}
if(i==total)
printf("Dato no encontrado");
}
void modificar()
{
char Dato[20];
int i;
printf("Ingrese Dato a modificar: ");
gets(Dato);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].Dato, Dato))
{
printf("--- Datos actuales --- ");
printf("Num.: %d ", i+1);
printf("Dato: %s ", alumnos[i].Dato);
printf("--- Nuevos datos --- ");
printf("Ingrese Dato: "); gets(alumnos[i].Dato);
printf(" Datos actualizados exitosamente!");
break;
}
if(i==total)
printf("Dato no encontrado");
}
void eliminar()
{
char Dato[20];
int i;
printf("Ingrese Dato a eliminar: ");
gets(Dato);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].Dato, Dato))
{
/* Recorre registros posteriores */
for(int j=i+1; j<total; j++)
{
strcpy(alumnos[j-1].Dato, alumnos[j].Dato);
}
printf("Dato eliminado");
total--;
break;
}
if(i==total)
printf("Dato 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].Dato, alumnos[j].Dato)>0)
{
/* Copia en variable temporal datos actuales */
strcpy(temp.Dato, alumnos[i].Dato);
/* Intercambia informacion */
strcpy(alumnos[i].Dato, alumnos[j].Dato);
strcpy(alumnos[j].Dato, temp.Dato);
}
}
printf("Se han ordenado los Datos");
}
void mostrar()
{
printf("--- Listado de alumnos --- ");
printf("Num. - Dato ");
for(int i=0; i<total; i++)
{
printf("%d - ", i+1);
printf("%s - ", alumnos[i].Dato);
}
}
char menu(void)
{
char c;
printf("(1)Ingresar, (2)Buscar, (3)Modificar, (4)Eliminar, (5)Ordenar, (6)Mostrar lista (7)Salir ");
printf("Seleccion: ");
c=getche();
printf(" ");
return(c);
}
saludos
#include <stdio.h>
#include <string.h>
#include <conio.h>
typedef struct alumno{
char Dato[20];
} Alumno;
/* Arreglo que almacena alumnos */
Alumno alumnos[5];
/* Contiene el numero de alumnos actual */
int total = 0;
void cargar(), guardar(), insertar(Alumno info);
void ingresar(), buscar(), modificar(), eliminar(), ordenar(), mostrar();
char menu(void);
void main(void)
{
clrscr();
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;
clrscr();
}
printf("Presione (g) para guardar los cambios: ");
if(getche()=='g')
guardar();
}
void insertar(Alumno info)
{
strcpy(alumnos[total].Dato, info.Dato);
total++;
}
void cargar()
{
Alumno info;
FILE *fp;
fp=fopen("alumnos.txt","r");
if(fp==NULL)
{
printf("No se puede abrir el archivo ");
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 ");
return;
}
for(int i=0; i<total; i++)
fwrite(&alumnos[i], sizeof(Alumno), 1, fp);
fclose(fp);
}
void ingresar()
{
Alumno info;
printf("Ingrese Dato: "); gets(info.Dato);
insertar(info);
printf("Dato ingresado exitosamente");
}
void buscar()
{
char Dato[20];
int i;
printf("Ingrese Dato a buscar: ");
gets(Dato);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].Dato, Dato))
{
printf("--- Datos del alumno --- ");
printf("Num.: %d ", i+1);
printf("Dato: %s ", alumnos[i].Dato);
break;
}
if(i==total)
printf("Dato no encontrado");
}
void modificar()
{
char Dato[20];
int i;
printf("Ingrese Dato a modificar: ");
gets(Dato);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].Dato, Dato))
{
printf("--- Datos actuales --- ");
printf("Num.: %d ", i+1);
printf("Dato: %s ", alumnos[i].Dato);
printf("--- Nuevos datos --- ");
printf("Ingrese Dato: "); gets(alumnos[i].Dato);
printf(" Datos actualizados exitosamente!");
break;
}
if(i==total)
printf("Dato no encontrado");
}
void eliminar()
{
char Dato[20];
int i;
printf("Ingrese Dato a eliminar: ");
gets(Dato);
for(i=0; i<total; i++)
if(!strcmp(alumnos[i].Dato, Dato))
{
/* Recorre registros posteriores */
for(int j=i+1; j<total; j++)
{
strcpy(alumnos[j-1].Dato, alumnos[j].Dato);
}
printf("Dato eliminado");
total--;
break;
}
if(i==total)
printf("Dato 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].Dato, alumnos[j].Dato)>0)
{
/* Copia en variable temporal datos actuales */
strcpy(temp.Dato, alumnos[i].Dato);
/* Intercambia informacion */
strcpy(alumnos[i].Dato, alumnos[j].Dato);
strcpy(alumnos[j].Dato, temp.Dato);
}
}
printf("Se han ordenado los Datos");
}
void mostrar()
{
printf("--- Listado de alumnos --- ");
printf("Num. - Dato ");
for(int i=0; i<total; i++)
{
printf("%d - ", i+1);
printf("%s - ", alumnos[i].Dato);
}
}
char menu(void)
{
char c;
printf("(1)Ingresar, (2)Buscar, (3)Modificar, (4)Eliminar, (5)Ordenar, (6)Mostrar lista (7)Salir ");
printf("Seleccion: ");
c=getche();
printf(" ");
return(c);
}
Valora esta pregunta


0