C/Visual C - secundario

 
Vista:

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);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:secundario

Publicado por kamaleon (6 intervenciones) el 18/06/2009 10:30:51
hola, no comprendo poruqe trabajastes con una estructura (con un dato tipo array char )si de antemano sabias q solo nesesitabas trabajar con numeros enteros. para mi q este codigo te lo pasaron, pero bueno. por lo que pides solo tendrias q cambiar algo en tu codigo seria algo asi:
SI LO KIERES TRABAJAR CON ESTRUCTURAS, AUNKE NO HACE FALTA .

#include <stdio.h>
#include <string.h>
#include <conio.h>

typedef struct alumno{
int Dato;
} 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)
{

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()
{
int Dato;
int i;

printf("Ingrese Dato a buscar: ");
gets(Dato);

for(i=0; i<total; i++)
if(alumnos[i].Dato== Dato)
{
printf("--- Datos del alumno --- ");
printf("Num.: %d ", i+1);
printf("Dato: %d", alumnos[i].Dato);

break;
}

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

void modificar()
{
int Dato;
int i;

printf("Ingrese Dato a modificar: ");
gets(Dato);

for(i=0; i<total; i++)
if(alumnos[i].Dato== Dato)
{
printf("--- Datos actuales --- ");
printf("Num.: %d ", i+1);
printf("Dato: %d ", 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()
{
int Dato;
int i;

printf("Ingrese Dato a eliminar: ");
gets(Dato);

for(i=0; i<total; i++)
if(alumnos[i].Dato== Dato)
{
/* Recorre registros posteriores */
for(int j=i+1; j<total; j++)
{
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(alumnos[i].Dato>alumnos[j].Dato)
{
/* Copia en variable temporal datos actuales */
temp.Dato= alumnos[i].Dato;

/* Intercambia informacion */
alumnos[i].Dato= alumnos[j].Dato;

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("%d - ", 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 respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar