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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 [120] 121 122 123 124 125
1191  Programación / Programación C/C++ / Re: Doble declaración? en: 5 Julio 2013, 10:19 am
Código
  1. int num,x,result;            /* Aqui estoy indicando que num tiene un valor int*/

Esto no es técnicamente correcto. Ahí estás indicando que las variables num, x y result van a utilizarse para manejar números con signo de un tamaño ( generalmente ) de 32 bits.

Es decir, ahí no estás asignando valores, solo reservando memoria para esas variables. De hecho, si haces un printf ... o un cout de cualquiera de esas variables antes de hacer el scanf verás que suelen tener valores extraños... eso es porque la memoria se ha cogido tal cual, sin inicializar.

Debido a que en c y c++ la memoria no se inicializa es necesario hacerlo de forma manual en numerosas ocasiones, como cuando vas a manejar punteros, para evitar resultados extraños.

Con lo cual, en tu programa sólo le das valor a num en la línea 8.
1192  Programación / Programación C/C++ / Re: Socket send and recv problema en: 5 Julio 2013, 08:52 am
jajajajaja.

Por curiosidad, cuántos bytes ocupan los datos que envías ??

si son una docena o incluso unas pocas centenas de bytes olvídate de optimizar, ya que el rendimiento va a ser prácticamente el mismo y a cambio te vas a complicar bastante el envío.

Me explico:

Las redes, sean del tipo que sean, tienen definido un tamaño máximo del paquete de datos que puede circular por ella (MTU).

Si tu envías un paquete de menor tamaño este circula sin problemas... si intentas enviar uno más grande, el equipo tiene que trocearlo en paquetes más pequeños que se envían de forma individual.

El problema cuando se trocean los paquetes depende del protocolo utilizado ( TCP o UDP ):

* TCP es un protocolo negociado, no se pierden paquetes y todos llegan ordenados, pero es lento por toda la negociación que lleva asociada... en este caso trocear paquetes implica un período de latencia mayor y para determinadas aplicaciones esto es un problema.

* UDP es un protocolo más crudo, la negociación la tienes que programar tú, los paquetes pueden perderse e incluso llegar desordenados. Debido a la falta de negociación, el protocolo es bastante más rápido. El problema asociado a este protocolo viene de que no posees control sobre los paquetes troceados... pueden producirse problemas si se pierde algún paquete...

Para que te hagas una idea, valores normales de MTU son 576 y 1500 bytes. En redes locales el valor normal es 1500.

Enviar un paquete de 1500 bytes a través de una red local típica ( 100 Mbps ) llevaría ( 1500 * 8 ) /  1e8 = 0,00012 s = 0,12 ms ( milisegundos ).

Si en vez de enviar 1500 bytes consigues reducirlo a 1000 el paquete se enviará en 0,08 ms.

En serio te compensa complicarte la programación del envío y la recepción de los paquetes para ahorrarte 40 microsegundos por paquete??

Aún así, en el caso de que tuvieses que enviar paquetes grandes ( imagínate que necesitas enviar un archivo ), la opción más empleada es dividir el archivo en paquetes de un tamaño preestablecido ( por ejemplo 400 bytes ) y enviar cada uno de esos paquetes tal cual. Luego en el receptor se reensambla el fichero y listo.

Nota: Y antes de que alguno me salte a la yugular, la conversión de Kb a b depende del medio... en memorias y discos hay que dividir por 1024, en redes el factor es 1000.

1193  Programación / Programación C/C++ / Re: matriz de caracteres en: 5 Julio 2013, 08:12 am
o eso o aprende a limpiar el buffer de entrada antes de hacer una lectura...

Existen varias formas de limpiar el buffer de entrada... algunas gustan más, otras gustan menos y otras dan problemas en según que plataformas.

Si te interesa aprender a hacer esto, hay un tema en el foro que ya lo comenta:
http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html
1194  Programación / Programación C/C++ / Re: Problema con apuntadores!!!!!! en: 5 Julio 2013, 08:08 am
Otra opción es utilizar una sentencia "break;" dentro del bucle:

...

La desventaja es el mentado salto mientras que la ventaja es evitar el uso de la bandera. Cuestión de estilos.

Exacto, yo es que vengo de un proyecto donde las aplicaciones tienden a ser monstruosas y es fácil encontrarse una docena de breaks en un for... se te cae el alma a los pies cuando tienes que depurar eso XDDDD
1195  Programación / Programación C/C++ / Re: Como puedo determinar el tamaño de un diccionario creado en C++?? en: 5 Julio 2013, 08:05 am
Pues depende.

Si lo almacenas en memoria necesitas 64 bits por cada número, cógete el tamaño medio y máximo ( o aproximado si eres capaz de calcularlo ) y multiplica ese numero por 8 para calcular los requisitos de memoria.

Si lo almacenas en un archivo de texto tienes dos posibles escenarios:

* Se almacena como un archivo binario, los requisitos de espacio son los mismos que los calculados antes, 8 bytes por número.

* Se almacena como archivo formateado ( XML, INI, TXT legible, ... ) Depende del formato elegido, pero como norma general será siempre superior a ( 10 + 1 ) * cifras_en_el_diccionario. El 10 sale del número de cifras que tiene el archivo de texto y el suponiendo un carácter de separación ( lo normal es que acabe siendo más de uno )
1196  Programación / Programación C/C++ / Re: Ayuda! Problema de un menu!!! en: 4 Julio 2013, 21:08 pm
Vaya, veo que no has usado nada de lo que te puse... la próxima vez me ahorro el esfuerzo.

Código
  1.        cuatro_en_linea(tablero,opcion);
  2.        sumador++;
  3.        ganadores[ganador].jganador=cuatro_en_linea();

La función cuatro_en_linea sin argumentos no existe...

deberías eliminar la primera llamada y dejar la segunda, en la que estableces jganador, con los dos argumentos de la primera.
1197  Programación / Programación C/C++ / Re: Volver a programar en: 4 Julio 2013, 17:20 pm
Sin conocer profundamente ambos lenguajes, esos detalles son los que me hacen pensar que lo que quisieron hacer es mejorar C y hacerlo más sencillo a la vez sin perder control sobre el mismo, y bajo mi inexperta opinión lo consiguieron.  

... por eso se llama c++ ( c = c + 1 ) ;)
1198  Programación / Programación C/C++ / Re: Volver a programar en: 4 Julio 2013, 15:34 pm
claro tiene mas conceptos y es mas flexible  y seria otra razon para escoger c++ ademas de que es mas sencillo al comienzo :)

Aún así... si alguien me dice que aprende más rápido c++ que c es porque no está aprendiendo lo que sucede por debajo cuando alguien crea una clase.

Esto se ve con facilidad cuando muchos no entienden que sea más óptimo pasar una clase a una función una referencia constante en vez de por valor.

C++ tiene muchísimas más cosas que C y para comprenderlos al mismo nivel el esfuerzo a realizar en c es siempre inferior.

Vale que manejar arrays de tipo char para las cadenas es algo confuso al principio... pero debe ser lo único... con c++ seguro que podemos sacar muuuchas más cosas.

Vuelvo al ejemplo, si alguien dice que sabe usar clases de c++ pero no sabe la diferencia entre un constructor copia y un operador de asignación... no sabe usarlas y, en el mejor de los casos, hará un uso incorrecto e inadecuado de ambos por mero desconocimiento.

Creo que es peligroso que alguien crea que controla sobre algún tema cuando realmente solo ha alcanzado a arañar la superficie.
1199  Programación / Programación C/C++ / Re: Ayuda - Cómo agregar puertos TCPI y UPD en: 4 Julio 2013, 15:24 pm
jajajajajaja

si, dar una idea equivocada de lo que se intenta hacer suele dar malos resultados ;)
1200  Programación / Programación C/C++ / Re: Volver a programar en: 4 Julio 2013, 15:11 pm
bueno no le puedes decir a un novato que empieze por ahi xD , es como aprender c iniciandose por sockets. entiendo lo que quieres decir pero  no hace falta manejar esos conceptos para iniciarse en c++

Eso lo entiendo, pero claro, uno que está empezando no puede decir que sabe programar.

Hasta que no controla un mínimo todas esas cosas... que son conceptos clave del lenguaje no puede decir que sabe programar en c++.

Me baso simplemente en esto para decir que aprender c++ es más difícil que aprender c
Páginas: 1 ... 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 [120] 121 122 123 124 125
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines