Add files via upload
This commit is contained in:
@ -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<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;
|
||||
}
|
@ -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;
|
||||
}
|
Reference in New Issue
Block a user