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