Add files via upload

This commit is contained in:
Fernando Méndez
2019-06-20 13:06:16 +02:00
committed by GitHub
parent 989e433448
commit 2fd3b1e062
80 changed files with 2922 additions and 0 deletions

View File

@ -0,0 +1,8 @@
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#ifndef DBG_NEW #define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define new DBG_NEW
#endif
#endif

View File

@ -0,0 +1,91 @@
#include "ListaCitas.h"
using namespace std;
//Funciones auxiliares:
void ampliar(tListaCitas& listaCitas, int); //Amplia la lista de citas en caso de que se haya llegado al l<>mite de su capacidad.
bool buscar(tListaCitas& listaCitas, const tCita& cita, int& ini, int& fin, int& pos); //B<>squeda binaria y recursiva.
void nuevaLista(tListaCitas& listaCitas) {
listaCitas.capacidad = 5;
listaCitas.cont = 0;
listaCitas.lista = new tCita[listaCitas.capacidad];
}
bool inserta(tListaCitas& listaCitas, const tCita& cita) {
bool insertado = false;
int ini = 0, fin = listaCitas.cont - 1, pos = 0;
if (listaCitas.cont == listaCitas.capacidad) {
ampliar(listaCitas, listaCitas.capacidad*2);
}
else {
if (!buscar(listaCitas, cita, ini, fin, pos)) {
for (int i = listaCitas.cont; i > pos; i--){
listaCitas.lista[i] = listaCitas.lista[i - 1];
}
listaCitas.lista[pos] = cita;
listaCitas.cont++;
insertado = true;
}
else {
listaCitas.lista[pos] = cita;
}
}
return insertado;
}
//
bool buscar(tListaCitas& listaCitas, const tCita& cita, int& ini, int& fin, int& pos){
bool encontrado = false;
if (ini <= fin) {
pos = (ini + fin) / 2;
if (cita.valoracion < listaCitas.lista[pos].valoracion) {
fin = pos - 1;
encontrado = buscar(listaCitas, cita, ini, fin, pos);
}
else if(listaCitas.lista[pos].valoracion < cita.valoracion){
ini = pos + 1;
encontrado = buscar(listaCitas, cita, ini, fin, pos);
}
else {
encontrado = true;
}
}
return encontrado;
}
//
void muestra(const tListaCitas& listaCitas) {
cout << "Lista de citas: " << endl;
for (int i = listaCitas.cont - 1; i >= 0; i--){
cout << setfill(char('-')) << setw(40) << "\n" << setfill(char(0));
mostrar(*listaCitas.lista[i].puntero1);
mostrar(*listaCitas.lista[i].puntero2);
cout << "Cita en: " << setw(10) << listaCitas.lista[i].lugar << setw(20) << "Valoraci<EFBFBD>n: " << listaCitas.lista[i].valoracion << endl;
cout << setfill(char('-')) << setw(40) << "\n" << setfill(char(0));
}
}
//
void ampliar(tListaCitas& listaCitas, int ampliacion) {
listaCitas.capacidad = ampliacion;
tCita* aux;
aux = new tCita[listaCitas.capacidad];
for (int i = 0; i < listaCitas.cont; i++){
aux[i] = listaCitas.lista[i];
}
delete[] listaCitas.lista;
listaCitas.lista = aux;
}
//
void libera(tListaCitas& listaCitas) {
delete[] listaCitas.lista;
}

View File

@ -0,0 +1,29 @@
#ifndef _LISTACITAS
#define _LISTACITAS
#include "ListaClientes.h"
//Constantes:
//Tipos:
typedef struct tCita {
tCliente *puntero1;
tCliente *puntero2;
std::string lugar;
int valoracion;
};
typedef struct tListaCitas {
tCita *lista; //Ordena por valoracion, de mayor a menor.
int cont;
int capacidad;
};
//Funciones:
void nuevaLista(tListaCitas& listaCitas);
bool inserta(tListaCitas& listaCitas, const tCita& cita); //const tCliente&, const tCliente&, std::string&, int&
void muestra(const tListaCitas& listaCitas);
void libera(tListaCitas& listaCitas);
#endif // !_LISTACITAS

View File

@ -0,0 +1,53 @@
#include "ListaClientes.h"
using namespace std;
void mostrar(tCliente& cliente) {
cout << setw(10) << cliente.login
<< setw(15) << cliente.fechaAlta
<< setw(10) << cliente.edad << setw(2) << "a<EFBFBD>os"
<< setw(10) << cliente.ciudad << endl;
}
bool cargar(tListaClientes& lista) {
bool carga = false;
ifstream archivo;
int i = 0;
lista.cont = 0;
archivo.open("clientes.txt");
if (!archivo.is_open()) {
cout << "Error al cargar los clientes." << endl;
}
else {
archivo >> i;
while (!archivo.fail() && lista.cont < i) {
lista.cliente[lista.cont] = new tCliente;
archivo >> lista.cliente[lista.cont]->login;
archivo >> lista.cliente[lista.cont]->fechaAlta;
archivo >> lista.cliente[lista.cont]->edad;
archivo >> lista.cliente[lista.cont]->ciudad;
lista.cont++;
}
carga = true;
}
return carga;
}
void mostrar(tListaClientes& lista, int& i) { //Recursiva.
if (i < lista.cont) {
cout << setw(2) << i;
mostrar(*lista.cliente[i]);
i++;
mostrar(lista, i);
}
}
void liberar(tListaClientes& lista) {
for (int i = 0; i < lista.cont; i++){
delete lista.cliente[i];
}
// delete[] lista.cliente;
}

View File

@ -0,0 +1,32 @@
#ifndef _LISTACLIENTES
#define _LISTACLIENTES
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
//Constantes:
const int MAX_CLIENTES = 50;
//Tipos:
typedef struct tCliente {
std::string login, fechaAlta, ciudad;
int edad;
};
typedef struct tListaClientes {
tCliente *cliente[MAX_CLIENTES]; //NO ORDENADA.
int cont;
};
//Funciones:
void mostrar(tCliente& cliente);
bool cargar(tListaClientes& lista);
void mostrar(tListaClientes& lista, int&); //Recursiva
void liberar(tListaClientes& lista);
#endif // !

View File

@ -0,0 +1,25 @@
6
Juan
15/06/07
42
Madrid
Luis
15/06/08
27
Madrid
Ana
15/06/08
18
Avila
Maria
15/06/09
23
Burgos
Javi
15/06/14
25
Salamanca
Marisa
25/05/15
40
Madrid

View File

@ -0,0 +1,79 @@
//Examen Junio 2017 - FP
//Grupos A, B y C
//Fernando M<>ndez Torrubiano
#include "ListaCitas.h"
#include "CheckML.h"
using namespace std;
//Funciones auxiliares:
int menu(); //Muestra el men<65> de opciones.
int main() {
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Muestra fugas de memoria.
system("chcp 1252"); //Castellano.
system("cls");
tListaCitas listaCitas;
tListaClientes lista;
tCliente cliente1, cliente2;
tCita cita;
int opc = -1;
int i = 0, c1, c2;
if (cargar(lista)) {
nuevaLista(listaCitas);
while (opc != 0){
opc = menu();
i = 0;
switch (opc){
case 1:
mostrar(lista, i);
break;
case 2:
mostrar(lista, i);
cout << "Cliente 1: ";
cin >> c1;
cita.puntero1 = lista.cliente[c1];
cout << "Cliente 2: ";
cin >> c2;
cita.puntero2 = lista.cliente[c2];
cout << "Lugar de la cita: ";
cin >> cita.lugar;
cout << "Valoraci<EFBFBD>n de la cita: ";
cin >> cita.valoracion;
inserta(listaCitas, cita);
break;
case 3:
muestra(listaCitas);
break;
default:
break;
}
}
}
else {
cout << "Fin del programa." << endl;
system("PAUSE");
}
liberar(lista);
libera(listaCitas);
return 0;
}
int menu() {
int opc = 0;
cout << "1.-Mostrar lista de clientes." << endl;
cout << "2.-Nueva cita." << endl;
cout << "3.-Mostrar todas las citas (ordenasdas por valoraci<63>n)." << endl;
cout << "0.-SALIR" << endl;
do {
cout << "Introduzca una opci<63>n:";
cin >> opc;
} while (opc < 0 || opc > 3);
return opc;
}