-
Notifications
You must be signed in to change notification settings - Fork 0
/
map.c
116 lines (100 loc) · 3.76 KB
/
map.c
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
/**
* @file map.c
* @author Álvaro Valenzuela A.
* @brief Archivo que se encarga de mapear un listado de vehiculos a un tipo de estructura Map.
* @version 0.1
* @date 2023-05-05
*
* @copyright Copyright (c) 2023
*
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "map.h"
#define ROW_LENGHT 1000
#define FILE_SIZE 9924
const char *VEHICULO_LIVIANO_KEY = "Vehiculo Liviano";
const char *CARGA_KEY = "Carga";
const char *TRANSPORTE_PUBLICO_KEY = "Transporte Publico";
/**
* @brief Mapea un arreglo de vehiculos a una estructura Map en donde solo se almacenarán los valores de tasaciones para vehiculos de tipo liviano, carga y transporte publico.
*
* @param vehiculos Arreglo de vehiculos
* @param total_lineas Total de lineas a mapear
* @return Map*
*/
Map *map_tasaciones(Vehiculo vehiculos[], int total_lineas)
{
Map *map_tasacion = (Map *)malloc(sizeof(Map) * total_lineas);
for (int i = 0; i < total_lineas; i++)
{
if (strcmp(vehiculos[i].grupo_vehiculo, VEHICULO_LIVIANO_KEY) == 0) // Filtramos solo los vehiculos con llave "Vehiculo Liviano"
{
map_tasacion[i].vehiculo_liviano = vehiculos[i].tasacion;
}
if (strcmp(vehiculos[i].grupo_vehiculo, CARGA_KEY) == 0) // Filtramos solo los vehiculos con llave "Carga"
{
map_tasacion[i].carga = vehiculos[i].tasacion;
}
if (strcmp(vehiculos[i].grupo_vehiculo, TRANSPORTE_PUBLICO_KEY) == 0) // Filtramos solo los vehiculos con llave "Transporte publico"
{
map_tasacion[i].transporte_publico = vehiculos[i].tasacion;
}
}
return map_tasacion;
}
/**
* @brief Mapea un arreglo de vehiculos a una estructura Map en donde solo se almacenarán los valores de valor_pagado para vehiculos de tipo liviano, carga y transporte publico.
*
* @param vehiculos Arreglo de vehiculos
* @param total_lineas Total de lineas a mapear
* @return Map*
*/
Map *map_valor_pagado(Vehiculo vehiculos[], int total_lineas)
{
Map *map_valor_pagado = (Map *)malloc(sizeof(Map) * total_lineas);
for (int i = 0; i < total_lineas; i++)
{
if (strcmp(vehiculos[i].grupo_vehiculo, VEHICULO_LIVIANO_KEY) == 0) // Filtramos solo los vehiculos con llave "Vehiculo Liviano"
{
map_valor_pagado[i].vehiculo_liviano = vehiculos[i].valor_pagado;
}
if (strcmp(vehiculos[i].grupo_vehiculo, CARGA_KEY) == 0) // Filtramos solo los vehiculos con llave "Carga"
{
map_valor_pagado[i].carga = vehiculos[i].valor_pagado;
}
if (strcmp(vehiculos[i].grupo_vehiculo, TRANSPORTE_PUBLICO_KEY) == 0) // Filtramos solo los vehiculos con llave "Transporte publico"
{
map_valor_pagado[i].transporte_publico = vehiculos[i].valor_pagado;
}
}
return map_valor_pagado;
}
/**
* @brief Mapea un arreglo de vehiculos a una estructura Map en donde solo se almacenarán los valores de grupo_vehiculo para vehiculos de tipo liviano, carga y transporte publico.
*
* @param vehiculos Arreglo de vehiculos
* @param total_lineas Total de lineas a mapear
* @return Map*
*/
Map *map_puertas(Vehiculo vehiculos[], int total_lineas)
{
Map *map_puertas = (Map *)malloc(sizeof(Map) * total_lineas);
for (int i = 0; i < total_lineas; i++)
{
if (strcmp(vehiculos[i].grupo_vehiculo, VEHICULO_LIVIANO_KEY) == 0) // Filtramos solo los vehiculos con llave "Vehiculo Liviano"
{
map_puertas[i].vehiculo_liviano = vehiculos[i].puertas;
}
if (strcmp(vehiculos[i].grupo_vehiculo, CARGA_KEY) == 0) // Filtramos solo los vehiculos con llave "Carga"
{
map_puertas[i].carga = vehiculos[i].puertas;
}
if (strcmp(vehiculos[i].grupo_vehiculo, TRANSPORTE_PUBLICO_KEY) == 0) // Filtramos solo los vehiculos con llave "Transporte publico"
{
map_puertas[i].transporte_publico = vehiculos[i].puertas;
}
}
return map_puertas;
}