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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 [94] 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 ... 235
931  Programación / Programación C/C++ / Re: ayuda.hacer un programa en C, que haga lo mismo que hace el comando cp en ubuntu en: 12 Agosto 2016, 07:59 am
Hola que bueno que lograras hacerlo por tu cuenta o por lo menos eso espero que sea.

Y que minimo te sirviera de algo el codigo que te puse...  :P ya que a mi forma de ver las cosas era más sencillo mi codigo que el que pusiste

Si gustas crea un nuevo tema para tu otro problema y explica mejor que es lo que quieres hacer.
932  Programación / Programación C/C++ / Re: La memoria no se inicializa en cero de Forma Automatica en: 12 Agosto 2016, 00:38 am
Claro obviamente no tenemos que abusar, por ejemplo si sabemos que siempre vamos a Inicializar "Y" posición de un arreglo X Antes de realizar cualquier tipo de operaciones con ella o de leerla, pues no hay necesidad de inicializar en 0 todo  el Arrglo X..

Por ejemplo tenia un Codigo de Grafos donde inicializaba en 0 todo un Nodo unos cuantos miles de millones veces, y el programa tardaba X cantidad de tiempo, posteriormente lo hacia con memoria SIN inicializar y el programa funcionaba hasta 4 veces mas rápido y claro solo Leia Datos una vez que sabia que ya habían sido inicializados correctamente.

El tema lo publique por qu hay usuarios que no están cocientes de que la memoria puede tener basura y luego vienen aqui a preguntar por que su programa falla, o veces hace "ciertas" cosas y a veces no las hace..

En fin.

Saludos!
933  Programación / Programación C/C++ / Demostracion del problema de Monty Hall en: 11 Agosto 2016, 23:14 pm
Quien no ha visto ese concurso donde hay un solo premio detras de 3 puertas las otras 2 con  Cabras u Ovejas...



La opción adecuada es siempre "cambiar" de puerta cuando te pregunten si te quieres cambiar de la misma..

El programa simula 10 Millones de Juegos 2 veces, en la primera ronda el jugador siempre cambia de puerta y en la segunda ronda el jugador nunca cambia de puerta.

Se demuestra que se tiene 66.6% de probabilidad de ganar si se cambia de puerta, contra 33.3% de probabilidad de ganar si no se cambia  de puerta.

Código
  1. #include<stdio.h>
  2. #include<stdint.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. #include<time.h>
  6.  
  7. #define GOAT 0 //CABRA 0
  8. #define PRIZE 1 //PREMIO 1
  9.  
  10. #define MAX_SIMULATIONS 10000000
  11.  
  12. int main() {
  13. /*unsigned char */
  14. uint8_t position = 0; //Posicion del premio
  15. uint8_t selected = 0; //Posicion seleccionada por el jugado
  16. uint8_t doors[3]; //Puertas
  17. uint8_t can_switch = 0; //La puerta a la cual se puede cambiar
  18. register uint32_t count_win = 0;
  19. register uint32_t simulations = 0;
  20. srand(time(NULL)); //Semilla Random
  21. memset(doors,GOAT,sizeof(uint8_t)*3); //Todas las puertas son Cabras
  22. //< 10000000
  23. while(simulations < MAX_SIMULATIONS) {
  24. position = rand() % 3; //position del Premio Pseudo-Aleatoria
  25. doors[position] = PRIZE; //Guardamos el premio en la position antes seleccionada
  26. selected = rand() % 3; //position elejida por el Jugador
  27.  
  28. switch(selected) { //En base a lo elejido por el jugador
  29. //El encargado del juego valida que puerta tiene otra Cabra y la destapa
  30. //Dandole la oportunida al jugador de cambiar su puerta por la puerta restante
  31. case 0: //Puerta 0 elejida por el Jugador
  32. if(doors[1] == GOAT) { //Si otra puerta 1 Tiene cabra entonces
  33. can_switch = 2; //Le damos la oportunidad de elegir entre la puerta 0 y la puerta 2
  34. }
  35. else { //Caso contrario
  36. can_switch = 1; //Le damos la opotunidad de elegir entre la puerta 0 y la puerta 1
  37. }
  38. break;
  39. case 1: //Repetimos en caso de que seleccione la puerta 1
  40. if(doors[2] == GOAT) {
  41. can_switch = 0;
  42. }
  43. else {
  44. can_switch = 2;
  45. }
  46. break;
  47. case 2: //Repetimos en caso de que seleccione la puerta 2
  48. if(doors[0] == GOAT) {
  49. can_switch = 1;
  50. }
  51. else {
  52. can_switch = 0;
  53. }
  54. break;
  55. }
  56. if(doors[can_switch] == PRIZE) { //Evaluamos si la puerta elejida tiene el premio
  57. count_win++; //Si es asi incrementamos el contador de premios
  58. }
  59. doors[position] = GOAT; //0 //Restablecemos la puerta con premio nuevamente a Cabra
  60. simulations++; //Incrementamos el contador de Simulaciones
  61. }
  62.  
  63. //Imprimimos totales
  64. printf("Total simulations with change %u, win: %u rate: %f\n",simulations,count_win,(float)((float)count_win/(float)simulations));
  65.  
  66. count_win = 0; //Restablecemos contador de premios a 0
  67. simulations = 0; //Restablecemos contador de simulaciones a 0
  68.  
  69. //Como en la siguiente similacion el jugador no cambiara de puerta no es necesario evaluar las otras puertas
  70. while(simulations < MAX_SIMULATIONS) {
  71. position = rand() % 3;
  72. doors[position] = PRIZE;
  73. selected = rand() % 3;
  74. if(doors[selected] == PRIZE) {
  75. count_win++;
  76. }
  77. doors[position] = GOAT; //0
  78. simulations++;
  79. }
  80. printf("Total simulations without change %u, win: %u rate: %f\n",simulations,count_win,(float)((float)count_win/(float)simulations));
  81. return(0);
  82. }
  83.  

Descripción del problema:

https://en.m.wikipedia.org/wiki/Monty_Hall_problem


Salida del codigo arriba mostrado:

Código:
Total simulations with change 10000000, win: 6665613 rate: 0.666561
Total simulations without change 10000000, win: 3335076 rate: 0.333508
Saludos!
934  Programación / Programación C/C++ / Re: La memoria no se inicializa en cero de Forma Automatica en: 11 Agosto 2016, 18:41 pm
No creo, estas clases tienen sus constructores y no puedes acceder a posiciones donde no se han inicializado con un valor.

El detalle radica en que cuando aprenden a programar nunca les enseñan a inicializar la memoria y luego vienen aqui a preguntar por que falla su codigo.

Saludos!


935  Programación / Programación C/C++ / Re: Poner separador de miles a la hora de mostrar resultado en pantalla en: 11 Agosto 2016, 14:53 pm
Compañero, da un poco de flojera leer un codigo tan largo y menos si mo esta con la etiqueta GeSHi para codigo en C

Ejemplo:

Código
  1. int var = 1;


Ve que se ve mejor.

Basicamente lo que pide se puede separar de 2 formas.

  • Procesar el dato como numero y atravez de divisiones y variables temporales ir separando en bloques de centenas y agregarles el valor adecuado
  • Convertir el Numero a cadena y procesar cada 3 caracteres y agregarles el valor adecuado

Ambas salidas deberian de devolver un string o (char*) listo para que se imprima en pantalla.

Saludos
936  Programación / Programación C/C++ / Re: Duda programa c++ en: 10 Agosto 2016, 20:17 pm
Lo mas recomenble para determinar si un numero es Capicua o no lo es, es leer el numero como cadena de texto.

Determinar la longitud de la cadena y evaluar en un ciclo hasta que recorras la mitad de la cadena.

Tedejo un ejemplo que ya tenia hecho ya que al momento de que pegas tu codigo sin GeSHi, se pierden los index de los arreglos:

Código
  1. #include<stdio.h>
  2. #include<stdbool.h>
  3. #include<string.h>
  4.  
  5. int main() {
  6. bool capicua = true;
  7. int longitud,i;
  8. char numero[10] = "";
  9. printf("Ingrese un numero: ");
  10. fgets(numero,10,stdin);
  11. longitud = strlen(numero);
  12. numero[longitud-1] = 0;
  13. longitud = strlen(numero);
  14. longitud -=1;
  15. printf("Longitud del numero %i\n",longitud );
  16. i = 0;
  17. while(i <= longitud && capicua) {
  18. if(numero[i] != numero[longitud]) {
  19. capicua = false;
  20. }
  21. i++;
  22. longitud--;
  23. }
  24. if(capicua) {
  25. printf("El numero es Capicua!\n");
  26. }
  27. else{
  28. printf("El numero NO es Capicua!\n");
  29. }
  30. return 0;
  31. }

937  Programación / Programación C/C++ / Re: Duda programa básico c++ en: 10 Agosto 2016, 18:21 pm
Voy a comentarte que si solo necesitas contar, no necesitas guardarlos.

La variable necesita ser char

Ahora que si necesitas guardarlos pues entonces se trata de otra cosa:

Citar
metiendo datos hasta que se introduzca el carácter punto '.'

Citar
también hay que mostrar los números introducidos por pantalla.

Son Datos o Numeros?

Codigo para solo contar caracteres independientemente si son numeros o otra cosa
Código
  1. #include<stdio.h>
  2.  
  3. int main(){
  4. char c;
  5. int cont=0;
  6. int num;
  7. int contador2=0;
  8. printf("Introduzca texto: ");
  9.  
  10. do{
  11. c = getchar();
  12. cont++;
  13. if(c == ' ' || c == '\t' ||c == '\n')
  14. contador2++;
  15. }while(c != '.');
  16. printf("Ha introducido %i  tabuladores, espacios de linea..etc y también estos números: %i\n",contador2,cont);
  17. }


Tu programa se cuelga por que tratas de meterle un "." a una variable Entera.

Saludos
938  Programación / Programación C/C++ / Re: Ayuda con arrglos sencillos y bidimensional en: 10 Agosto 2016, 18:12 pm
Código
  1. int calificaciones[5][8];

939  Programación / Programación C/C++ / Re: Duda programa básico c++ en: 10 Agosto 2016, 17:59 pm
Y cual es la duda  :-(
940  Programación / Programación C/C++ / Re: [C++] (Consulta) ¿std::string guarda la cadena en el heap o en la pila? en: 10 Agosto 2016, 16:13 pm
Que raro agregale este:


Código
  1. std::cout << "Direccion de cadena: " << (void *)cadena << std::endl;

Ya que llegue a mi Computadora lo valido.

Saludos
Páginas: 1 ... 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 [94] 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines