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

Crear un programa en c q lea un archivo csv y haga operaciones con esa informacion

Estas en el tema de Crear un programa en c q lea un archivo csv y haga operaciones con esa informacion en el foro de C/C++ en Foros del Web. Necesito hacer un programa q lea una lista de estudiantes q esta separada por comas en la cedula, apellidos, nombres y nota y que haga ...
  #1 (permalink)  
Antiguo 18/05/2015, 12:42
 
Fecha de Ingreso: mayo-2015
Ubicación: Caracas
Mensajes: 1
Antigüedad: 8 años, 11 meses
Puntos: 0
Información Crear un programa en c q lea un archivo csv y haga operaciones con esa informacion

Necesito hacer un programa q lea una lista de estudiantes q esta separada por comas en la cedula, apellidos, nombres y nota y que haga los siguientes calculos Número de estudiantes del curso:
Cantidad de aprobados (en número y porcentaje)
Cantidad de aplazados (en número y porcentaje)
Nota promedio del curso.
Nota mínima y estudiante(s): nombre(s), apellido(s), nota.
Nota máxima y estudiante(s): nombre(s), apellido(s), nota.

Hasta el momento solo he logrado llegar a numero de estudiantes pero luego para separar cada termino despues de la coma para ponerlo en la estructura no he sabido como alguien me ayuda xfa aqui el codigo hasta por donde voy

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_NOM 70
#define MAX_LIN 50
#define MAX_CHR 100
struct tipo{
char nombre[MAX_NOM];
char apellido[MAX_NOM];
float cedula;
float nota;
};
struct tipo Alumno[MAX_LIN];
char linea[MAX_CHR];
int main(void){
FILE*Fh;
char ced[MAX_LIN];
char aux[3];
int i,j;
char fnom[30];
printf("Introduzca el nombre del archivo: ");
scanf("%28s",fnom);
fflush(stdin);
Fh=fopen(fnom,"rb");
if(Fh==NULL){
printf("Archivo %s no existe \n", fnom);
return(-1);
}
fgets(linea, MAX_CHR,Fh);
if(strstr(linea,"Cedula")==NULL)
printf("Archivo no valido");
if(strlen(linea)==MAX_CHR-1)
printf("Error");
for(i=0;!feof(Fh) ;i++){
fgets(linea,MAX_CHR,Fh);
}
printf("N estudiantes %d\n", i);

int ind=0;
for (j=0; j<strlen(linea); j++){
if(linea[j]==','&& j<ind)
strncpy(ced,&linea[ind],ind-j);
Alumno[i].cedula=atoi(ced);
ind=j;
}
aca no se guarda la cedula cuando intento imprimirla me da 0
  #2 (permalink)  
Antiguo 19/05/2015, 02:42
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Crear un programa en c q lea un archivo csv y haga operaciones con esa inf

no se como tienes el archivo. si lo adjuntaras seria genial. por otro lado mire esto:
Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #define MAX_NOM 70
  5. #define MAX_LIN 50
  6. #define MAX_CHR 100
  7.  
  8.  
  9. struct tipo {
  10.     char nombre[MAX_NOM];
  11.     char apellido[MAX_NOM];
  12.     float cedula;
  13.     float nota;
  14. };
  15. struct tipo Alumno[MAX_LIN];
  16.  
  17.  
  18. //funcion que vacia el buffer mejor que fflush
  19. void flush_in();
  20.  
  21. int main ( void ) {
  22.     FILE* Fh;
  23.    
  24.     int i;
  25.     char fnom[30] = "prueba.txt";
  26.     //printf ( "Introduzca el nombre del archivo: " );
  27.     //scanf ( "%28[^\n]%*c", fnom );
  28.     flush_in();
  29.    
  30.     Fh = fopen ( fnom, "r" );
  31.     if ( Fh == NULL ) { perror("Erro al abrir fichero: "); return ( -1 ); }
  32.    
  33.     for ( i=0; fscanf(Fh, "%69[^,], %69[^,], %f, %f%*c", Alumno[i].nombre, Alumno[i].apellido, &Alumno[i].cedula, &Alumno[i].nota ) != EOF; i++ ){
  34.         printf("%s %s %f %f\n", Alumno[i].nombre, Alumno[i].apellido, Alumno[i].cedula, Alumno[i].nota);
  35.  
  36.     }
  37.    
  38.     getchar();
  39.     return 0;
  40. }
  41.  
  42. //funcion que vacia el buffer mejor que fflush
  43. void flush_in() {
  44.     int ch;
  45.    
  46.     while ( ( ch = fgetc ( stdin ) ) != EOF && ch != '\n' ) {}
  47. }

ti tuvieras un archivo que dentro de este este así:
Código txt:
Ver original
  1. felipe, lol2, 3345, 2.3
  2. raul, lol3, 3745, 5.3
  3. tenorio, lol4, 3345, 6.3
  4. jose, lol5, 3395, 2.3
  5. pablo, lol6, 3345, 2.9
  6. mantenorio, lol7, 3335, 2.3
Aquí le puedes descargar: http://ge.tt/15RXOgG2/v/0

Y si no sirve el apaño suba su csv aquí para que lo veamos: http://ge.tt/
no hace falta registro

Etiquetas: caracteres, estructuras, ficheros, lenguajec
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 14:46.