Add files via upload

This commit is contained in:
Fernando Méndez 2019-06-20 12:55:38 +02:00 committed by GitHub
parent a62863ced0
commit b753c15873
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 1020 additions and 0 deletions

View File

@ -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;
}

View 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

View File

@ -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;
}

View File

@ -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

View File

@ -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];
}
}

View File

@ -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

View File

@ -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

View 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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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];
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View 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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}
}

View File

@ -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

View File

@ -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];
}
}

View File

@ -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

View File

@ -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;
}

View File

@ -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