Corregida errata.

This commit is contained in:
Fernando Méndez 2024-06-20 21:55:13 +02:00
parent 9abd8fa8f0
commit 3291d11748

View File

@ -1,200 +1,199 @@
/* /*
Fernando Méndez | @HumperCobra Fernando Méndez | @HumperCobra
https://fernmend.ddns.net https://fernmend.ddns.net
All rights reserved | 23/11/2019 All rights reserved | 23/11/2019
*/ */
#include <iostream> #include <iostream>
#include <string> #include <string>
#include <iomanip> #include <iomanip>
//#include "checkML.h" //#include "checkML.h"
/********************ARCHIVO checkML.h********************/ /********************ARCHIVO checkML.h********************/
#ifdef _DEBUG #ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC #define _CRTDBG_MAP_ALLOC
#include <stdlib.h> #include <stdlib.h>
#include <crtdbg.h> #include <crtdbg.h>
#ifndef DBG_NEW #ifndef DBG_NEW
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ ) #define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define new DBG_NEW #define new DBG_NEW
#endif #endif
#endif #endif
/*********************************************************/ /*********************************************************/
using namespace std; using namespace std;
//Constantes: //Constantes:
const int MAX = 15; const int MAX = 15;
//Tipos: //Tipos:
typedef struct tPersona { typedef struct tPersona {
string name, secondName; string name, secondName;
string id; string id;
}; };
typedef struct tListaPersonas { typedef struct tListaPersonas {
tPersona** persona; tPersona** persona;
int capacidad; int capacidad;
int contador; int contador;
}; };
//Funciones: //Funciones:
void iniciar(tListaPersonas&); //Inicia la lista con capacidad = 3 y contador = 0. void iniciar(tListaPersonas&); //Inicia la lista con capacidad = 3 y contador = 0.
void liberar(tListaPersonas&); //Libera la memoria dinámica. Se debe llamar antes de finalizar el programa para evitar fugas. void liberar(tListaPersonas&); //Libera la memoria dinámica. Se debe llamar antes de finalizar el programa para evitar fugas.
void ampliar(tListaPersonas&); //Redimensiona la lista en caso de que el contador haya alcanzado la capacidad máxima actual. void ampliar(tListaPersonas&); //Redimensiona la lista en caso de que el contador haya alcanzado la capacidad máxima actual.
int main() { int main() {
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Detecta posibles fugas de memoria. _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Detecta posibles fugas de memoria.
tListaPersonas lista; tListaPersonas lista;
iniciar(lista); iniciar(lista);
srand(time(NULL)); srand(time(NULL));
int i = 1; int i = 1;
string pos; string pos;
cout << setw(5) << "NOMBRE" << setw(15) << "APELLIDO" << setw(15) << "ID" << endl; cout << setw(5) << "NOMBRE" << setw(15) << "APELLIDO" << setw(15) << "ID" << endl;
cout << setfill('-') << setw(50) << "\n" << setfill(char(0)); cout << setfill('-') << setw(50) << "\n" << setfill(char(0));
while (lista.contador < MAX){ while (lista.contador < MAX){
if (lista.contador == lista.capacidad) { if (lista.contador == lista.capacidad) {
ampliar(lista); ampliar(lista);
} }
else {
pos = to_string(i); pos = to_string(i);
lista.persona[lista.contador] = new tPersona; //Reserva memoria para una "tPersona". lista.persona[lista.contador] = new tPersona; //Reserva memoria para una "tPersona".
lista.persona[lista.contador]->name = "Persona" + pos; lista.persona[lista.contador]->name = "Persona" + pos;
lista.persona[lista.contador]->secondName = "Apellido" + pos; lista.persona[lista.contador]->secondName = "Apellido" + pos;
pos += rand(); pos += rand();
lista.persona[lista.contador]->id = pos; lista.persona[lista.contador]->id = pos;
cout << setw(5) << lista.persona[lista.contador]->name << setw(15) << lista.persona[lista.contador]->secondName << setw(15) << lista.persona[lista.contador]->id << endl; cout << setw(5) << lista.persona[lista.contador]->name << setw(15) << lista.persona[lista.contador]->secondName << setw(15) << lista.persona[lista.contador]->id << endl;
lista.contador++; lista.contador++;
i++; i++;
} }
} cout << setfill('-') << setw(50) << "\n" << setfill(char(0));
cout << setfill('-') << setw(50) << "\n" << setfill(char(0)); system("PAUSE");
system("PAUSE");
liberar(lista);
liberar(lista); return 0;
return 0; }
}
void iniciar(tListaPersonas& lista) {
void iniciar(tListaPersonas& lista) { lista.capacidad = 3;
lista.capacidad = 3; lista.contador = 0;
lista.contador = 0; lista.persona = new tPersona*[lista.capacidad]; //Crea una lista de punteros (que en un futuro, apuntarán cada uno a "tPersona").
lista.persona = new tPersona*[lista.capacidad]; //Crea una lista de punteros (que en un futuro, apuntarán cada uno a "tPersona"). }
}
void ampliar(tListaPersonas& lista) {
void ampliar(tListaPersonas& lista) { lista.capacidad *= 2;
lista.capacidad *= 2; tPersona** aux = new tPersona*[lista.capacidad];
tPersona** aux = new tPersona*[lista.capacidad];
for (int i = 0; i < lista.contador; i++){
for (int i = 0; i < lista.contador; i++){ aux[i] = lista.persona[i];
aux[i] = lista.persona[i]; }
}
delete[] lista.persona;
delete[] lista.persona; lista.persona = aux;
lista.persona = aux; }
}
void liberar(tListaPersonas& lista) {
void liberar(tListaPersonas& lista) { for (int i = 0; i < lista.contador; i++){
for (int i = 0; i < lista.contador; i++){ delete lista.persona[i];
delete lista.persona[i]; }
}
delete[] lista.persona;
delete[] lista.persona; }
}
/*
/* Fernando Méndez | @HumperCobra
Fernando Méndez | @HumperCobra https://fernmend.ddns.net
https://fernmend.ddns.net All rights reserved | 23/11/2019
All rights reserved | 23/11/2019
*/ */