elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Punteros en c++ en: 27 Mayo 2021, 17:20 pm
Hola, ya veo que te dieron una explicación muy detallada arriba, tocando temas técnicos y tal. Pero trataré de enseñarte los punteros de esta forma... Un puntero no guarda datos específicamente, sino, direcciones de memoria.

Ejemplo:

Tú tienes una casa y la dirección de la casa en un papel, así que el puntero vendría siendo ese papel. Este no tiene la casa pero si su dirección.

Esto te podría servir para apuntar una variable en constante cambio, solo deberías asignarle la dirección al puntero una sola vez y te ahorrarías el tener que reasignarle el valor a cada rato (en caso de que sea una variable).

Siguiendo el ejemplo de arriba:

Resulta que a la casa le estas cambiando el color cada cierto tiempo, ya que tienes la dirección puedes ir y ver esos cambios sin ningún problema o paso de por medio.

En cambio, si hubieras guardado la casa en una variable, al revisarla te darías cuenta de que la casa no ha cambiado de color (cuando se supone que la original sí) así que te tocaría volver a guardar la casa en esa variable para poder apreciar el cambio.
2  Programación / Programación C/C++ / Re: Duda con la función atoi() en: 9 Mayo 2021, 22:54 pm
Es cierto, funciona si la en la cadena hay solo números. Si realmente quieres obtener los números aunque hayan caracteres deberías hacer una función que limpie esa cadena de todo lo que no sea un número, desconozco si hay una función que haga esto.
3  Programación / Programación C/C++ / Re: Necesito ayuda para encontrar el problema en mi código. en: 18 Febrero 2021, 22:59 pm
Ya pillé el error, gracias! Debía de inicializar las variables o bueno, punteros front y back en NULL, por eso obtenía el error.

Al final el código me quedó así:

Código
  1. /*
  2.     Hacer un programa que guarde datos de clientes de un banco, los almacene en cola, y
  3.     por ultimo muestre los clientes en el orden correcto.
  4. */
  5.  
  6. #include <iostream>
  7. #include <conio.h>
  8.  
  9. #define DEFAULT_BALANCE 500
  10.  
  11. /*******************************************************************************************************************************/
  12.  
  13. struct Account
  14. {
  15. double balance;
  16. char name[60];
  17. int id, age;
  18. };
  19.  
  20. struct Node
  21. {
  22. Account * account;
  23. Node * next;
  24. };
  25.  
  26. /*******************************************************************************************************************************/
  27.  
  28. void insert_into_queue(Node *&, Node *&, Account *);
  29. void create_account(Node *&, Node *&, int&);
  30. void delete_queue(Node *&, Node *&, int&);
  31. void show_accounts(Node *, Node *);
  32. bool empty(Node *);
  33. int menu();
  34.  
  35. /*******************************************************************************************************************************/
  36.  
  37. int main()
  38. {
  39. Node * front = NULL, * back = NULL;
  40. int option, amount = 0;
  41.  
  42. do
  43. {
  44. option = menu();
  45.  
  46. switch (option)
  47. {
  48. case 1: create_account(front, back, amount); break;
  49. case 2: show_accounts(front, back); break;
  50. case 3: delete_queue(front, back, amount); break;
  51. case 4: exit(0);
  52.  
  53. default: break;
  54. }
  55. }  while (option != 4);
  56.  
  57. return 0;
  58. }
  59.  
  60. /*******************************************************************************************************************************/
  61.  
  62. int menu()
  63. {
  64. int option;
  65.  
  66. do
  67. {
  68. system("cls");
  69.  
  70. std::cout << "\n\t> 1. Registrar una cuenta.";
  71. std::cout << "\n\t> 2. Mostrar cuentas registradas.";
  72. std::cout << "\n\t> 3. Eliminar las cuentas registradas.";
  73. std::cout << "\n\t> 4. Salir del programa.";
  74.  
  75. std::cout << "\n\n\t> Opcion: ";
  76. std::cin >> option;
  77. std::cin.ignore(256, '\n');
  78. } while (option < 1 || option > 4);
  79.  
  80. return option;
  81. }
  82. /*******************************************************************************************************************************/
  83.  
  84. bool empty(Node * front)
  85. {
  86. return (front == NULL) ? true : false;
  87. }
  88.  
  89. /*******************************************************************************************************************************/
  90.  
  91. void create_account(Node *& front, Node *& back, int& amount)
  92. {
  93. system("cls");
  94.  
  95. Account * account = new Account();
  96.  
  97. std::cout << "\n\t> Nombre Apellido: "; std::cin.getline(account->name, 60);
  98. std::cout << "\t> Edad: "; std::cin >> account->age;
  99. std::cin.ignore(256, '\n');
  100.  
  101. account->balance = DEFAULT_BALANCE;
  102. account->id = amount;
  103.  
  104. amount++;
  105.  
  106. insert_into_queue(front, back, account);
  107. }
  108.  
  109. /*******************************************************************************************************************************/
  110.  
  111. void insert_into_queue(Node *& front, Node *& back, Account * account)
  112. {
  113. Node * new_node = new Node();
  114.  
  115. new_node->account = account;
  116. new_node->next = NULL;
  117.  
  118. if (empty(front))
  119. front = new_node;
  120. else
  121. back->next = new_node;
  122.  
  123. back = new_node;
  124.  
  125. std::cout << "\n\t> Cuenta (identificador: " << account->id << ") registrada correctamente.";
  126. _getch();
  127. }
  128.  
  129. /*******************************************************************************************************************************/
  130.  
  131. void show_accounts(Node * front, Node * back)
  132. {
  133. if (!empty(front))
  134. {
  135. while (!empty(front))
  136. {
  137. system("cls");
  138. Account * account = front->account;
  139.  
  140. std::cout << "\n\t> Cuenta numero " << account->id << ".\n";
  141.  
  142. std::cout << "\n\t> Nombre Apellido: " << account->name << ".";
  143. std::cout << "\n\t> Edad: " << account->age << ".";
  144. std::cout << "\n\t> Balance: " << account->balance << ".";
  145.  
  146. if (front == back)
  147. {
  148. std::cout << "\n\n\t> Ultima cuenta, presione una tecla para volver al menu.";
  149. break;
  150. }
  151. else
  152. front = front->next;
  153.  
  154. std::cout << "\n\n\t> Presione una tecla para ver la siguiente cuenta.";
  155. _getch();
  156. }
  157. }
  158. else
  159. std::cout << "\n\t> No hay cuentas registradas!";
  160.  
  161. _getch();
  162. }
  163.  
  164. /*******************************************************************************************************************************/
  165.  
  166. void delete_queue(Node *& front, Node *& back, int& amount)
  167. {
  168. amount = 0;
  169.  
  170. if (!empty(front))
  171. {
  172. while (!empty(front))
  173. {
  174. Node * temp = front;
  175.  
  176. if (front == back)
  177. {
  178. front = NULL;
  179. back = NULL;
  180. }
  181. else
  182. front = front->next;
  183.  
  184. delete temp;
  185. }
  186.  
  187. std::cout << "\n\t> Cuentas eliminadas correctamente.";
  188. }
  189. else
  190. std::cout << "\n\t> No hay cuentas registradas!";
  191.  
  192. _getch();
  193. }
  194.  
4  Programación / Programación C/C++ / Necesito ayuda para encontrar el problema en mi código. en: 18 Febrero 2021, 15:32 pm
Buenos días/tardes/noches. Hago este post como último recurso para intentar encontrar un "bug" en mi código, el cual no deja que el programa se ejecute correctamente.

EXPLICACIÓN: Como dice el ejercicio en el código, necesito hacer un programa que almacene clientes de un banco en una cola para posteriormente mostrarlos de forma ordenada, en teoría ya tengo el código hecho pero, por alguna razón que desconozco al momento de ejecutar el programa este deja de funcionar...

Por favor, si no es molestia ayúdenme. De paso acepto consejos para mejorar y/o optimizar mi código, gracias!

CÓDIGO:

Código
  1. /*
  2.     Hacer un programa que guarde datos de clientes de un banco, los almacene en cola, y
  3.     por ultimo muestre los clientes en el orden correcto.
  4. */
  5.  
  6. #include <iostream>
  7. #include <conio.h>
  8.  
  9. #define DEFAULT_BALANCE 500
  10.  
  11. /*******************************************************************************************************************************/
  12.  
  13. struct Account
  14. {
  15. double balance;
  16. char name[60];
  17. int id, age;
  18. };
  19.  
  20. struct Node
  21. {
  22. Account account;
  23. Node * next;
  24. };
  25.  
  26. /*******************************************************************************************************************************/
  27.  
  28. void insert_into_queue(Node *&, Node *&, Account);
  29. void create_account(Node *&, Node *&, int&);
  30. void delete_queue(Node *&, Node *&, int&);
  31. void show_accounts(Node *, Node *);
  32. bool empty(Node * front);
  33. int menu();
  34.  
  35. /*******************************************************************************************************************************/
  36.  
  37. int main()
  38. {
  39. Node * front, * back;
  40. int option, amount = 0;
  41.  
  42. do
  43. {
  44. option = menu();
  45.  
  46. switch (option)
  47. {
  48. case 1: create_account(front, back, amount);
  49. case 2: show_accounts(front, back);
  50. case 3: delete_queue(front, back, amount);
  51. case 4: exit(0);
  52.  
  53. default: break;
  54. }
  55. }  while (option != 4);
  56.  
  57. return 0;
  58. }
  59.  
  60. /*******************************************************************************************************************************/
  61.  
  62. int menu()
  63. {
  64. int option;
  65.  
  66. do
  67. {
  68. system("cls");
  69.  
  70. std::cout << "\n\t> 1. Registrar una cuenta.";
  71. std::cout << "\n\t> 2. Mostrar cuentas registradas.";
  72. std::cout << "\n\t> 3. Eliminar las cuentas registradas.";
  73. std::cout << "\n\t> 4. Salir del programa.";
  74.  
  75. std::cout << "\n\n\t> Opcion: ";
  76. std::cin >> option;
  77. std::cin.ignore(256, '\n');
  78. } while (option < 1 || option > 4);
  79.  
  80. return option;
  81. }
  82. /*******************************************************************************************************************************/
  83.  
  84. bool empty(Node * front)
  85. {
  86. return (front == NULL) ? true : false;
  87. }
  88.  
  89. /*******************************************************************************************************************************/
  90.  
  91. void create_account(Node *& front, Node *& back, int& amount)
  92. {
  93. system("cls");
  94.  
  95. Account account;
  96.  
  97. std::cout << "\n\t> Nombre Apellido: "; std::cin.getline(account.name, 60);
  98. std::cout << "\t> Edad: "; std::cin >> account.age;
  99. std::cin.ignore(256, '\n');
  100.  
  101. account.balance = DEFAULT_BALANCE;
  102. account.id = amount;
  103.  
  104. amount++;
  105. insert_into_queue(front, back, account);
  106. }
  107.  
  108. /*******************************************************************************************************************************/
  109.  
  110. void insert_into_queue(Node *& front, Node *& back, Account account)
  111. {
  112. Node * new_node = new Node();
  113.  
  114. new_node->account = account
  115. new_node->next = NULL;
  116.  
  117. if (empty(front))
  118. front = new_node;
  119. else
  120. back->next = new_node;
  121.  
  122. back = new_node;
  123.  
  124. std::cout << "\n\t> Cuenta (identificador: " << account.id << ") registrada correctamente.";
  125. _getch();
  126. }
  127.  
  128. /*******************************************************************************************************************************/
  129.  
  130. void show_accounts(Node * front, Node * back)
  131. {
  132. system("cls");
  133.  
  134. if (!empty(front))
  135. {
  136. while (!empty(front))
  137. {
  138.  
  139. Account account = front->account;
  140.  
  141. std::cout << "\n\t> Cuenta numero " << account.id << ".\n";
  142.  
  143. std::cout << "\n\t> Nombre Apellido: " << account.name << ".";
  144. std::cout << "\n\t> Edad: " << account.age << ".";
  145. std::cout << "\n\t> Balance: " << account.balance << ".";
  146.  
  147. if (front == back)
  148. break;
  149. else
  150. front = front->next;
  151.  
  152. std::cout << "\n\t> Presione una tecla para ver la siguiente cuenta.";
  153. }
  154. }
  155. else
  156. std::cout << "\n\t> No hay cuentas registradas!";
  157.  
  158. _getch();
  159. }
  160.  
  161. /*******************************************************************************************************************************/
  162.  
  163. void delete_queue(Node *& front, Node *& back, int& amount)
  164. {
  165. amount = 0;
  166.  
  167. if (!empty(front))
  168. {
  169. while (!empty(front))
  170. {
  171. Node * temp = front;
  172.  
  173. if (front == back)
  174. {
  175. front = NULL;
  176. back = NULL;
  177. }
  178. else
  179. front = front->next;
  180.  
  181. delete temp;
  182. }
  183.  
  184. std::cout << "\n\t> Cuentas eliminadas correctamente.";
  185. }
  186. else
  187. std::cout << "\n\t> No hay cuentas registradas!";
  188.  
  189. _getch();
  190. }
5  Programación / Programación C/C++ / [?] Crear un terminal mediante código. en: 29 Diciembre 2020, 18:37 pm
Hola buenas, quizás esto no sea lo más formal pero tengo una duda...

Estoy intentando hacer un programa con sockets (librería winsock2, un servidor y un cliente) en el cual el cliente se conecte al servidor y desde el servidor yo pueda acceder al terminal del cliente, el tema es que no tengo la más mínima idea y no tengo un punto desde donde empezar.. ¿Qué formas hay de realizar esto? O qué me aconsejarían?

Espero haber explicado bien lo que quiero transmitir, gracias y disculpen las molestias.  :P

EDIT: Es en c++.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines