54 lines
1.1 KiB
C++
54 lines
1.1 KiB
C++
|
#include "Envio.h"
|
||
|
using namespace std;
|
||
|
|
||
|
bool cargar(tEnvio& envio, std::ifstream& archivo) {
|
||
|
bool carga = false;
|
||
|
int numItems = 0;
|
||
|
|
||
|
envio.cont = 0;
|
||
|
|
||
|
archivo.ignore();
|
||
|
getline(archivo, envio.destinatario);
|
||
|
getline(archivo, envio.ciudad);
|
||
|
archivo >> numItems;
|
||
|
envio.item = new tItem[numItems];
|
||
|
for (int i = 0; i < numItems; i++){
|
||
|
cargar(envio.item[i], archivo);
|
||
|
envio.cont++;
|
||
|
}
|
||
|
if (!archivo.fail()) { carga = true; }
|
||
|
|
||
|
return carga;
|
||
|
}
|
||
|
|
||
|
void mostrar(tEnvio& envio) {
|
||
|
cout << "A " << envio.destinatario << " de " << envio.ciudad << ":" << endl;
|
||
|
for (int i = 0; i < envio.cont; i++){
|
||
|
mostrar(envio.item[i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void destruir(tEnvio& envio) {
|
||
|
delete[] envio.item;
|
||
|
}
|
||
|
|
||
|
int cantidad(tEnvio& envio, std::string id, int& ini, int&fin, int& pos) {
|
||
|
int cant = 0;
|
||
|
|
||
|
if (ini <= fin) {
|
||
|
pos = (ini + fin) / 2;
|
||
|
if (id < envio.item[pos].id) {
|
||
|
fin = pos - 1;
|
||
|
cant = cantidad(envio, id, ini, fin, pos);
|
||
|
}
|
||
|
else if (envio.item[pos].id < id) {
|
||
|
ini = pos + 1;
|
||
|
cant = cantidad(envio, id, ini, fin, pos);
|
||
|
}
|
||
|
else {
|
||
|
cant = envio.item[pos].cantidad;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return cant;
|
||
|
}
|