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
30 changed files with 1020 additions and 0 deletions

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