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


 


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 87
1  Programación / Programación C/C++ / Re: Teoría + Problema Propuesto en: 21 Julio 2014, 07:49
Primero quiero agradecer la buena predisposición que tienen para ayudarme a terminar :)
Lamentablemente, me sigue devolviendo lo mismo. Parece ser que dentro del bulce while ocurre algo que luego no me deja imprimir la cadena menor
................................................
Aclaro que puse palabras<c+1 porque solo poniendo <c me deja ingresar una palabra menos (creo que se debe a getline)
Quedo a la espera de alguna solución.
...............................................

En realidad estas confirmando al poner c+1 que un cin se lleva por delante el '\n' del primer cin, lo que indica que hay que hacer limpieza del buffer, de ahí lo que te indiqué en el mensaje anterior.

A mí si me funciona como te indiqué, que te amplio para que lo veas mejor:

Código
  1. ******************
  2.  p=new char[c*13];
  3.  for(int i=0; i<c*13; i++){
  4.    p[i]=' ';
  5.  }
  6.  while (cin.get() != '\n');
  7.  while(palabras<c){
  8.    cin.getline(pal, 13);
  9.    strcpy(&p[ac], pal);
  10.    ac+=strlen(pal)+1;
  11.    palabras++;
  12.    if(strcmp(menor,pal)>0){
  13.      strcpy(menor,pal);
  14.      cout<<"menor parcial = "<< menor<<endl;
  15.    }
  16.  }
  17.  for(int i=0; i<c*13; i++){
  18.    cout<<p[i];
  19.  }
  20.  cout<<endl<<"menor final = "<<menor<<endl;
  21. ***********************

Lo único a tener en cuenta es que como haces distinción de mayúsculas y minúsculas da lugar a que, por ejemplo, "Canvas" sea menor que "anda", ya que que en código ASCII "C" es "menor" que "a".  ;)

No obstante suscribo las palabras de CalgaryCorpus:

Sugiero que pongas las entradas y salidas que obtienes versus la que esperas. Decir que obtienes "lo mismo" no es clarificador, en mi opinion.

Pon un ejemplo en que falle o no obtengas lo esperado indicando que esperabas.

¡¡¡¡ Saluditos! ..... !!!!


2  Programación / Programación C/C++ / Re: Intersección linea - triángulo en: 20 Julio 2014, 21:31
he incluido tu usuario en el documento espero que no te moleste.

 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)

No molesta en absoluto, todo lo contrario y enhorabuena, ¡¡¡menudo curre te has pegado¡¡¡.

 
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)

¡¡¡¡ Saluditos! ..... !!!!


3  Programación / Programación C/C++ / Re: Intersección linea - triángulo en: 20 Julio 2014, 15:03
Aquí está resuelto simbólicamente, ahora solo hay que implementarlo.
https://drive.google.com/file/d/0Bw0QWEQBKEXLMjl4ZEt0eVk1T00/edit?usp=sharing
Muchas gracias por tu visión de lo del triángulo. Quizás haga el código.
Saludos.

Al menos a mí no se me abre el pdf  :o

Otra opción, si no me falla la geometría,  para ver si el punto es interior o no es calcular los productos vectoriales PcorteT1xPcorteT2, PcorteT2xPcorteT3 ,PcorteT3xPcorteT1 y si son paralelos, o proporcionales tienen el mismo sentido es que el punto es interior. Con ello evitamos el calcular las áreas.

¡¡¡¡ Saluditos! ..... !!!!


4  Programación / Programación C/C++ / Re: Teoría + Problema Propuesto en: 20 Julio 2014, 14:07
El problema es que puts no devuelve nada. No puedo deducir el motivo. Alguien?

"Creo" que es un problema de limpiar el buffer. Mira a ver así:

Código
  1.  while (cin.get() != '\n');
  2.  while(palabras<c){
  3.    cin.getline(pal, 13);
  4.    strcpy(&p[ac], pal);
  5. *************************  
  6.  cout<<endl<<menor<<endl;
  7. *************************

Citar
Cantidad de palabras a ingresar: 5
(Recuerde que solo pueden contener hasta 12 caracteres)

dsa
menor= dsa
sad
asd
menor= asd
adf
menor= adf
aas
menor= aas
dsa sad asd adf aas
aas


Y por cierto, ¿por qué usas puts con la consiguiente inclusión de la librería stdio en lugar del cout que previamente si has utilizado?.

¡¡¡¡ Saluditos! ..... !!!!


5  Programación / Programación C/C++ / Re: Archivo de audio en C en: 20 Julio 2014, 13:36
¿Que diferencia hay entre el código de ivancea96 y de leosansan? Ambos son muy parecidos a
Código
  1. system("MiCancion.mp3");
Lo que pasa que con "system" sólo se puede usar con windows. ¿O estoy equivocado?

Y respecto a la otra manera, ya he añadido el libwinmm.a al proyecto, pero no se como crear el res.h y res.rc de la forma que dice daryo, no lo encuentro en Dev ++ :/

Creo que todos los que te hemos puesto son para Windows.

Y respecto a lo segundo, una vez que has creado el proyecto y añadido la librería le das a File y en él a New y a su vez a Source File. Te preguntará si añadir al proyecto y le dices que sí y lo guardas como res.rc. Y análogamente con el otro fichero.


¡¡¡¡ Saluditos! ..... !!!!


6  Programación / Programación C/C++ / Re: Archivo de audio en C en: 20 Julio 2014, 12:58

Y otra pequeña variante:

Código
  1. #include <windows.h>
  2.  
  3. int main(void){
  4.  sndPlaySound("C:/WINDOWS/Media/notify.wav",0);
  5.  return 0;
  6. }

¡¡¡¡ Saluditos! ..... !!!!


7  Programación / Programación C/C++ / Re: Archivo de audio en C en: 19 Julio 2014, 18:53
Bien explicado, lo malo es que yo uso Dev++, y estoy mirando en "proyecto" pero no me deja escoger ninguna opción :/

"Creo" que en DeV++, una vez que creas un nuevo proyecto, vas a Project y en el mismo a Project Options y en la pestaña Parameters te sitúas en la columna Linker y ahí usas el botón Add Library Object y en la ventanita que se abre seleccionas el libwinmm.a o el que sea.

¡¡¡¡ Saluditos! ..... !!!!


8  Programación / Programación C/C++ / Re: Intersección linea - triángulo en: 19 Julio 2014, 18:36
En efecto es justo lo que yo estaba escribiendo en latex, no se me había ocurrido lo de las áreas, muy inteligente por tu parte.
..................................................

Gracias, gracias.

Sólo una pequeña observación, si alguno de los triángulos  PcorteT1T2, PcorteT2T3, PcorteT3T1 da de área cero es que el punto está "sobre" uno de los lados.

Un fuerte saludo avesudra.
9  Programación / Programación C/C++ / Re: Intersección linea - triángulo en: 19 Julio 2014, 18:20
Saludos Leosansan el problema que se plantea........................ aquí estamos hablando de Recta-Triángulo o rigurosamente hablando a Recta-Plano y solo en una región del plano determinada.

Considerando el problema en más profundidad el corte entre la Recta del rayo y el Plano del triángulo daría un punto de corte, que además habría que comprobar si está dentro del triángulo, cosa que es bastante complicada y que estoy ahora mismo mirando.
..................................


El que planteas es otro punto de vista, válido por supuesto.

Y si ese es el caso bastaría con hallar el punto de corte del rayo con el plano y después determinar si dicho punto es interior o no.

1.*

Para lo primero se resuelve el determinante formado por (x-x1,y-y1,z-z1), siendo (x1,y1,z1) uno de los tres vértices del triángulo y los dos vectores (vx,vy,vz) y (wx,wy,wz) correspondientes a, por ejemplo, T1T2 y T1T3. Ello nos dará la ecuación del plano de la forma típica Ax+By+Cz+D=0.

A continuación se sustituye la recta del rayo en forma paramétrica, donde (ax,ay,az) es el vector del rayo y (X1,Y1,Z1) un punto del mismo (no "problem" porque tenemos dos puntos del rayo por lo que podemos hallar tanto el vector  como un punto del mismo):

x=X1+ax*t
y=X1+ay*t
z=Z1+az*t

como decía, se sustituyen las ecuaciones anteriores en la ecuación del plano, de donde se obtiene el valor de "t" que sustituido en las anteriores ecuaciones paramétricas nos dan el valor del punto intersección del rayo con el plano.

2.*
Ahora queda determinar si es interior o exterior para lo cual hay multitud de métodos. Uno simple, ya que su uso sólo implica calcular áreas de triángulos cosa que es fácil con el producto "vectorial", consiste en calcular las áreas de los triángulos PcorteT1T2, PcorteT2T3, PcorteT3T1 y si es igual al área del triángulo T1T2T3 está dentro, si no está fuera.

Pero insisto es que es una de las diversa maneras de hacerlo, lo indico por la facilidad mencionada del calculo de las áreas.

Y esto dicho a toda pastilla, si me "asiento" un poco seguro que le buscamos la vuelta de una manera más sencilla.  ;)

¡¡¡¡ Saluditos! ..... !!!!



EDITADO: Con la correción de producto vectorial por escalar.  :silbar:
10  Programación / Programación C/C++ / Re: Archivo de audio en C en: 19 Julio 2014, 17:23
..........................................
Edito: Va genial, pero, ¿no se puede abrir el archivo con C, verdad? O sea, lo que hace system, es abrir el archivo con el reproductor de windows, para que se abriera en mi programa, tendría que crear yo un reproductor de audio, ¿me equivoco?
...................................
.

Antes que nada, me alegro que lo simple te funcione bien.

Conste que yo dije que era  un método sencillo, no el mejor. Pero sin usar las API de Windows ni librerías externas no se puede pedir más. Y si no, aquí estamos todos para aprender cosas nuevas.

Y sí, el archivo se abre con el reproductor que se corresponda con, en este caso, .mp3. Lo otro sería "crear" un reproductor y eso me suena a palabras mayores.

¡¡¡¡ Saluditos! ..... !!!!


11  Programación / Programación C/C++ / Re: Intersección linea - triángulo en: 19 Julio 2014, 16:21
Gracias por la respuesta, ahora estoy intentando aplicarlo en 3D, la cosa se complica

Un poquitín solamente.

Sin entrar demasiado a estudiar la poscición relativa de las rectas, por entrar de lleno en el meollo del problema, tendrías:

Código
  1. vector de la recta R1 R2:
  2. vx  = ( x2 - x1 ) ... vy  = ( y2 - y1 ) ... vz  = ( z2 - z1 )  
  3.  
  4. ecuacion continua de la recta R1 R2:
  5. ( x - x1 ) / vx = ( y - y1 ) / vy = ( z - z1 ) / vz
  6.  
  7. ecuaciones implicitas de la recta R1 R2:
  8. vz * x - z * vx = x1 * vz - z1 * vx (1)
  9. vz * y - z * vy = y1 * vz - z1 * vy (2)
  10.  
  11. vector de la recta T1 T2:
  12. wx  = ( X2 - X1 ) ... wy  = ( Y2 - Y1 ) ... wz  = ( Z2 - Z1 )  
  13.  
  14. ecuacion continua de la recta T1 T2:
  15. ( x - X1 ) / wx = ( y - Y1 ) / wy = ( z - Z1 ) / wz
  16.  
  17. ecuaciones implicitas de la recta T1 T2:
  18. wz * x - z * wx = X1 * wz - Z1 * wx (3)
  19. wz * y - z * wy = Y1 * wz - Z1 * wy (4)
  20.  
  21.  
  22.  if ( vx / wx = vy / wy = vz / wz )
  23.    son paralelas o coincidentes ==> no punto de corte
  24.  else
  25.    resolver las ecuciones (1), (2), (3) , por ejemplo por la regla de Cramer,
  26.    y sustituir el punto obtenido en (4). Si se cumple la igualdad de (4)
  27.    es que es el punto de corte, si no se cruzan y no hay corte.
  28.  

Espero que te sea útil.  ;)

¡¡¡¡ Saluditos! ..... !!!!


12  Programación / Programación C/C++ / Re: Archivo de audio en C en: 19 Julio 2014, 14:39
Buenas, hace nada hice una "alarma" en C, con temporizador. El post está por aquí ya que necesité ayuda. Ahora, me gustaría que cuando sonara, en vez del pitido ("\a"), sonase una canción o un archivo de audio que yo quiera, supongo que se podrá, y pediría que alguien me guiase un pelín o me de alguna ayuda sobre el tema.

Gracias de antemano.

Una forma simple sería:

Código
  1. system("MiCancion.mp3");

si está en la misma carpeta, si no tendrás que especificar la ruta, algo como

Código
  1. system("C:\\carpeta\\OtraCarpeta\\MiCancion.mp3");

¡¡¡¡ Saluditos! ..... !!!!


13  Programación / Programación C/C++ / Re: Intersección linea - triángulo en: 19 Julio 2014, 14:06
Hola, llevo un tiempo intentando dar con un algoritmo para detectar el punto de intersección (si existe) entre una linea (rayo) y un triángulo. ¿Alguno tiene implementado ya ésto?
Los parámetros a pasar serían:

Código
  1. Vec3f InterseccionRayoTriangulo(Vec3f T1, Vec3f T2, Vec3f T3, Vec3f R1, Vec3f R2)

Siendo T1, T2 y T3 los vértices del triángulo y R1 y R2, los puntos de la linea.

Alguna idea?

Supongo que T1 y compañía son tipo estrctura donde tienes los vértices de cada uno.

Lo primero es la nomenclatura:

Código
  1. a = ( y2 - y1 ) / ( x2 - x1 ) ///para recta R1 R2
  2. b = y1 - a * x1               ///para recta R1 R2
  3.  
  4. A = ( Y2 - Y1 ) / ( X2 - X1 ) ///para una de las Tini Tfinal
  5. B = Y1 - A * X1               ///para una de las Tini Tfinal
  6.  

donde con minúsculas represento a la recta R1 R2 y con mayúsculas a una de las rectas del triángulo y habrá que hacerlo para cada una de las tres rectas del triángulo, siempre con la misma R1 R2.

Y al meollo de la cuestión, dónde se cortan:

Código
  1. if ( a = A )
  2.  /** no se corta pues son paralelas // **/
  3. else
  4.  /** se cortan y el punto de corte es: **/
  5.  
  6.  x = ( B - b ) / ( a - A )
  7.  
  8.  y = ( a * B - A * b ) / ( a - A )

Así de simple. Existen otros métodos pero como supongo que trabajas con las coordenadas de los vértices me parece el mejor.

Espero no haberla pifiado al copiar los datos, no obstante lo he comprobado con un par de casos y va bien.

¡¡¡¡ Saluditos! ..... !!!!



14  Programación / Programación C/C++ / Re: Temporizadores en: 18 Julio 2014, 16:56
Sin conio.h pero con:

Código
  1. #include <windows.h>
  2. #include <iostream>
  3. #include <iomanip>
  4. #include <unistd.h>
  5. #include <pthread.h>

Creo un hilo para el contador, que sigo usando Sleep por ganseria en lugar de cronos, y poco más. Sólo que el "Quedan" podemos evitarlo ya que distorsiona un poco la impresión. Pero bueno, como intento sin usar conio y que no espere hasta que se dé al ENTER creo que vale.....y ojo que no soy especialista en hilos, así que las críticas suaves, please  ;)

Código
  1. using namespace std;
  2.  
  3. void *hilo1(void *X){
  4.  int i , ss = 10 ;
  5.  cout << "Creando hilo " << endl;
  6.  while( 1 ){
  7.    for( i = ss ; i>= 0 ; i-=2 ){
  8.      Sleep(2000);
  9.    cout << "   Quedan: " << setw(2) << i << " segundos.\r"  ;
  10.    }
  11.    if ( i == -1 ) break;
  12.  }
  13.  cout << endl << "Tiempo excedido\n" << endl;
  14.  exit(1) ;
  15. }
  16.  
  17. int main(){
  18.  int  algo = 0 ;
  19.  pthread_t hilo ;
  20.  pthread_create (& hilo , NULL , hilo1 , NULL );
  21.  cout << endl << "No te olvides del ENTER " << endl;
  22.  cin >> algo ;
  23.  cout << endl << endl << "algo = " << algo << endl;
  24.  return 0;
  25. }

¡¡¡¡ Saluditos! ..... !!!!


Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 87
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines