Add files via upload
This commit is contained in:
@ -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
|
Binary file not shown.
@ -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;
|
||||
}
|
@ -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
|
@ -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;
|
||||
}
|
@ -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 // !
|
@ -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
|
79
Exámenes Resueltos (Segundo Semestre)/Junio2017ABC/main.cpp
Normal file
79
Exámenes Resueltos (Segundo Semestre)/Junio2017ABC/main.cpp
Normal 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;
|
||||
}
|
Reference in New Issue
Block a user