@Anghios: jajaja me has matado con el lenguaje hoygan, pero no, no es así. Ten en cuenta que cuando puse ese ejercicio no conocíais el operador de desreferencia...
Hawkings (@Hawkings)
Information about Hawkings
Publicados por Hawkings
-
-
[alinear-centro][/alinear-centro]
Este tercer concurso de programación está pensado para todos los que están aprendiendo C en mi curso de programación. Puede apuntarse cualquiera, aunque los programadores más veteranos puede que no encuentren aquí un gran reto. Habrá una medalla de premio para todos los que consigan resolverlo, está en el siguiente post.
El problema consiste en diseñar un programa que, en modo consola, dibuje figuras con caracteres. Concretamente, debe dar a elegir entre un cuadrado, un rectángulo y un triángulo rectángulo con el ángulo recto a la izquierda. Si el usuario elige un cuadrado, preguntará el lado (L) y el cuadrado será de L caracteres de alto por L de ancho. Si elige un rectángulo preguntará la base (b) y la altura (h), y el rectángulo será de b caracteres de ancho por h de alto. Por último, si elige un triángulo preguntará la base (b), y construirá un triángulo que en la primera línea tenga un carácter, en la segunda dos, y así hasta llegar a b caracteres.
Aún falta una cosa, el usuario debe poder elegir el carácter con el que se formarán las figuras.Para entender mejor el ejercicio, lo he resuelto yo primero y os dejo solo el ejecutable para que lo probéis y así podáis entender mejor el problema, se trata de hacer un programa similar a este:
http://www.megaupload.com/?d=H12VJKK0
http://www.mediafire.com/?xxp4withb99e473Podéis preguntar dudas o pedirme ayuda en este hilo o por MP. Una vez resuelto el ejercicio podéis si quieréis poner el ejecutable aquí pero el código fuente me lo pasáis por MP.
Así podría quedar el programa. Sale un menú, escribes una opción (el 4 he puesto yo), como el 4 es un triángulo te pide la base, le digo 5 y me lo dibuja con caracteres. Como no he cambiado el caracter, pues salen las O.
-
O.o ¿Por qué veo en el chat a 17 usuarios conectados, y muchos de ellos no los tengo agregados como amigos?
¿Has cambiado eso y ya no hace falta agregar a alguien para chatear con él?
-
Además de que la información es incorrecta en muchos casos, los aspectos incluidos en la comparativa no son importantes, han cogido claramente lo que le han puesto a IE9 xD. Yo también se hacer una comparativa así, si coges solo lo que te interesa puede salir algo como esto:
Y dejan fuera a Opera :mem4: -
¿Por que vuelves a postear esto? _xD_
Justo hoy en matemáticas he empezado el tema de rectas y se me ha ocurrido una forma. Con coordenadas de destino menos coordenadas de origen tienes el vector director de la recta que sería la trayectoria del coche, es decir P2x - P1x para la componente x del vector director y P2y - P1y para la componente y del vector. Ahora hallas la pendiente de la recta (si el vector es u sería uy/ux). Haces lo mismo con el primer punto y el tercero (P3x - P1x y P3y - P1y), y hallas la pendiente de esa segunda recta. Ahora para que el giro sea a la derecha depende del cuadrante. En el primer y segundo cuadrante el giro es hacia la derecha si y solamente si el valor absoluto de la pendiente de la primera recta es mayor que el valor absoluto de la pendiente de la segunda recta. En el tercer y cuarto cuadrante es lo mismo pero al revés es decir, el giro será hacia la derecha solo cuando el valor absoluto de la pendiente de la primera recta sea menor que el valor absoluto de la pendiente de la segunda recta. Supongo que ya sabrás programar en C, así que eso te lo dejo a ti.Un saludo.
-
La placa base no es lo más importante en un ordenador. Es importante el procesador, la RAM, la tarjeta gráfica, el disco duro... Pero no la placa base. Nadie con un ordenador bueno presume de placa base. Simplemente piensa cuales van a ser los otros componentes y que sean compatibles. De todas formas si quieres que sea buena te recomiendo la marca Intel.
-
Yo nunca he tenido necesidad de cambiar la placa base de mi ordenador, pero si la vas a cambiar yo diría que lo más importante es que sea compatible con el resto de piezas que le vas a poner. Yo solo me fijaría en eso, y en el precio xD.
Un saludo.
-
Ya lo he cambiado, ¿tú crees que así se entiende mejor? No he puesto la explicación porque todo el post ha ido sobre eso xD.
Por cierto cuando posteas un ejercicio no hace falta que expliques lo que has hecho por que se supone que los demás no se van a copiar _xD_
-
@freak7z: lo tienes bien. Reconozco que el enunciado no estaba muy bien expresado, pero no sabía como ponerlo. Si se te ocurre una forma mejor de explicarlo lo posteas en el hilo de dudas o me mandas un MP y cambio el enunciado para que los que van un poco más retrasados en el curso cuando lleguen al ejercicio 29 lo entiendan mejor.
-
Post #13
Antes de seguir leyendo este post asegúrate de que entiendes lo que es un puntero.
Bien, una vez hemos creado un puntero, y le hemos asignado la dirección de una variable podemos cambiar su valor y cambiará el valor de la variable. Es decir que si tenemos una variable _numero _y un puntero con la dirección de numero, desde el puntero podemos utilizar y cambiar el valor de número. Para ello se usa lo que se conoce como operador de desreferencia. El operador de desreferencia lo que hace es acceder a una variable sabiendo su dirección de memoria. Cuando accedemos al valor de una variable mediante este método, no estamos accediendo a una copia del valor, sino al valor original, es decir que si una variable contiene 3 y mediante un puntero cambiamos el valor a 4, el valor de la variable cambiará a 4. Como hemos dicho antes un puntero guarda la dirección de memoria de algo, así que si ponemos simplemente el nombre del puntero, es como si pusieramos esa dirección de memoria, para referirnos a la variable que hay en esa dirección de memoria usamos * que es el operador de desreferencia del que habíamos hablado antes. Tómate unos segundos para asimilar todo esto y lee el código siguiente, te recomiendo que intentes predecir que saldrá con printf() antes de leer la solución abajo para comprobar que lo has entendido.
#include int main() { //Creo una variable normal y un puntero a int int var, *punt; //Ahora hago que el puntero "apunte" a la dirección de memoria de var punt = &var; printf("Introduce un numero: "); scanf("%d",&var); //Hasta aquí hemos asignado un valor a var, intenta predecir que pasará ahora *punt += 6; printf("El valor de var ahora es %i",var); system("pause > null"); return 0; }
Solución: var ahora vale 6 más que lo que valía antes.
Fíjate que donde ponemos:printf("El valor de var ahora es %i",var);
Perfectamente podríamos poner:
printf("El valor de var ahora es %i",*punt);
Porque estamos accediendo a lo que hay en la dirección de memoria de var. Por eso mismo a scanf pasamos la dirección de memoria de la variable a la cual queremos asignar una valor. Porque lo que queremos es cambiar el valor de esa variable, y para hacerlo en una función necesitamos desreferenciar su dirección de memoria para acceder a la variable. Vamos a ver esto con un ejemplo para entenderlo mejor. Compila y ejecuta este programa y comprueba como no cambia el valor de la variable:
#include void nocambia(int); int main() { int numero; printf("Introduce un numero: "); scanf("%i",&numero); nocambia(numero); printf("El valor ahora es %d.",numero); system("pause > null"); return 0; } void nocambia(int a) { a = -6; }
Ahora vamos a ver un ejemplo de una función que SÍ cambia el valor de la variable:
#include void sicambia(int *a); int main() { int numero; printf("Introduce un numero: "); scanf("%i",&numero); sicambia(&numero); printf("El valor ahora es %d.",numero); system("pause > null"); return 0; } void sicambia(int *a) { //Los paréntesis nunca sobran, puedes poner los que quieras (*a) = -6; }
Ya no estamos cambiando un valor, sino lo que hay en una dirección de memoria, así que estamos cambiando la propia variable.
Ejercicio 28 (B): Diseña una función que reciba un puntero a float y un int, y que cambie el valor del número con decimales multiplicándolo por el entero. Crea también un programa que utilice tu función.
Ejercicio 29 (M): Crea una función que reciba un array de enteros, un entero que contenga el número de elementos del array y un puntero a entero y que no devuelva nada. En la función modificarás el valor de la variable a la que apunta el puntero para que su valor sea la suma de todos los elementos del array. Haz también un programa que utilice esta función.