Dev - C++ - Nesecito ayuda para una tarea de la escuela(tengo poco tiempo)

 
Vista:
sin imagen de perfil

Nesecito ayuda para una tarea de la escuela(tengo poco tiempo)

Publicado por Juan Miguel (2 intervenciones) el 17/07/2021 05:32:02
el trabajo se trata de do tomar datos de un fichero .data y realizar estas operaciones

1 El monto promedio de todas las operaciones.

2 El total del monto de todas las operaciones.

3 El producto que más veces aparece en las ventas.

nesecito ayuda con estas operaciones no se como hacerlas con el programa.

los datos son lineales y esta es su formato :: Nombre;Producto;Monto;Fecha(dd-mm-aaaa)

esto es lo que tengo adelantado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#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);
 
int main(){
	char temp[50];
	char aux;
    int cont = 0;
	int a,b,c,d,e,g,i;
	int mt = 0,m = 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 = '0';
		//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);
}
 
void calMontoProm(){
	for(i=0;aux == '\n';i++){
		m++;
		mt= per[i].monto + mt;
        if(feof(f)){
	        mt/m;
	        printf("El promedio del monto es: %i \n",mt);
        }
    }
}
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