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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Duda sobre ejercicio de la universidad en: 18 Febrero 2016, 21:45 pm
Citar
escribir la suma de toda la rentabilidad posible los siguientes valores de la función

No entiendo esa parte, pero en todo caso lo que tienes es una lista doblemente enlazada y una funcion increasing que agrega x - y nodos a la lista
2  Programación / Programación C/C++ / Re: Programación Orientada a Objetos clases y sus metodos en: 9 Febrero 2016, 02:21 am
Si haces una funcion pideCoordenadas(x, y) o no depende mas que nada de como sea mas legible el codigo. Personalmente, en tu caso especifico me parece que es mas legible si haces no haces una funcion pideCoordenadas y usas tus setters.

En cuanto a lo de constructor, depende basicamente de como planeas que sea usado tu objeto. Si quieres que las coordenadas del circulo las pongan una vez y sean permanentes entonces borra los setters y crea un constructor que las asigne, pero si planeas que las coordenadas del circulos sean modificadas necesitas los setters si o si.   

   
3  Programación / Programación C/C++ / Re: Hardware y C/C++ en: 19 Enero 2016, 01:24 am
Todos los compiladores son "traductores".
4  Programación / Programación C/C++ / Re: Hardware y C/C++ en: 19 Enero 2016, 01:15 am
Cualquier compilador genera un ejecutable en ensamblador, sino ya no sería un compilador.


Para nada. No todos los compiladores traducen el codigo a assembly. Cfront por nombrarte un ejemplo no lo hacia.
5  Programación / Programación C/C++ / Re: Hardware y C/C++ en: 19 Enero 2016, 01:02 am
No entiendo a que te refieres por "acceder al hardware" pero con C/C++ puedes hacer todo lo que puedes hacer con assembly. De hecho la mayoria de compiladores de C/C++ traducen el codigo a assembly. Tambien tu sistema operativo(si usas windows o linux) esta escrito en C con una que otra optimizacion escrita en assembly(el compilador no siempre traduce las cosas de la forma mas eficiente).

En todo caso si quieres controlar la velocidad del ventilador entonces usa la libreria correspondiente del sistema operativo que sea que uses. Si quieres "completo control" sobre el hardware de tu computadora prueba modificar alguna distribucion de linux usando C.

Ese es el tema o me equivoco?
6  Programación / Programación C/C++ / Re: ¿Por qué este servicio no muestra ventana? en: 27 Diciembre 2015, 23:04 pm
Porque no estas creando ninguna ventana. Ve como crear una ventana, en WINAPI me parece que es con CreateWindow, o puedes mostrar los resultados en una consola.
7  Programación / Programación C/C++ / Re: [?] Ayuda como redondeo el valor de una variable en c en: 26 Diciembre 2015, 22:23 pm
Depende de como quieras redondear, si quieres hacer algo como lo que propone class_OpenGL es mucho mas eficiente hacer
Código:
printf("%.2f", valor)
si lo que quieres es redondear al valor mas cercano, al mas alto, o al mas bajo ya hay funciones que hacen eso: roundf, ceilf, floorf respectivamente.
8  Programación / Programación C/C++ / Re: Pequeña duda sobre punteros en: 26 Diciembre 2015, 02:08 am
Cuando necesitas acceso a una gran cantidad de memoria. Por ejemplo si quisieras un array bastante grande, o cuando necesitas mantener una variable por mucho tiempo como por ejemplo para una lista enlazada o algo asi.
9  Programación / Programación C/C++ / Re: Pequeña duda sobre punteros en: 26 Diciembre 2015, 00:56 am
Correcto, esta en la sección de datos de solo lectura y el puntero en si en el stack. Y no kondrag, no se reserva memoria usando malloc a menos que realmente lo necesites porque reservar memoria en el "heap" es mucho mas lento que en el stack. Considera que para reservar memoria con malloc() tienes que buscar un bloque de memoria lo suficientemente grande y dividirlo y para empeorar las cosas luego debes liberarlo usando free(). Por otra parte para resevar memoria en el stack solo tienes que cambiar un puntero.

Es decir, solo usa malloc cuando sea absolutamente necesario.
10  Programación / Programación C/C++ / Re: Pequeña duda sobre punteros en: 25 Diciembre 2015, 07:21 am
Si tu haces:

Código:
char* cadena = "Hola";

No se reservan 4 bytes en alguna parte de la memoria. Se reservan 5 bytes(mas \0) en lo que se llama "stack" que es basicamente memoria eficiente y bastante limitada.

Cuando tu haces esto:

Código:
cadena = "Sol";

Que es lo que imagino que quisiste hacer, entonces has perdido la direccion donde esta "Hola" y tu puntero ahora apunta a "Sol" que son 4 bytes. Ahora, Sol no reemplaza a Hola de ninguna forma. Es decir, si crees que sucede esto "Sol\0a\0" te digo que eso no es lo que esta pasando, pero asumamos que es asi.

Entonces tenemos memoria que no nos sirve ocupando espacio y que debemos hacer para liberarla? Nada, porque fue reservada en el stack y la computadora maneja la memoria del stack por ti asi que no te preocupes por eso.

Ahora para elaborar un poco mas la respuesta de tu pregunta original y de paso responder la segunda tenemos que entender como se reserva la memoria en el stack. Supongamos que tenemos tu codigo original:

Código:
char* cadena = "Hola";

y la direccion de la memoria donde se encuentra H es 4195924 . Hola ocupa 5 bytes entonces el char final del string "Hola" esta en 4195929(que es \0). Ahora supongamos que tenemos:

Código:
cadena = "Sol";

Y la memoria es 4195949, entonces si haces
Código:
printf("%s", cadena - 20);
lo que veas deberia ser Hola.

Para obtener la direccion de la memoria tienes que recordar que se trata de un numero. Entonces
Código:
printf("%d", cadena);
te da la direccion de la memoria. El estilo para hacerlo en C++ seria:
Código:
std::cout << (int)cadena;
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines