El programa consiste en crear un programa que tome datos de un archivo .data y realizar operaciones como:
- El monto promedio de todas las operaciones.
- El total del monto de todas las operaciones.
- El producto que más veces aparece en las ventas.
El formato de los datos del archivo son lineales de esta forma:
Nombre;Producto;Monto;Fecha;dd-mm-aaaa
Si me pudieran ayudar en como puedo hacer estas operaciones o darme una guía de como realizarlas, he intentado hacerlas pero ya la cabeza no me da para más, por favor si me pudieran ayudar que ya tengo poco tiempo para presentar el programa en la escuela. Aquí esta lo que he hecho hasta ahora:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
typedef struct {
char *nombre;
int codProducto;
int monto;
int dia;
int mes;
int year;
} personas;
personas *per;
void vaciar(char tenm[]);
void copiaNom(char temp[], int i);
void copiaPro(char temp[], int i);
void copiaMot(char temp[], int i);
void copiaDia(char temp[], int i);
void copiaMes(char temp[], int i);
void montoPromedio(char temp[]);
int main() {
char temp[50];
char aux;
int cont = 0;
int a, b, c, d, e, g, i;
int n3 = 0;
FILE *f;
f = fopen("prueba_test.data", "r");
if (f == NULL) {
printf("No se pudo encontrar el fichero.\n");
exit(1);
}
while (!feof(f)) {
fgets(temp, 50, f);
cont++;
}
rewind(f);
per = (personas *)malloc(cont * sizeof(personas));
if (per == NULL) {
printf("No se pudo resrvar memoria");
exit(1);
}
for (i = 0; !feof(f); i++) {
vaciar(temp);
aux = 'j';
// nombre
for (a = 0; aux != ';'; a++) {
aux = fgetc(f);
if (aux != ';') {
temp[a] = aux;
}
}
copiaNom(temp, i);
// producto
vaciar(temp);
aux = '0';
for (b = 0; aux != ';'; b++) {
aux = fgetc(f);
if (aux != ';') {
temp[b] = aux;
}
}
copiaPro(temp, i);
// monto
vaciar(temp);
aux = '0';
for (c = 0; aux != ';'; c++) {
aux = fgetc(f);
if (aux != ';') {
temp[c] = aux;
}
}
copiaMot(temp, i);
// dia
vaciar(temp);
aux = '0';
for (d = 0; aux != '-'; d++) {
aux = fgetc(f);
if (aux != ';') {
temp[d] = aux;
}
}
copiaDia(temp, i);
// mes
vaciar(temp);
aux = '0';
for (e = 0; aux != '-'; e++) {
aux = fgetc(f);
if (aux != '-') {
temp[e] = aux;
}
}
copiaMes(temp, i);
// year
fgets(temp, 6, f);
per[i].year = atoi(temp);
printf("Nombre: %s Producto: %i Monto: %i Fecha: %i-%i-%i \n",
per[i].nombre,
per[i].codProducto,
per[i].monto,
per[i].dia,
per[i].mes,
per[i].year);
}
system("pause");
return 0;
}
void vaciar(char temp[]) {
int i;
for (i = 0; i < 50; i++) {
temp[i] = '\0';
}
}
// copiando nombre
void copiaNom(char temp[], int i) {
int N = strlen(temp) + 1;
per[i].nombre = (char *)malloc(N * sizeof(char));
if (per[i].nombre == NULL) {
printf("No se pudo reservar memoria");
exit(1);
}
strcpy(per[i].nombre, temp);
}
// copiando producto
void copiaPro(char temp[], int i) {
int N = strlen(temp) + 1;
per[i].codProducto = atoi(temp);
}
// copiando monto
void copiaMot(char temp[], int i) {
int N = strlen(temp) + 1;
per[i].monto = atoi(temp);
}
// copiando dia
void copiaDia(char temp[], int i) {
int N = strlen(temp) + 1;
per[i].dia = atoi(temp);
}
// copiando mes
void copiaMes(char temp[], int i) {
int N = strlen(temp) + 1;
per[i].mes = atoi(temp);
}