Add files via upload
This commit is contained in:
parent
a62863ced0
commit
b753c15873
@ -0,0 +1,54 @@
|
|||||||
|
#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;
|
||||||
|
}
|
23
Exámenes Resultos (Extraordinaria)/Septiembre2016_1/Envio.h
Normal file
23
Exámenes Resultos (Extraordinaria)/Septiembre2016_1/Envio.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef _ENVIO
|
||||||
|
#define _ENVIO
|
||||||
|
|
||||||
|
#include "ItemPedido.h"
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tEnvio {
|
||||||
|
tItem *item; //NO ORDENADA.
|
||||||
|
std::string destinatario, ciudad;
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
bool cargar(tEnvio& envio, std::ifstream& archivo);
|
||||||
|
void mostrar(tEnvio& envio);
|
||||||
|
void destruir(tEnvio& envio);
|
||||||
|
int cantidad(tEnvio& envio, std::string id, int& ini, int&fin, int& pos); //Recursiva.
|
||||||
|
|
||||||
|
|
||||||
|
#endif // !_ENVIO
|
@ -0,0 +1,22 @@
|
|||||||
|
#include "ItemPedido.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
bool cargar(tItem& item, std::ifstream& archivo) {
|
||||||
|
bool carga = false;
|
||||||
|
|
||||||
|
archivo.ignore();
|
||||||
|
getline(archivo, item.id);
|
||||||
|
getline(archivo, item.nombre);
|
||||||
|
archivo >> item.cantidad;
|
||||||
|
|
||||||
|
if (!archivo.fail()) { carga = true; }
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(tItem& item) {
|
||||||
|
cout << right << setw(15) << item.id
|
||||||
|
<< setw(2) << "-" << setw(2)
|
||||||
|
<< setw(25) << item.nombre
|
||||||
|
<< setw(5) << "(" << item.cantidad << ")" << endl;
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef _ITEMPEDIDO
|
||||||
|
#define _ITEMPEDIDO
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tItem {
|
||||||
|
std::string id, nombre;
|
||||||
|
int cantidad;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
bool cargar(tItem& item, std::ifstream& archivo);
|
||||||
|
void mostrar(tItem& item);
|
||||||
|
|
||||||
|
|
||||||
|
#endif // !_ITEMPEDIDO
|
||||||
|
|
@ -0,0 +1,49 @@
|
|||||||
|
#include "ListaEnvios.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
bool cargar(tListaEnvios& lista) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
int numEnvios = 0;
|
||||||
|
|
||||||
|
lista.cont = 0;
|
||||||
|
|
||||||
|
archivo.open("tienda.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar la tienda." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> numEnvios;
|
||||||
|
while (!archivo.fail() && lista.cont < numEnvios) {
|
||||||
|
lista.envio[lista.cont] = new tEnvio;
|
||||||
|
if (cargar(*lista.envio[lista.cont], archivo)) {
|
||||||
|
lista.cont++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(tListaEnvios& lista) {
|
||||||
|
for (int i = 0; i < lista.cont; i++){
|
||||||
|
mostrar(*lista.envio[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ordenarPorCliente(tListaEnvios& lista) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ordenarPorCiudad(tListaEnvios& lista) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void destruir(tListaEnvios& lista) {
|
||||||
|
for (int i = 0; i < lista.cont; i++){
|
||||||
|
destruir(*lista.envio[i]);
|
||||||
|
delete lista.envio[i];
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef _LISTAENVIOS
|
||||||
|
#define _LISTAENVIOS
|
||||||
|
|
||||||
|
#include "Envio.h"
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_ENVIOS = 50;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tListaEnvios {
|
||||||
|
tEnvio *envio[MAX_ENVIOS];
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
bool cargar(tListaEnvios& lista);
|
||||||
|
void mostrar(tListaEnvios& lista);
|
||||||
|
void ordenarPorCliente(tListaEnvios& lista); //Ordenada por destinatario, de menor a mayor.
|
||||||
|
void ordenarPorCiudad(tListaEnvios& lista); //Ordena por dirección de envio de mayor a menor.
|
||||||
|
void destruir(tListaEnvios& lista);
|
||||||
|
|
||||||
|
#endif // !_LISTAENVIOS
|
Binary file not shown.
@ -0,0 +1,13 @@
|
|||||||
|
#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
|
||||||
|
|
28
Exámenes Resultos (Extraordinaria)/Septiembre2016_1/main.cpp
Normal file
28
Exámenes Resultos (Extraordinaria)/Septiembre2016_1/main.cpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
//Examen Septiembre 2016 - FP
|
||||||
|
//Grupos: _1
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
#include "ListaEnvios.h"
|
||||||
|
#include "checkML.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Detecta posibles fugas de memoria.
|
||||||
|
system("chcp 1252"); //Castellano
|
||||||
|
system("cls");
|
||||||
|
|
||||||
|
tListaEnvios envios;
|
||||||
|
|
||||||
|
if (cargar(envios)) {
|
||||||
|
mostrar(envios);
|
||||||
|
//
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "FIN DEL PROGRAMA." << endl;
|
||||||
|
}
|
||||||
|
system("PAUSE");
|
||||||
|
|
||||||
|
destruir(envios);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
3
|
||||||
|
Juan
|
||||||
|
Madrid
|
||||||
|
3
|
||||||
|
mouse
|
||||||
|
El mejor mouse
|
||||||
|
2
|
||||||
|
pc
|
||||||
|
El mejor pc
|
||||||
|
1
|
||||||
|
cable
|
||||||
|
Los mejores cables
|
||||||
|
4
|
||||||
|
Maria
|
||||||
|
Seattle
|
||||||
|
2
|
||||||
|
bici
|
||||||
|
Gran bicicleta
|
||||||
|
1
|
||||||
|
rueda
|
||||||
|
Ruedas estupendas
|
||||||
|
2
|
||||||
|
Luis
|
||||||
|
Madrid
|
||||||
|
2
|
||||||
|
cuchara
|
||||||
|
Cuchara para comer
|
||||||
|
6
|
||||||
|
tenedor
|
||||||
|
Tenedores para comer
|
||||||
|
6
|
@ -0,0 +1,23 @@
|
|||||||
|
#include "Contacto.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
bool cargar(tContacto& contacto, std::ifstream& archivo) {
|
||||||
|
bool carga = false;
|
||||||
|
if (!archivo.fail()) {
|
||||||
|
getline(archivo, contacto.id);
|
||||||
|
getline(archivo, contacto.nombre);
|
||||||
|
getline(archivo, contacto.email);
|
||||||
|
getline(archivo, contacto.tlf);
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(tContacto& contacto) {
|
||||||
|
cout << right << setw(10) << "Contacto: "
|
||||||
|
<< setw(10) << contacto.id
|
||||||
|
<< " - " << setw(20) << contacto.nombre << endl
|
||||||
|
<< setw(10) << "Email: " << setw(20) << contacto.email
|
||||||
|
<< " - " << setw(5) << "tlf.:" << setw(10) << contacto.tlf << endl;
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef _CONTACTO
|
||||||
|
#define _CONTACTO
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tContacto {
|
||||||
|
std::string id, nombre, email, tlf;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
bool cargar(tContacto& contacto, std::ifstream& archivo);
|
||||||
|
void mostrar(tContacto& contacto);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // ! _CONTACTO
|
@ -0,0 +1,76 @@
|
|||||||
|
#include "GruposChat.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
void nuevo(tGrupoChat& grupo) {
|
||||||
|
grupo.cont = 0;
|
||||||
|
grupo.elemento = new tElemento[grupo.capacidad];
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertar(tGrupoChat& grupo, tElemento& element) {
|
||||||
|
int ini = 0, fin = grupo.cont - 1, pos = 0;
|
||||||
|
|
||||||
|
if ((grupo.cont < grupo.capacidad) && (!buscar(grupo, element.puntero->id, ini, fin, pos))) {
|
||||||
|
for (int i = grupo.cont; i > pos; i--){
|
||||||
|
grupo.elemento[i] = grupo.elemento[i - 1];
|
||||||
|
}
|
||||||
|
grupo.elemento[pos] = element;
|
||||||
|
grupo.cont++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool buscar(tGrupoChat& grupo, std::string& id, int& ini, int& fin, int& pos) {
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
if (ini <= fin) {
|
||||||
|
pos = (ini + fin) / 2;
|
||||||
|
if (id < grupo.elemento[pos].puntero->id) {
|
||||||
|
fin = pos - 1;
|
||||||
|
encontrado = buscar(grupo, id, ini, fin, pos);
|
||||||
|
}
|
||||||
|
else if (grupo.elemento[pos].puntero->id < id) {
|
||||||
|
ini = pos + 1;
|
||||||
|
encontrado = buscar(grupo, id, ini, fin, pos);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrar(tGrupoChat& grupo) {
|
||||||
|
int totalMensajes = 0;
|
||||||
|
|
||||||
|
cout << setfill(char('-')) << setw(50) << "\n" << setfill(char(0));
|
||||||
|
cout << "Grupo de chat: " << grupo.nombreGrupo << endl;
|
||||||
|
cout << setfill(char('-')) << setw(50) << "\n" << setfill(char(0));
|
||||||
|
for (int i = 0; i < grupo.cont; i++) {
|
||||||
|
mostrar(*grupo.elemento[i].puntero);
|
||||||
|
cout << right << setw(20) << "Número de mensajes: " << grupo.elemento[i].numMensajes << endl;
|
||||||
|
totalMensajes += grupo.elemento[i].numMensajes;
|
||||||
|
}
|
||||||
|
cout << endl << "TOTAL MENSAJES: " << totalMensajes << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void combinar(tGrupoChat& grupoA, tGrupoChat& grupoB, tGrupoChat& grupoC) {
|
||||||
|
int contAUX = grupoA.cont + grupoB.cont;
|
||||||
|
|
||||||
|
grupoC.capacidad = grupoA.capacidad + grupoB.capacidad;
|
||||||
|
grupoC.nombreGrupo = grupoA.nombreGrupo + " y " + grupoB.nombreGrupo;
|
||||||
|
nuevo(grupoC);
|
||||||
|
for (int i = 0; i < contAUX; i++){
|
||||||
|
if (i < grupoA.capacidad) {
|
||||||
|
insertar(grupoC, grupoA.elemento[i]);
|
||||||
|
}
|
||||||
|
if (i < grupoB.cont) {
|
||||||
|
insertar(grupoC, grupoB.elemento[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void destruir(tGrupoChat& grupo) {
|
||||||
|
|
||||||
|
delete[] grupo.elemento;
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
#ifndef _GRUPOSCHAT
|
||||||
|
#define _GRUPOSCHAT
|
||||||
|
|
||||||
|
#include "ListaContactos.h"
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tElemento {
|
||||||
|
tContacto *puntero;
|
||||||
|
int numMensajes;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tGrupoChat {
|
||||||
|
tElemento *elemento; //Ordenada por id.
|
||||||
|
std::string nombreGrupo;
|
||||||
|
int capacidad;
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void nuevo(tGrupoChat& grupo);
|
||||||
|
void insertar(tGrupoChat& grupo, tElemento& element); //Insertar por id.
|
||||||
|
bool buscar(tGrupoChat& grupo, std::string& id, int&, int&, int&); //Recursiva y binaria.
|
||||||
|
void mostrar(tGrupoChat& grupo);
|
||||||
|
void combinar(tGrupoChat& grupoA, tGrupoChat& grupoB, tGrupoChat& grupoC);
|
||||||
|
void destruir(tGrupoChat& grupo);
|
||||||
|
|
||||||
|
|
||||||
|
#endif // !_GRUPOSCHAT
|
@ -0,0 +1,35 @@
|
|||||||
|
#include "ListaContactos.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
bool cargar(tListaContactos& lista) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
int numContactos;
|
||||||
|
|
||||||
|
lista.cont = 0;
|
||||||
|
|
||||||
|
archivo.open("contactos.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar los contactos." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> numContactos;
|
||||||
|
archivo.ignore();
|
||||||
|
while (!archivo.fail() && lista.cont < numContactos) {
|
||||||
|
lista.contacto[lista.cont] = new tContacto;
|
||||||
|
if (cargar(*lista.contacto[lista.cont], archivo)) {
|
||||||
|
lista.cont++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
archivo.close();
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void destruir(tListaContactos& lista) {
|
||||||
|
for (int i = 0; i < lista.cont; i++){
|
||||||
|
delete lista.contacto[i];
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
#ifndef _LISTACONTACTOS
|
||||||
|
#define _LISTACONTACTOS
|
||||||
|
|
||||||
|
#include "Contacto.h"
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_CONTACTOS = 50;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tListaContactos {
|
||||||
|
tContacto *contacto[MAX_CONTACTOS];
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
bool cargar(tListaContactos& lista);
|
||||||
|
void destruir(tListaContactos& lista);
|
||||||
|
|
||||||
|
|
||||||
|
#endif // !_LISTACONTACTOS
|
Binary file not shown.
@ -0,0 +1,13 @@
|
|||||||
|
#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
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
5
|
||||||
|
juanmi
|
||||||
|
Juan Miguel Garcia
|
||||||
|
jmgarcia@ucm.es
|
||||||
|
600111223
|
||||||
|
rakh
|
||||||
|
Teresa Cospe Garcia
|
||||||
|
rcospe@ucm.es
|
||||||
|
600111222
|
||||||
|
jonas
|
||||||
|
Jaime Garcia
|
||||||
|
jonas@ucm.es
|
||||||
|
600111221
|
||||||
|
marti
|
||||||
|
Martina Martin
|
||||||
|
marti@ucm.es
|
||||||
|
6000111211
|
||||||
|
dal
|
||||||
|
Dalia Martin
|
||||||
|
dmartin@ucm.es
|
||||||
|
600111111
|
67
Exámenes Resultos (Extraordinaria)/Septiembre2016_2/main.cpp
Normal file
67
Exámenes Resultos (Extraordinaria)/Septiembre2016_2/main.cpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
//Examen Septiembre 2016 - FP
|
||||||
|
//Grupo: _2
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
|
||||||
|
#include "GruposChat.h"
|
||||||
|
#include "checkML.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Detecta posibles fugas de memoria.
|
||||||
|
system("chcp 1252");
|
||||||
|
system("cls");
|
||||||
|
|
||||||
|
tListaContactos contactos;
|
||||||
|
tGrupoChat grupoA, grupoB, grupoC;
|
||||||
|
tElemento elemento;
|
||||||
|
|
||||||
|
srand(1);
|
||||||
|
|
||||||
|
if (cargar(contactos)) {
|
||||||
|
cout << "Introduzca nombre de grupo: ";
|
||||||
|
cin >> grupoA.nombreGrupo;
|
||||||
|
cout << "Introduca número de contactos: ";
|
||||||
|
cin >> grupoA.capacidad;
|
||||||
|
nuevo(grupoA);
|
||||||
|
|
||||||
|
for (int i = 0; i < grupoA.capacidad; i++) {
|
||||||
|
if (i < contactos.cont) {
|
||||||
|
elemento.puntero= contactos.contacto[0 + rand() % contactos.cont];
|
||||||
|
elemento.numMensajes = 0 + rand() % MAX_CONTACTOS;
|
||||||
|
insertar(grupoA, elemento);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << "Introduzca nombre de grupo: ";
|
||||||
|
cin >> grupoB.nombreGrupo;
|
||||||
|
cout << "Introduca número de contactos: ";
|
||||||
|
cin >> grupoB.capacidad;
|
||||||
|
nuevo(grupoB);
|
||||||
|
|
||||||
|
for (int i = 0; i < grupoB.capacidad; i++) {
|
||||||
|
if (i < contactos.cont) {
|
||||||
|
elemento.puntero = contactos.contacto[0 + rand() % contactos.cont];
|
||||||
|
elemento.numMensajes = 0 + rand() % MAX_CONTACTOS;
|
||||||
|
insertar(grupoB, elemento);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mostrar(grupoA);
|
||||||
|
mostrar(grupoB);
|
||||||
|
combinar(grupoA, grupoB, grupoC);
|
||||||
|
mostrar(grupoC);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "FIN DEL PROGRAMA." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
system("PAUSE");
|
||||||
|
|
||||||
|
destruir(contactos);
|
||||||
|
destruir(grupoA);
|
||||||
|
destruir(grupoB);
|
||||||
|
destruir(grupoC);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
#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
|
||||||
|
|
@ -0,0 +1,82 @@
|
|||||||
|
#include "Grupos.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
void nuevo(tGrupo& grupo, string& id, int& aula) {
|
||||||
|
grupo.id = id;
|
||||||
|
grupo.aula = aula;
|
||||||
|
grupo.cont = 0;
|
||||||
|
grupo.alumnos = new tAlumno[MAX_ALUMNOS];
|
||||||
|
}
|
||||||
|
|
||||||
|
void leer(tListaMatriculas& listaMatriculas, tGrupo& grupo) {
|
||||||
|
int linea;
|
||||||
|
string correo;
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
seleccionarMatricula(listaMatriculas, linea);
|
||||||
|
cout << "Correo: ";
|
||||||
|
cin >> correo;
|
||||||
|
|
||||||
|
if ((grupo.cont < MAX_ALUMNOS) && (!buscarAlumno(grupo, listaMatriculas.matriculas[linea - 1]->nif, pos))) {
|
||||||
|
insertarAlumno(grupo, listaMatriculas.matriculas[linea-1], correo);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "NO se ha podido añadir al alumno." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarAlumno(tAlumno& alumno) {
|
||||||
|
cout << right << setw(25) << alumno.puntero->apellido << setw(20) << alumno.correo << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertarAlumno(tGrupo& grupo, tMatricula* matricula, string& correo) {
|
||||||
|
//grupo.alumnos[grupo.cont].puntero = new tMatricula;
|
||||||
|
grupo.alumnos[grupo.cont].puntero = matricula;
|
||||||
|
grupo.alumnos[grupo.cont].correo = correo;
|
||||||
|
grupo.cont++;
|
||||||
|
cout << "Alumno añadido correctamente al grupo." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool buscarAlumno(tGrupo& grupo, string& nif, int& pos) {
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
while (!encontrado && pos < grupo.cont) {
|
||||||
|
if (grupo.alumnos[pos].puntero->nif == nif) {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
|
||||||
|
void eliminarAlumno(tGrupo& grupo, string& nif) {
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
buscarAlumno(grupo, nif, pos);
|
||||||
|
for (int i = pos; i < grupo.cont; i++){
|
||||||
|
grupo.alumnos[i] = grupo.alumnos[i + 1];
|
||||||
|
}
|
||||||
|
grupo.cont--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mostrarGrupo(tGrupo& grupo) {
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
while (pos < grupo.cont) {
|
||||||
|
cout << right << setw(2) << pos+1 << ".";
|
||||||
|
mostrarAlumno(grupo.alumnos[pos]);
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void liberar(tGrupo& grupo) {
|
||||||
|
// for (int i = 0; i < grupo.cont; i++) {
|
||||||
|
// delete grupo.alumnos[i].puntero;
|
||||||
|
// }
|
||||||
|
delete[] grupo.alumnos;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
#ifndef _GRUPOS
|
||||||
|
#define _GRUPOS
|
||||||
|
|
||||||
|
#include "listaMatriculas.h"
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_ALUMNOS = 10;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tAlumno {
|
||||||
|
tMatricula *puntero;
|
||||||
|
std::string correo;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tGrupo {
|
||||||
|
tAlumno *alumnos;
|
||||||
|
std::string id;
|
||||||
|
int aula;
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
void nuevo(tGrupo& grupo, std::string& id, int& aula);
|
||||||
|
void leer(tListaMatriculas& listaMatriculas, tGrupo& grupo);
|
||||||
|
void mostrarAlumno(tAlumno& alumno);
|
||||||
|
void insertarAlumno(tGrupo& grupo, tMatricula* matricula, std::string& correo);
|
||||||
|
bool buscarAlumno(tGrupo& grupo, std::string& nif, int& pos);
|
||||||
|
void eliminarAlumno(tGrupo& grupo, std::string& nif);
|
||||||
|
void mostrarGrupo(tGrupo& grupo);
|
||||||
|
void liberar(tGrupo& grupo);
|
||||||
|
|
||||||
|
#endif // !_GRUPOS
|
||||||
|
|
Binary file not shown.
@ -0,0 +1,23 @@
|
|||||||
|
#include "listaAsignaturas.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
bool cargarAsignaturas(tListaAsignaturas& lista, std::ifstream& archivo) {
|
||||||
|
bool carga = false;
|
||||||
|
|
||||||
|
//archivo >> lista.cont;
|
||||||
|
insertarAsignatura(lista, archivo);
|
||||||
|
if (!archivo.fail()) {
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertarAsignatura(tListaAsignaturas& lista, std::ifstream& archivo) {
|
||||||
|
for (int i = 0; i < lista.cont; i++) {
|
||||||
|
archivo >> lista.asignatura[i].codigo;
|
||||||
|
archivo.ignore();
|
||||||
|
getline(archivo, lista.asignatura[i].nombre);
|
||||||
|
archivo >> lista.asignatura[i].creditos;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
#ifndef _LISTAASIGNATURAS
|
||||||
|
#define _LISTAASIGNATURAS
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_ASIGNATURAS = 30;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tAsignatura {
|
||||||
|
std::string codigo, nombre;
|
||||||
|
int creditos;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tListaAsignaturas{ //NO ORDENADA
|
||||||
|
tAsignatura asignatura[MAX_ASIGNATURAS];
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
bool cargarAsignaturas(tListaAsignaturas& lista, std::ifstream& archivo); //matriculas.txt
|
||||||
|
void insertarAsignatura(tListaAsignaturas& lista, std::ifstream& archivo);
|
||||||
|
|
||||||
|
|
||||||
|
#endif // !_LISTAASIGNATURAS
|
@ -0,0 +1,123 @@
|
|||||||
|
#include "listaMatriculas.h"
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
//Funciones auxiliares:
|
||||||
|
bool buscar(tListaMatriculas& lista, tMatricula& aux, int& ini, int& fin, int& pos); //Búsqueda Recursiva Binaria.
|
||||||
|
void iniciar(tMatricula& matricula, tMatricula& aux);
|
||||||
|
|
||||||
|
bool cargarMatriculas(tListaMatriculas& lista) {
|
||||||
|
bool carga = false;
|
||||||
|
ifstream archivo;
|
||||||
|
tMatricula aux;
|
||||||
|
int contAUX = 0;
|
||||||
|
|
||||||
|
lista.cont = 0;
|
||||||
|
lista.matriculas[lista.cont] = new tMatricula;
|
||||||
|
|
||||||
|
archivo.open("matriculas.txt");
|
||||||
|
if (!archivo.is_open()) {
|
||||||
|
cout << "Error al cargar las matriculas." << endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
archivo >> contAUX;
|
||||||
|
while(!archivo.fail() && lista.cont < contAUX) {
|
||||||
|
archivo.ignore();
|
||||||
|
getline(archivo, aux.apellido);
|
||||||
|
archivo >> aux.nombre;
|
||||||
|
archivo >> aux.nif;
|
||||||
|
archivo >> aux.tipo;
|
||||||
|
archivo >> aux.asignaturas.cont;
|
||||||
|
cargarAsignaturas(aux.asignaturas, archivo);
|
||||||
|
|
||||||
|
aux.coste = 0;
|
||||||
|
insertarMatricula(lista, aux);
|
||||||
|
}
|
||||||
|
carga = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return carga;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool insertarMatricula(tListaMatriculas& lista, tMatricula& aux) {
|
||||||
|
bool insertado = false;
|
||||||
|
int pos = 0, ini = 0, fin = lista.cont - 1; //¡OJO! "fin" tiene que ser igual a "lista.cont - 1", si no, cuando hace la búsqueda, intenta comparar con la posición "lista.cont", la cual no está inicializada y da error.
|
||||||
|
|
||||||
|
if (buscar(lista, aux, ini, fin, pos)) {
|
||||||
|
iniciar(*lista.matriculas[pos], aux);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = lista.cont; i > pos; i--) {
|
||||||
|
lista.matriculas[i] = lista.matriculas[i - 1];
|
||||||
|
}
|
||||||
|
lista.matriculas[pos] = new tMatricula;
|
||||||
|
iniciar(*lista.matriculas[pos], aux);
|
||||||
|
lista.cont++;
|
||||||
|
insertado = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return insertado;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void iniciar(tMatricula& matricula, tMatricula& aux) {
|
||||||
|
matricula.apellido = aux.apellido;
|
||||||
|
matricula.nombre = aux.nombre;
|
||||||
|
matricula.nif = aux.nif;
|
||||||
|
matricula.coste = aux.coste;
|
||||||
|
matricula.tipo = aux.tipo;
|
||||||
|
matricula.asignaturas.cont = aux.asignaturas.cont;
|
||||||
|
for (int i = 0; i < aux.asignaturas.cont; i++) {
|
||||||
|
matricula.asignaturas.asignatura[i] = aux.asignaturas.asignatura[i];
|
||||||
|
matricula.coste += (matricula.asignaturas.asignatura[i].creditos * 26.50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
bool buscar(tListaMatriculas& lista, tMatricula& aux, int& ini, int& fin, int& pos) {
|
||||||
|
bool encontrado = false;
|
||||||
|
|
||||||
|
if (ini <= fin) {
|
||||||
|
pos = (ini + fin) / 2;
|
||||||
|
if (aux.apellido < lista.matriculas[pos]->apellido) {
|
||||||
|
fin = pos - 1;
|
||||||
|
encontrado = buscar(lista, aux, ini, fin, pos);
|
||||||
|
}
|
||||||
|
else if(lista.matriculas[pos]->apellido < aux.apellido){
|
||||||
|
ini = pos + 1;
|
||||||
|
encontrado = buscar(lista, aux, ini, fin, pos);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
encontrado = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return encontrado;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
|
||||||
|
void mostrarMatriculas(tListaMatriculas& lista) {
|
||||||
|
cout << "La lista de matriculas cargada es: " << endl;
|
||||||
|
for (int i = 0; i < lista.cont; i++){
|
||||||
|
cout << right << setw(2) << i + 1 << "." << setw(25)
|
||||||
|
<< lista.matriculas[i]->apellido << setw(20)
|
||||||
|
<< lista.matriculas[i]->nif << setw(10)
|
||||||
|
<< "(" << lista.matriculas[i]->asignaturas.cont << ")" << setw(5)
|
||||||
|
<< lista.matriculas[i]->coste << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void seleccionarMatricula(tListaMatriculas& lista, int& linea) {
|
||||||
|
cout << endl;
|
||||||
|
mostrarMatriculas(lista);
|
||||||
|
cout << endl;
|
||||||
|
|
||||||
|
cout << "Introduce el numero de la linea del alumno que se quiere añadir al grupo: ";
|
||||||
|
cin >> linea;
|
||||||
|
}
|
||||||
|
|
||||||
|
void liberar(tListaMatriculas& lista) {
|
||||||
|
for (int i = 0; i < lista.cont; i++){
|
||||||
|
delete lista.matriculas[i];
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef _LISTAMATRICULAS
|
||||||
|
#define _LISTAMATRICULAS
|
||||||
|
|
||||||
|
#include "listaAsignaturas.h"
|
||||||
|
|
||||||
|
//Constantes:
|
||||||
|
const int MAX_MATRICULAS = 50;
|
||||||
|
|
||||||
|
//Tipos:
|
||||||
|
typedef struct tMatricula {
|
||||||
|
std::string apellido, nombre, nif, tipo;
|
||||||
|
tListaAsignaturas asignaturas;
|
||||||
|
double coste;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct tListaMatriculas {
|
||||||
|
tMatricula *matriculas[MAX_MATRICULAS]; //Ordenada por apellidos de menor a mayor.
|
||||||
|
int cont;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Funciones:
|
||||||
|
bool cargarMatriculas(tListaMatriculas& lista); //matriculas.txt
|
||||||
|
bool insertarMatricula(tListaMatriculas& lista, tMatricula& aux); //Inserción ordenada.
|
||||||
|
void mostrarMatriculas(tListaMatriculas& lista);
|
||||||
|
void seleccionarMatricula(tListaMatriculas& lista, int& linea);
|
||||||
|
void liberar(tListaMatriculas& lista);
|
||||||
|
|
||||||
|
#endif // !_LISTAMATRICULAS
|
@ -0,0 +1,77 @@
|
|||||||
|
//Examen Junio 2017 - FP
|
||||||
|
//Grupos E, F y G
|
||||||
|
//Fernando Méndez Torrubiano
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#include "Grupos.h"
|
||||||
|
#include "CheckML.h"
|
||||||
|
|
||||||
|
int menu();
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Detecta posibles fugas de memoria.
|
||||||
|
system("chcp 1252");
|
||||||
|
|
||||||
|
tGrupo grupo;
|
||||||
|
tListaMatriculas lista;
|
||||||
|
tAlumno alumno;
|
||||||
|
|
||||||
|
string id, nif;
|
||||||
|
int opcion, aula;
|
||||||
|
bool ok = false;
|
||||||
|
|
||||||
|
if (cargarMatriculas(lista)) {
|
||||||
|
cout << "Introduce un identificador del grupo: ";
|
||||||
|
cin >> id;
|
||||||
|
cout << "Introduce el aula: ";
|
||||||
|
cin >> aula;
|
||||||
|
|
||||||
|
nuevo(grupo, id, aula);
|
||||||
|
|
||||||
|
do {
|
||||||
|
opcion = menu();
|
||||||
|
switch (opcion){
|
||||||
|
case 1:
|
||||||
|
leer(lista, grupo);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
cout << "NIF del alumno a eliminar: ";
|
||||||
|
cin >> nif;
|
||||||
|
eliminarAlumno(grupo, nif);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
cout << endl;
|
||||||
|
mostrarGrupo(grupo);
|
||||||
|
cout << endl;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (opcion != 0);
|
||||||
|
//
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cout << "Fin del programa." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
liberar(lista);
|
||||||
|
liberar(grupo);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int menu() {
|
||||||
|
int opc = -1;
|
||||||
|
|
||||||
|
cout << "1.-Añadir un alumno al grupo." << endl;
|
||||||
|
cout << "2.-Eliminar un alumno del grupo." << endl;
|
||||||
|
cout << "3.-Mostrar el estado actual del grupo." << endl;
|
||||||
|
cout << "0.-SALIR." << endl;
|
||||||
|
|
||||||
|
do {
|
||||||
|
cout << "Introduzca una opcion: ";
|
||||||
|
cin >> opc;
|
||||||
|
} while (opc < 0 || opc > 3);
|
||||||
|
return opc;
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
3
|
||||||
|
Gomez Alvarez
|
||||||
|
Juan
|
||||||
|
12345678A
|
||||||
|
grado
|
||||||
|
2
|
||||||
|
COD1
|
||||||
|
Fundamentos de la Programacion
|
||||||
|
6
|
||||||
|
COD7
|
||||||
|
Fundamentos de Computadores
|
||||||
|
6
|
||||||
|
Garcia Garcia
|
||||||
|
Luis
|
||||||
|
87654321B
|
||||||
|
grado
|
||||||
|
3
|
||||||
|
COD3
|
||||||
|
Matematica Discreta y logica Matematica
|
||||||
|
6
|
||||||
|
COD4
|
||||||
|
Fundamentos de Electricidad y Electronica
|
||||||
|
6
|
||||||
|
COD8
|
||||||
|
Metodos Matematicos de la Ing
|
||||||
|
6
|
||||||
|
Martin Gonzalez
|
||||||
|
Carmen
|
||||||
|
87654321C
|
||||||
|
grado
|
||||||
|
2
|
||||||
|
COD7
|
||||||
|
Fundamentos de Computadores
|
||||||
|
6
|
||||||
|
COD1
|
||||||
|
Fundamentos de la Programacion
|
||||||
|
6
|
Loading…
Reference in New Issue
Block a user