From 3291d11748e3c8f6407e99ff8304dacbd52a249b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20M=C3=A9ndez?= Date: Thu, 20 Jun 2024 21:55:13 +0200 Subject: [PATCH] Corregida errata. --- ArraysDinamicos.cpp | 397 ++++++++++++++++++++++---------------------- 1 file changed, 198 insertions(+), 199 deletions(-) diff --git a/ArraysDinamicos.cpp b/ArraysDinamicos.cpp index 42eea74..ed0c385 100644 --- a/ArraysDinamicos.cpp +++ b/ArraysDinamicos.cpp @@ -1,200 +1,199 @@ -/* - Fernando Méndez | @HumperCobra - https://fernmend.ddns.net - All rights reserved | 23/11/2019 -*/ - -#include -#include -#include -//#include "checkML.h" -/********************ARCHIVO checkML.h********************/ -#ifdef _DEBUG -#define _CRTDBG_MAP_ALLOC - -#include -#include - -#ifndef DBG_NEW -#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ ) -#define new DBG_NEW - -#endif -#endif -/*********************************************************/ -using namespace std; - -//Constantes: -const int MAX = 15; - -//Tipos: -typedef struct tPersona { - string name, secondName; - string id; -}; - -typedef struct tListaPersonas { - tPersona** persona; - int capacidad; - int contador; -}; - -//Funciones: -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 ampliar(tListaPersonas&); //Redimensiona la lista en caso de que el contador haya alcanzado la capacidad máxima actual. - - -int main() { - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Detecta posibles fugas de memoria. - - tListaPersonas lista; - iniciar(lista); - - srand(time(NULL)); - - int i = 1; - string pos; - - cout << setw(5) << "NOMBRE" << setw(15) << "APELLIDO" << setw(15) << "ID" << endl; - cout << setfill('-') << setw(50) << "\n" << setfill(char(0)); - while (lista.contador < MAX){ - if (lista.contador == lista.capacidad) { - ampliar(lista); - } - else { - pos = to_string(i); - lista.persona[lista.contador] = new tPersona; //Reserva memoria para una "tPersona". - lista.persona[lista.contador]->name = "Persona" + pos; - lista.persona[lista.contador]->secondName = "Apellido" + pos; - pos += rand(); - 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; - lista.contador++; - i++; - } - } - cout << setfill('-') << setw(50) << "\n" << setfill(char(0)); - system("PAUSE"); - - liberar(lista); - return 0; -} - -void iniciar(tListaPersonas& lista) { - lista.capacidad = 3; - lista.contador = 0; - 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) { - lista.capacidad *= 2; - tPersona** aux = new tPersona*[lista.capacidad]; - - for (int i = 0; i < lista.contador; i++){ - aux[i] = lista.persona[i]; - } - - delete[] lista.persona; - lista.persona = aux; -} - -void liberar(tListaPersonas& lista) { - for (int i = 0; i < lista.contador; i++){ - delete lista.persona[i]; - } - - delete[] lista.persona; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/* - Fernando Méndez | @HumperCobra - https://fernmend.ddns.net - All rights reserved | 23/11/2019 +/* + Fernando Méndez | @HumperCobra + https://fernmend.ddns.net + All rights reserved | 23/11/2019 +*/ + +#include +#include +#include +//#include "checkML.h" +/********************ARCHIVO checkML.h********************/ +#ifdef _DEBUG +#define _CRTDBG_MAP_ALLOC + +#include +#include + +#ifndef DBG_NEW +#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ ) +#define new DBG_NEW + +#endif +#endif +/*********************************************************/ +using namespace std; + +//Constantes: +const int MAX = 15; + +//Tipos: +typedef struct tPersona { + string name, secondName; + string id; +}; + +typedef struct tListaPersonas { + tPersona** persona; + int capacidad; + int contador; +}; + +//Funciones: +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 ampliar(tListaPersonas&); //Redimensiona la lista en caso de que el contador haya alcanzado la capacidad máxima actual. + + +int main() { + _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Detecta posibles fugas de memoria. + + tListaPersonas lista; + iniciar(lista); + + srand(time(NULL)); + + int i = 1; + string pos; + + cout << setw(5) << "NOMBRE" << setw(15) << "APELLIDO" << setw(15) << "ID" << endl; + cout << setfill('-') << setw(50) << "\n" << setfill(char(0)); + while (lista.contador < MAX){ + if (lista.contador == lista.capacidad) { + ampliar(lista); + } + + pos = to_string(i); + lista.persona[lista.contador] = new tPersona; //Reserva memoria para una "tPersona". + lista.persona[lista.contador]->name = "Persona" + pos; + lista.persona[lista.contador]->secondName = "Apellido" + pos; + pos += rand(); + 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; + lista.contador++; + i++; + } + cout << setfill('-') << setw(50) << "\n" << setfill(char(0)); + system("PAUSE"); + + liberar(lista); + return 0; +} + +void iniciar(tListaPersonas& lista) { + lista.capacidad = 3; + lista.contador = 0; + 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) { + lista.capacidad *= 2; + tPersona** aux = new tPersona*[lista.capacidad]; + + for (int i = 0; i < lista.contador; i++){ + aux[i] = lista.persona[i]; + } + + delete[] lista.persona; + lista.persona = aux; +} + +void liberar(tListaPersonas& lista) { + for (int i = 0; i < lista.contador; i++){ + delete lista.persona[i]; + } + + delete[] lista.persona; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/* + Fernando Méndez | @HumperCobra + https://fernmend.ddns.net + All rights reserved | 23/11/2019 */ \ No newline at end of file