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 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 46
41  Programación / Programación C/C++ / Re: Programa de Gráficas en: 18 Noviembre 2012, 19:03 pm
No estoy seguro a qué hace referencia, pero lo que si estoy seguro es que tenés que agregar el comando "-lm" al FINAL del comando para poder compilar correctamente, en este caso, la función "pow".

¿Compilás por consola o desde algún IDE?
42  Programación / Programación C/C++ / Re: Duda sobre punteros en: 17 Noviembre 2012, 22:59 pm
Claro, porque faltan algunas cosas que las pasé por encima por considerarlas implícitas :P

Cuando vos utilizas un puntero, como en este caso, debes asignarle algún espacio en la memoria para poder alojar lo que quieras almacenar. En este caso, como es un puntero a int, necesitas tener 4 bytes para dicho puntero.
Es decir, necesitás inicializar el puntero, y se hace con la función malloc(). Si no sabes lo que es memoria dinámica, te recomiendo que busques información sobre eso, porque va de la mano con el uso de punteros en la gran mayoría de los casos.

Una vez que le asignes memoria a dicho puntero (con la función malloc() como te dije, puedes buscar información en cualquier lado, hay demasiada), también te falta pasarle el parámetro a cada una de las llamadas a menu() en la función Mvelocitats(). (Llamas a menu() pero no le pasas la A como parámetro).

Nota: para usar malloc() tienes que incluir la librería standard stdlib.h
43  Programación / Programación C/C++ / Re: Duda sobre punteros en: 17 Noviembre 2012, 22:00 pm
Veo algunas cosas que me hacen ruido.

Primero que nada, en la función "menu" vos declaras un:

Código
  1. int* A;

Y está perfecto, pero lo que vos estás pasando a las demás funciones es, por ejemplo:

Código
  1. Mvelocitats(&A);

Por ende, estás pasando en realidad un int** (ya que le estás pasando la dirección de memoria donde se aloja el puntero, y NO la dirección de memoria donde se aloja el "int" al que hace referencia ese puntero. Es decir, estarías usando un puntero doble, y lo que en realidad cambias en esas funciones es la dirección de memoria donde apunta A).
Espero que eso se haya entendido, lo que debes hacer es pasar simplemente:

Código
  1. Mvelocitats(A);

Debido a que A ya es un PUNTERO (es decir, guarda una dirección de memoria) funcionarán las funciones anteriores.

Sin embargo, hay algo que no me cierra, y es que al llamar a Mvelocitats, en cada case lo que haces es llamar a la funcion menu() nuevamente. Y lo que haces con esto es que se te declare una variable "A" diferente cada vez, por ende, nunca podrás utilizar los valores que le asignaste a *A en, por ejemplo, la función Mvelocitats().
Una solución a esto sería declarar ese puntero a int en el main y pasarselo como parámetro a menu(), luego, utiliza la forma de llamar que te indiqué al principio.

Espero que haya quedado claro y se solucione!
Salúd!
44  Programación / Programación C/C++ / Re: Duda en en ejercicio de programacion en: 16 Noviembre 2012, 16:18 pm
Sobre el primer problema. Es probable que se de debido a que no se limpia el buffer luego de cada scanf (y, así, se lee algún caracter de salto de línea en el medio). Prueba incluir esta línea luego de cada scanf:

Código
  1. while ((c = getchar()) != '\n');

Siendo "c" alguna variable que declares.

Sobre el problema que 'b' no es menor a 'F', en realidad es un problema con el algoritmo, debido que, justamente, el caracter 'b' (minúscula) efectivamente es MAYOR que 'F'. En la tabla ASCII las mayúsculas representan un código menor y así es como se comparan los caracteres. Por ende, deberías de ayudarte con las funciones tolower() o toupper() (cambiar de mayúscula a minúscula y viceverza) para terminar el code.

Saludos!
45  Programación / Programación C/C++ / Re: Problemas al intentar hacer mas eficiente un algoritmo de ordenacion en: 14 Noviembre 2012, 15:26 pm
Que bueno que haya servido!

Métodos de ordenamiento hay muchos. Lo interesante es estudiar y entender el orden de cada uno para comparar la eficiencia.
Te recomiendo ver el quicksort.

Saludos!
46  Programación / Programación C/C++ / Re: Problemas al intentar hacer mas eficiente un algoritmo de ordenacion en: 14 Noviembre 2012, 15:05 pm
Si lo hacés de ese modo, creo que la variable flag tenés que inicializarla en 0 al entrar al primer for (fijate que siempre es 1 en tu caso). Es decir, la condición para que entre al for es que i < TAM y flag == 1. Por ende, entrás al for, inicializás en 0 el flag, entra al segundo ciclo, y si nunca entro al if ( para hacer el swap ) entonces el vector está ordenado, por ende, la variable flag siempre será 0, y así, sale del for. Espero que se entienda!

BTW, creo que al método del burbujeo no hay más que hacerle. Si es por complejidad algorítmica, lo máximo que se le puede hacer es cortar cuando el algoritmo ve que el vector ya está ordenado (es decir, es un algoritmo un poco más inteligente que el burbujeo común).

Para algo más eficiente, hay que buscar otro método de ordenamiento, no se podría estrujar más el burbujeo a mi parecer :P
47  Programación / Programación C/C++ / Re: Programa de Gráficas en: 14 Noviembre 2012, 13:26 pm
El problema es meramente de análisis matemático. No creo que haya problemas en el code. Primero corroborá que las fórmulas en el code estén bien escritas.

La verdad no entiendo bien a qué hacer referencia Po ni las fórmulas que escribiste para dibujar las coordenadas.
Yo creo que con la fórmula original de la circunferencia (x^2 + y^2 = R, con R = Radio) sale más sencillo :P
48  Programación / Programación C/C++ / Re: Problemas al intentar hacer mas eficiente un algoritmo de ordenacion en: 14 Noviembre 2012, 13:14 pm
En vez de tener 2 ciclos for, podrías reemplazar por dos ciclos while, y tener un flag que te indique si el vector ya está ordenado o no.

Es decir, el code que vos tenés realiza los dos ciclos SIEMPRE, pero si tuvieras un flag que te indique si alguna vez en esos dos ciclos NO entras a hacer el swap (es decir, que el vector ya está ordenado) entonces seteas el flag y al momento de volver al while, sale del loop (no tiene sentido seguir si el vector ya está ordenado).

Espero se haya entendido! (Yo lo conozco como "Burbujeo optimizado" pero desconozco si ese nombre es universal je).

Saludos! Avisame si no entendiste algo!
49  Programación / Programación C/C++ / Re: Programa de Gráficas en: 12 Noviembre 2012, 22:59 pm
Tan solo borra el '\n' del scanf que lee "Hasta qué número quieres calcular?"

Salú!
50  Programación / Programación C/C++ / Re: Borrar buffer , como funciona getchar en: 12 Noviembre 2012, 16:55 pm
Básicamente, cuando vos ingresás datos por pantalla, tenés que pulsar el enter para que se procese la información.

Ahora bien, el buffer va a tomar tanto los datos que vos ingresaste como el enter (caracter '\n'). Obviamente, ese caracter de salto de línea no es parte de los datos que vos querías ingresar, por ende, es necesario eliminarlo!

Si por ejemplo estás en un loop donde en cada corrida utilizas una función para leer del buffer de entrada (getchar() es un ejemplo), llega un momento que lee solo ese caracter de salto de línea, cosa que no estaría bien, porque vos no querías ingresar dicho caracter (a menos claro, que hubieses querido ingresarlo :P).

En resumen, el buffer siempre va a tener lo que vos ingresás, y el caracter de salto de línea que también ingresas para que empiece a procesar la información. Lo que se le denomina "limpiar el buffer" es justamente, eliminar el caracter de salto de línea que queda en el buffer al momento de ingresar información por pantalla, y así el programa puede seguir pidiendo información al usuario (notar que si ve que el buffer no está "vacío", no pide datos al usuario como debería, sino que tomaría ese caracter de salto de línea como el dato que ingresa el usuario).

Espero que se haya entendido un poco más.
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 46
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines