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