Ejercicios de Programación

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#31 Mensaje por leosan » 29/07/2012 3:12 am

Sorancio escribió:La fuerza es inmediata, se aplica una fuerza de xN y el cuerpo se mueve. Es física elemental.
Como es de física elemental, tengo todos los datos para encarar el problema:
x=v0·cosq ·t
y=v0·senq ·t-g·t2/2
ymax. ymax, parabola etc
Pero la fuerza que le imprime la velocidad inicial al tiro parabólico nunca puede ser instantánea, actúa durante un tiempo t en el cual le comunica un impulso a lo largo de la longitud de una pistola cañón pala de ping-pong o lo que sea que impulse al proyectil......por cierto, el valor negativo es para despreciar errores ¿no?, ya que no tenemos en cuenta la velocidad del viento ni la resistencia del aire.

Avatar de Usuario
Sorancio
Mensajes: 1157
Registrado: 29/05/2009 12:42 pm
Ubicación: España
Contactar:

#32 Mensaje por Sorancio » 29/07/2012 7:55 am

En física elemental la fuerza es instantánea.

Por cierto, ¿a qué valor negativo te refieres?
Mi página web (en inglés): http://kmr.conscell.net/

Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#33 Mensaje por leosan » 29/07/2012 9:56 am

Sorancio escribió:Por cierto, ¿a qué valor negativo te refieres?

Código: Seleccionar todo

5 
28 
200 
512 
2048 
9995 
1000000 
16 
0 
-5 <========= a este
45 
28
12225  
...Sólo me queda esperar a la respuesta....
Por cierto, ¿ más de 300 lecturas y nadie más se anima a participar y aportar ideas ? . Animo¡ ¡ ¡ , que todo es empezar. :wink: :wink: :wink: :wink: :wink: :wink:

Avatar de Usuario
Sorancio
Mensajes: 1157
Registrado: 29/05/2009 12:42 pm
Ubicación: España
Contactar:

#34 Mensaje por Sorancio » 29/07/2012 11:57 am

Si el desplazamiento son 5m en el sentido contrario, ¿qué fuerza se ha de aplicar? :)
Mi página web (en inglés): http://kmr.conscell.net/

Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#35 Mensaje por leosan » 29/07/2012 1:03 pm

leosan escribió:...Sólo me queda esperar a la respuesta....
E incisto, ¿ más de 350 lecturas y nadie más se anima a participar y/o aportar ideas ? . :cry: :cry: :cry: :cry:

Pantalàimon_
Mensajes: 1345
Registrado: 17/07/2007 2:38 am

#36 Mensaje por Pantalàimon_ » 31/07/2012 12:58 am

Debo tener las neuronas muy oxidadas después de volver de vacaciones. Pues el enunciado de B me desconcierta lo mire como lo mire. Si con una pala de ping pong se cambia el momento de una pelota instantaneamente la fuerza aplicada debe ser infinita.

Un saludo!

Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#37 Mensaje por leosan » 31/07/2012 2:51 am

BIENVENIDO
Pantalàimon_ escribió:Debo tener las neuronas muy oxidadas después de volver de vacaciones. Pues el enunciado de B me desconcierta lo mire como lo mire. Si con una pala de ping pong se cambia el momento de una pelota instantaneamente la fuerza aplicada debe ser infinita.

Un saludo!
De ahí mi comentario de un anterior post:la fuerza que le imprime la velocidad inicial al tiro parabólico nunca puede ser instantánea, actúa durante un tiempo t en el cual le comunica un impulso a lo largo de la longitud de una pistola cañón pala de ping-pong o lo que sea que impulse al proyectil......con lo que me faltaría algun dato mas para resolver el problema

Avatar de Usuario
Sorancio
Mensajes: 1157
Registrado: 29/05/2009 12:42 pm
Ubicación: España
Contactar:

#38 Mensaje por Sorancio » 31/07/2012 6:09 am

Para los que no entienden simplicidad pongamos que t = 1 siendo F = I.
Mi página web (en inglés): http://kmr.conscell.net/

Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#39 Mensaje por leosan » 31/07/2012 9:36 am

Lo he planteado introduciendo los datos con fprintf, en lugar de fputs, de una forma similar a la que rir me indico en el ejercicio posterior.Pero no me imprime en este caso los x_max y supongo que los lee mal, ya que los resultados de la fuerza no coincide con los calculados a mano ????? Me he tomado la libertad de tomar el tiempo como 0.1sg, ya que, si la memoria no me flaquea, en el caso de una raqueta de tenis es de 0.0.1sg. De entrada para no complicarme la vida no he tenido en cuenta el valor negativo, que se correspondería con un angulo mayor de 90 grados.

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>
#define NOM_ARCHIVO  "c:\\ping pong.txt"
#define NUM_ELEM  13
#include <math.h>
#define pi 3.14159226
int main(void)
{
    FILE *entrada;
    float x_max [NUM_ELEM];
    float m=0.0028,t=0.1,m_t,ang_grad=35,ang_rad,f,g=9.81;
    ang_rad=ang_grad*pi/180;
    m_t=m/t;
    int i;

    if ((entrada = fopen(NOM_ARCHIVO, "w")) == NULL)
       {
          perror(NOM_ARCHIVO);
          return EXIT_FAILURE;
       }
    fprintf(entrada, "5\n");
    fprintf(entrada, "28\n");
    fprintf(entrada, "200\n");
    fprintf(entrada, "512\n");
    fprintf(entrada, "2048\n");
    fprintf(entrada, "9995\n");
    fprintf(entrada, "100000\n");
    fprintf(entrada, "16\n");
    fprintf(entrada, "0\n");
    /*fprintf(entrada, "-5\n");*/
    fprintf(entrada, "45\n");
    fprintf(entrada, "28\n");
    fprintf(entrada, "12225\n");
    fclose(entrada);
    /* */
    if ((entrada = fopen(NOM_ARCHIVO, "r")) == NULL)
        {
          perror(NOM_ARCHIVO);
          return EXIT_FAILURE;
        }
   i = 0;
   while (fscanf(entrada, "%g", x_max + i) == NUM_ELEM)
        {
          printf("x_max[%d]= %g\n", i, x_max[i]);
          i++;
        }
/* x_max = v^2/g sin (2 ang_rad ) */
/*F t= m v ==> F = m/t sqrt (x_max g/sin (2 ang_rad )*/
    for (i=0;i<13;i++)
        {
            f=m_t*sqrt((x_max[i]*g)/(sin (2*ang_rad)));
                    printf ("\nFuerza [%d] = %g",i,f);
        }

   fclose(entrada);
   return EXIT_SUCCESS;
}
Reconozco que me parece "tosco" introducir los datos uno a uno en lugar de usar un for y "tomar" los valores, pero hasta ahí llegan mis escasos conocimientos de ficheros.... por ahora
Gracias otra vez Sorancio por los ejercicios, aunque parece que junto con Masakre somos los únicos en responder, debe interesar por el número de lecturas ¡ ¡ ¡ más de 500 ¡ ¡ ¡

Pantalàimon_
Mensajes: 1345
Registrado: 17/07/2007 2:38 am

#40 Mensaje por Pantalàimon_ » 31/07/2012 10:49 am

Puedes usar fgets para ir leyendo lineas. Así:

Código: Seleccionar todo

char cad[N];
/* ... */
fgets( cad, N, entrada )
En internet puedes encontrar que la función retornará NULL si se encuentra con EOF(end of file) y no ha leído ningún carácter. Por tanto, es directo encontrar la condición del bucle para que vaya leyendo linea a linea un fichero hasta llegar al final.

Para convertir la cadena de caracteres a un número se puede usar sscanf( cuidado, con dos eses). Esta función es como scanf pero en vez de leer del propio teclado, lee de una cadena de caracteres. Busca información.
leosan escribió:aunque parece que junto con Masakre somos los únicos en responder, debe interesar por el número de lecturas ¡ ¡ ¡ más de 500 ¡ ¡ ¡
Yo apostaría que el número de personas que leen el hilo no es tan grande. Sólo que a estos pocos que lo miran les gusta mucho pulsar F5.

Un saludo!

Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#41 Mensaje por leosan » 31/07/2012 12:48 pm

Pantalàimon_ escribió:Puedes usar fgets para ir leyendo lineas. Así:

Código: Seleccionar todo

char cad[N];
/* ... */
fgets( cad, N, entrada )
Para convertir la cadena de caracteres a un número se puede usar sscanf( cuidado, con dos eses). Esta función es como scanf pero en vez de leer del propio teclado, lee de una cadena de caracteres. Busca información.
Lo aplicare al nuevo código que estoy preparando,merci.
Pantalàimon_ escribió:Yo apostaría que el número de personas que leen el hilo no es tan grande. Sólo que a estos pocos que lo miran les gusta mucho pulsar F5
....Con lo animado que andaba yo estos días......:wink: :wink: :wink: :wink:
Lo repito, soy primerizo en esto de ficheros, pero ahí va el código funcionando.... o eso me parece a mí......, aunque no comprendo por qué el anterior no lo hacia. Seguiré estudiando el tema de ficheros, estoy verde:

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>
#define NOM_ARCHIVO  "c:\\ping pong.txt"
#define NUM_ELEM  13
#include <math.h>
#define pi 3.14159226
int main(void)
{
    FILE *entrada;
    float x_max [NUM_ELEM];
    float m=0.0028,t=0.1,m_t,ang_grad=35,ang_rad,f,g=9.81;
    ang_rad=ang_grad*pi/180;
    m_t=m/t;
    int i;
    if ((entrada = fopen(NOM_ARCHIVO, "w")) == NULL)
       {
          perror(NOM_ARCHIVO);
          return EXIT_FAILURE;
       }
    fprintf(entrada, "5\n");
    fprintf(entrada, "28\n");
    fprintf(entrada, "200\n");
    fprintf(entrada, "512\n");
    fprintf(entrada, "2048\n");
    fprintf(entrada, "9995\n");
    fprintf(entrada, "100000\n");
    fprintf(entrada, "16\n");
    fprintf(entrada, "0\n");
    /*fprintf(entrada, "-5\n");*/
    fprintf(entrada, "45\n");
    fprintf(entrada, "28\n");
    fprintf(entrada, "12225");
    fclose(entrada);
    if ((entrada = fopen(NOM_ARCHIVO, "r")) == NULL)
        {
          perror(NOM_ARCHIVO);
          return EXIT_FAILURE;
        }
   i = 0;
   while (! feof(entrada))
        {
            fscanf(entrada, "%g", x_max + i);
            printf("x_max[%d]= %g\n", i, x_max[i]);
            i++;
         }
/* x_max = v^2/g sin (2 ang_rad ) */
/*F t= m v ==> F = m/t sqrt (x_max g/sin (2 ang_rad )*/
    for (i=0;i<12;i++)
        {
                f=m_t*sqrt((x_max[i]*g)/(sin (2*ang_rad)));
                printf ("\nFuerza [%d] = %g",i,f);
        }

   fclose(entrada);
   return EXIT_SUCCESS;
}
Un saludo!

Pantalàimon_
Mensajes: 1345
Registrado: 17/07/2007 2:38 am

#42 Mensaje por Pantalàimon_ » 31/07/2012 2:28 pm

Vale, sólo había leído tu código deprisa y no me había fijado. ¡¡Tu duda es de como crear el fichero de entrada!! Es muy fácil: abres un editor de texto/bloc de notas, copias los números de la entrada que escribió Sorancio, los pegas y guardas el fichero.

El ejercicio no pide generar el fichero de entrada. Se presupone que tienes el fichero de entrada y debes crear el programa que lea el fichero y con esto te muestre por pantalla los resultados adecuados. Si modificas el fichero(con un editor de texto) el programa te dará otra salida pero -atención- el programa en si no debe crear el fichero de entrada.

Por cierto, ten en cuenta lo que dijo Sorancio sobre el uso de feof.

Un saludo!

Masakre
Mensajes: 249
Registrado: 06/06/2012 10:52 am

#43 Mensaje por Masakre » 31/07/2012 9:07 pm

Pantalàimon_ escribió:Yo apostaría que el número de personas que leen el hilo no es tan grande. Sólo que a estos pocos que lo miran les gusta mucho pulsar F5.

Un saludo!
Impactante el enlace :shock: . . .

Aprovechó para reincidir en el problema que tuve con anterioridad. A ver si alguien puede ayudarme.
Sorancio, sí hice eso último. Lo declaré como string, pero no compila correctamente :roll: .

Avatar de Usuario
Sorancio
Mensajes: 1157
Registrado: 29/05/2009 12:42 pm
Ubicación: España
Contactar:

#44 Mensaje por Sorancio » 31/07/2012 10:29 pm

@Masakre

Si algo no compila correctamente y quieres que te ayude debes poner:

1) Las líneas donde no compila (si no compila la línea 10 pon de la 1 a la 20).
2) El mensaje que lanza el compilador.

Muchas veces las cosas no compilarán (y más en C++) así que tenéis que aprender a leer que dice el compilador.
Mi página web (en inglés): http://kmr.conscell.net/

Avatar de Usuario
leosan
Mensajes: 730
Registrado: 19/04/2012 8:35 am
Ubicación: GRAN CANARIA

#45 Mensaje por leosan » 01/08/2012 2:15 am

"Pantalàimon_":Es muy fácil: abres un editor de texto/bloc de notas, copias los números de la entrada que escribió Sorancio, los pegas y guardas el fichero.
¡ ¡ Hasta ahí llego¡ ¡ ¡ ¡ Es lo que hice en un ejercicio anterior,pero mi duda era sobre crear el archivo de forma interactiva ...por aprender.....
Por cierto, ten en cuenta lo que dijo Sorancio sobre el uso de feof.
Tenido en cuenta lo he.:wink: :wink: :wink: :wink:
Y para los que no vieron la url que había con el F5:
http://www.youtube.com/watch?v=245C8E_WAI8
Un saludo!

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 5 invitados