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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 47
71  Programación / Bases de Datos / Re: Consulta SQL en: 29 Abril 2020, 20:44 pm
Esto te debe funcionar con MySQL, PostgreSQL

Código
  1. SELECT ABS(
  2.    (SELECT COUNT(nombre) FROM NOMBRE_TABLA WHERE CHAR_LENGTH(nombre) > 0) -
  3.    (SELECT COUNT(apellido) FROM NOMBRE_TABLA WHERE CHAR_LENGTH(apellido) > 0)
  4. )
  5. AS Diferencia

Saludos
72  Programación / Programación C/C++ / Re: Problema con stringcopy y arreglo de estructuras en: 22 Abril 2020, 03:05 am
Si lo que estas intentando hacer es una copia de la estructura t_persona a la variable aux, te recomendaria usar memcpy() en lugar de strcpy().

https://practice.geeksforgeeks.org/problems/difference-between-strcpy-and-memcpy
73  Programación / Bases de Datos / Re: ¿alguna funcion similar a las secciones criticas de windows pero en sql? en: 16 Abril 2020, 17:25 pm
Has intentado usar Transactions/Isolation Levels?, creo que con eso puedes hacer lo que quieres
74  Programación / Programación C/C++ / Re: Problemas con mostrar un registro en: 10 Abril 2020, 04:32 am
Tu declaracion de "pun" es la siguiente:

Código
  1. struct notas{
  2. char nom[50];
  3. char apel[50];
  4. char cod[50];
  5. float n1, n2;
  6. float defi;
  7. }alu, *pun=&alu;

Significa que "pun" es simplemente un puntero a una variable de tipo estructura "notas". Luego mas adelante haces algo como:

Código
  1. (pun+i)->cod

Significa que estas accediendo a una posicion en memoria de la que no tienes control (intentas acceder mas alla de los limites de tu variable con pun+i). Cuando accedes a una zona de memoria no reservada, el contenido es incierto ya que tu aplicacion o cualquier otra puede usarla. Una posible solucion es declarar "pun" como un array de estructuras, o mejor aun, como un contenedor dinamico (vector, list).

He modificado solamente la declaracion y uso de la variable "pun" para que tengas una idea:

Código
  1. #include <string.h>
  2. #include <iostream>
  3. #include <windows.h>
  4. #include <conio.h>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. void gt(int x, int y) {             // -Posicion X y Y en el Programa
  10. HANDLE Manipulador;  //Puntero
  11. COORD Coordenadas; //Coordenadas
  12. Manipulador = GetStdHandle(STD_OUTPUT_HANDLE); //Contenedor del Programa
  13. Coordenadas.X = x; //Posicion en X
  14. Coordenadas.Y = y; //Posicion en Y
  15. SetConsoleCursorPosition(Manipulador, Coordenadas); //Envia el Contenedor y variable para la posicion
  16. }
  17.  
  18. void formu() {
  19. system("cls");
  20. gt(15, 9); cout << "Codigo: ";
  21. gt(15, 11); cout << "Nombres: ";
  22. gt(15, 12); cout << "Apellidos: ";
  23. gt(15, 14); cout << "Nota 1: ";
  24. gt(15, 15); cout << "Nota 2: ";
  25. gt(15, 17); cout << "Su Nota Definitiva es: ";
  26. }
  27.  
  28. struct notas {
  29. char nom[50];
  30. char apel[50];
  31. char cod[50];
  32. float n1, n2;
  33. float defi;
  34. }alu;
  35. vector<notas> pun;
  36.  
  37. void capt();
  38. void list();
  39. void consul();
  40. int ne;
  41.  
  42. int main() {
  43. char op;
  44. do {
  45. system("cls");
  46. gt(20, 10); cout << "MENU REGISTROS";
  47. gt(22, 12); cout << "1. Capturar.";
  48. gt(22, 13); cout << "2. Consultar registros.";
  49. gt(22, 14); cout << "3. Salir.";
  50.  
  51. gt(23, 16); cout << char(167) << "Digite un numero: "; op = _getch();
  52.  
  53. switch (op) {
  54. case '1':
  55. capt();
  56. break;
  57. case '2':
  58. consul();
  59. break;
  60. case '3':
  61. gt(6, 18); cout << "Saliendo...";
  62. Sleep(200);
  63. gt(5, 25); exit(1);
  64. break;
  65. default:
  66. gt(6, 18); cout << "Debe digitar un numero del 1 al 3...";
  67. system("pause");
  68. break;
  69. }
  70. } while (op != '3');
  71. }
  72.  
  73. void capt() {
  74. system("cls");
  75. gt(15, 10); cout << "Digite el Numero de Formularios a agregar: "; cin >> ne;
  76. const int ju = ne;
  77.  
  78. for (int i = 0; i < ju; i++) {
  79. struct notas nota;
  80. formu();
  81. fflush(stdin);
  82. gt(23, 9); cin >> nota.cod;
  83. gt(24, 11); cin >> nota.nom;
  84. gt(26, 12); cin >> nota.apel;
  85. gt(23, 14); cin >> nota.n1;
  86. gt(23, 15); cin >> nota.n2;
  87.  
  88. nota.defi = (nota.n1 + nota.n2) / 2;
  89. gt(38, 17); cout << nota.defi;
  90. pun.push_back(nota);
  91. system("pause");
  92. }
  93. ne = ju;
  94. }
  95.  
  96. void consul() {
  97. char op;
  98. do {
  99. system("cls");
  100. gt(20, 10); cout << "MENU - Consultas";
  101. gt(22, 12); cout << "1. Listar.";
  102. gt(22, 13); cout << "2. Volver al menu anterior";
  103. gt(22, 14); cout << "3. Salir";
  104.  
  105. gt(23, 16); cout << "Digite un numero: "; op = _getch();
  106.  
  107. switch (op) {
  108. case '1':
  109. list();
  110. break;
  111. case '2':
  112. gt(6, 18); cout << "Volviendo...";
  113. Sleep(200);
  114. main();
  115. break;
  116. case '3':
  117. gt(6, 18); cout << "Saliendo...";
  118. Sleep(200);
  119. gt(5, 25); exit(1);
  120. break;
  121. default:
  122. gt(6, 18); cout << "Digite un numero del 1 al 3...";
  123. system("pause");
  124. break;
  125. }
  126. } while (op != '4' || op == '2');
  127. system("pause");
  128. }
  129.  
  130. void list() {
  131. system("cls");
  132. fflush(stdin);
  133. if (pun.empty()) {
  134. gt(15, 10); cout << "No se Encontraron Registros...";
  135. }
  136. else {
  137. gt(16, 8); cout << "--- REGISTROS ---";
  138.  
  139. gt(3, 10); cout << "No.";
  140. gt(7, 10); cout << "Codigo";
  141. gt(17, 10); cout << "Nombre";
  142. gt(33, 10); cout << "Apellido";
  143. gt(47, 10); cout << "Nota 1";
  144. gt(57, 10); cout << "Nota 2";
  145. gt(67, 10); cout << "Definitiva";
  146.  
  147. for (int i = 0; i < ne; i++) {
  148. auto nota = pun.at(i);
  149. gt(3, i + 12); cout << i + 1;
  150. gt(7, i + 12); cout << nota.cod;
  151. gt(17, i + 12); cout << nota.nom;
  152. gt(32, i + 12); cout << nota.apel;
  153. gt(47, i + 12); cout << nota.n1;
  154. gt(57, i + 12); cout << nota.n2;
  155. gt(67, i + 12); cout << nota.defi;
  156. }
  157. system("pause");
  158. }
  159. }

Saludos
75  Programación / Programación C/C++ / Re: Ayuda con ejercicios de C-Style strings en: 9 Abril 2020, 21:30 pm
Hola ThunderCls te agradezco la ayuda pero necesitaba una forma mas simple de resolverlo. Saludos.

Mas simple?! Pero si solo le he añadido dos lineas a tu codigo  :xD
76  Programación / Programación C/C++ / Re: Ayuda con ejercicios de C-Style strings en: 9 Abril 2020, 19:55 pm
Código
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. void pedirDatos();
  7. void mostrarApellido();
  8.  
  9. struct Personas {
  10.    char nombreApellido[30];
  11. }
  12. personas[10];
  13.  
  14. int main(int argc, char * argv[]) {
  15.  
  16.    memset(personas, 0, sizeof(personas) * 10); // usa memset para inicializar la estructura con ceros
  17.    pedirDatos();
  18.    mostrarApellido();
  19.  
  20.    return 0;
  21. }
  22.  
  23. void pedirDatos() {
  24.    for (int i = 0; i < 10; i++) {
  25.        cout << " Ingrese apellido y nombre separado por un espacio: ";
  26.        cin.getline(personas[i].nombreApellido, 30);
  27.    }
  28. }
  29.  
  30. void mostrarApellido() {
  31.  
  32.    int i = 0, k = 0, contador = 0;
  33.    cout << "\n\n Apellidos introducidos: \n\n ";
  34.  
  35.    for (; i < 10; i++)
  36.    {
  37.        char *token = strtok(personas[i].nombreApellido, " "); // usa strtok para dividir la cadena por el espacio y obtener los tokens
  38.        if(token && (token = strtok(nullptr, " ")) != nullptr)
  39.        {
  40.            cout << i + 1 << " - " << token << "\n";
  41.        }
  42.    }
  43. }

Solo he añadido las dos lineas que necesitas basicamente, por otra parte, tu codigo no es el mejor  :-\
Saludos
77  Programación / Programación C/C++ / Re: Funciones por referencia en: 9 Abril 2020, 16:10 pm
Puedes hacer algo como esto, pero ten en cuenta que en C++ no debes usar punteros, no debes usar new (ni delete).

En C++ no se deben usar punteros?, ni new ni delete? Podrias dar algunos de tus motivos para este razonamiento?

Saludos, Soy casi nuevo en este lenguaje y tengo ganas de profundizar el lenguaje.

Mi consejos si lo que te interesa es aprender C++:
- Separa conceptos de C y C++
- Aprende el lenguaje puro, de ser posible versiones modernas (17+)
- Usa la libreria estandar de C++
- Evita siempre que puedas el manejo de arreglos de chars para las cadenas, en C++ tienes std::string la cual es mucho mas segura y facil de usar

Código
  1. #include <iostream>
  2.  
  3. void NombreFuncion(string &str);
  4.  
  5. int main()
  6. {
  7.    std::string dato;
  8.    NombreFuncion(dato);
  9.    cout << dato << endl;
  10. }
  11.  
  12. void NombreFuncion(std::string &dato)
  13. {
  14.    const std::string texto = "resultado";
  15.    dato.assign(texto);
  16. }

Suerte
78  Programación / Bases de Datos / Re: ¿Mayor numero de tablas que hiciste o viste en una BD? en: 8 Abril 2020, 17:21 pm
Aclaro un poco lo que dije antes.

Siempre que los indexes de las tablas puedan estar en memoria (contando con un buen diseño), el rendimiento no se veria afectado de acuerdo al tamaño o a la cantidad de records en la base de datos, evidentemente considerando el diseño de la bd, configuraciones y recursos de hardware, esto para operaciones basicas (insert/update/delete) que no modifican demasiadas filas.
Por otra parte cuando se trabaja con un alto numero de consultas mas complejas que usen o escaneen todos los registros de las tablas, el tiempo de respuesta va a incrementar linealmente de acuerdo al tamaño de la bd.

https://en.wikipedia.org/wiki/Very_large_database#Performance

Esto no quiere decir que no existan tecnicas para mejorar el rendimiento en estos casos, desde mejorar hardware (ram, ssd) hasta opciones de software como configuraciones master/slave, modificar y mejorar los indexes para dichas consultas, partitioning, clustering, etc, pero el punto que hice anteriormente es que si puede haber afectaciones de rendimiento segun el tamaño de una bd en algun determinado momento.

Ningún sistem es tan complejo que reqiera usar 1.000 tablas.
Otra cosa es que el sistema tenga varias bases de datos (de diferentes procesos) y que todas ellas formen parte de la misma aplicación y sumadas alcancen o superen dicha cantidad.

Acaso importa si el sistema usa las 1000 tablas en la misma bd o en bd repartidas? De cualquier manera las estaria usando y todas serian parte de su funcionamiento. El caso creo yo es que teoricamente un software pudiera usar dichas cantidades de tablas sin problemas si lo necesitara, el hecho que sea un evento "raro" o que se vea poco en el mundo profesional "comun" no le quita validez a la posibilidad, al menos eso creo yo.
79  Programación / Bases de Datos / Re: ¿Mayor numero de tablas que hiciste o viste en una BD? en: 8 Abril 2020, 14:54 pm
No me refiero al numero maximo de tablas que el motor impone.
De todas las bases de datos que hayas hecho o visto cual era la que tenia mas tablas y cuantas eran?

El hecho de que el motor de la posibilidad de tener tantas tablas indica que se pueden tener diseños con cantidades astronomicas de tablas que quizas ya existen en la actualidad o en algun futuro podrian existir. Creo recordar algun e-commerce con el que trabaje que tenia cerca de las 50 y tantas tablas.

La bd northwind de microsoft la componen 13 tablas se me hace algo dificil de entenderlo, lograr entender una bd que pueda llegar a las 1000 o mas tablas seria imposible.

No existe un patron en ingenieria de software que dicte cuantas tablas debe tener un sistema, todo es subjetivo y depende de la arquitectura, los requisitos funcionales y el diseño del sistema en general. Cada software es diferente y por ende tendra diferentes requisitos, diferente arquitectura de clases y diseños de bases de datos, asi que no seria tan raro ver un gran software con el orden de los cientos de tablas en una bd o quizas los miles. Cuantas tablas crees que pueda manejar Facebook en su bd por poner un ejemplo? Luego esta el tema de los Data Wharehouse/Data Mining donde se manejan cantidades astronomicas de datos, en fin, que de poder se puede, quizas proyectos pequeños no sobrepasen nunca las 40-50 tablas a lo mucho, pero libertad tienen para hacerlo si lo necesitaran

Saludos 
80  Programación / .NET (C#, VB.NET, ASP) / Re: Llenar campos en pagina web en: 8 Abril 2020, 03:40 am
observe los datos del responseString, lo abri o visualice como HTML y WALLA!!! ahi estaba en la pagina logeada mas no se ahora como hacerlo en un explorador web ,externo.

Lo que obtienes en el responseString es simplemente el HTML que te ha retornado el servidor, no se que pretendes que suceda al hacer un Proces.Start("HTML"), pero estoy seguro que no es lo que piensas, que imagino sea ejecutar un navegador web con el HTML renderizado. A ver, lo que te explico Eleкtro en su ultimo post es lo que debes hacer si quieres "abrir" dicho html con la sesion iniciada en un navegador dentro de tu aplicacion. Una vez has hecho las peticiones de inicio de sesion y estas dentro necesitas insertar las cookies obtenidas dentro del componente y lanzar la URL, es todo.
Por otra parte si lo que buscas es lanzar una instancia de un navegador externo como firefox o chrome entonces vas a necesitar hacer el mismo procedimiento lo que en este caso no se me ocurre otra opcion para inyectar las cookies que no sea a traves de un WebDriver/Selenium

Saludos
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 47
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines