-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbanda.h
103 lines (85 loc) · 2.27 KB
/
banda.h
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
#ifndef BANDA_H
#define BANDA_H
#include "prototipos.h"
struct NodoContenido{
float cantidad;
QString tipo;
NodoContenido* siguiente;
NodoContenido(float pCantidad, QString pTipo){
cantidad = pCantidad;
tipo = pTipo;
siguiente = NULL;
}
};
struct Banda{
float limite;
QString tipo;
NodoContenido* frenteBanda;
Banda(QString pTipo){
limite = 0;
frenteBanda = NULL;
tipo=pTipo;
}
/*
* Reestablece los parametros por defecto de la estructura.
*/
void resetearBanda(){
limite=0.0;
frenteBanda=NULL;
}
/*
* Entradas:
* Cantidad que se desea encolar.
* Tipo de lo que se va a encolar.
*
* Encola un nodo en la banda (cola) correspondiente.
*/
void encolarBanda(float pCantidad, QString pTipo){
NodoContenido* nodoNuevo = new NodoContenido(pCantidad, pTipo);
if(frenteBanda == NULL){
frenteBanda = nodoNuevo;
} else {
NodoContenido* nodoActual = frenteBanda;
while(nodoActual->siguiente != NULL){
nodoActual = nodoActual->siguiente;
}
nodoActual->siguiente = nodoNuevo;
}
}
/*
* Salidas:
* Nodo que se ha borrado (desencolado)
*
* Desencola un nodo de la banda (cola) y retorna su direccion de memoria.
*/
NodoContenido* desencolarBanda(){
if(frenteBanda == NULL){
return NULL;
} else {
NodoContenido* nodoBorrado = frenteBanda;
frenteBanda = frenteBanda->siguiente;
nodoBorrado->siguiente = NULL;
return nodoBorrado;
}
}
bool estaLlena(){
return contenidoActual() >= limite;
}
/*
* Salidas:
* Suma de todas las cantidades de todos los nodos de la cola.
*
* Itera sobre la banda y suma sus variables cantidad a una variable de
* sumatoria que despues es retornadas.
*/
float contenidoActual(){
NodoContenido* nodoActual = frenteBanda;
float sumatoria = 0.0;
while(nodoActual != NULL){
sumatoria += nodoActual->cantidad;
nodoActual = nodoActual->siguiente;
}
return sumatoria;
}
};
#endif // BANDA_H