Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/01/2016, 13:55
scuvi96
 
Fecha de Ingreso: octubre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Division en funciones

Hola, el caso es que se me pide esto:

Para tomar temperaturas y presiones atmosféricas se utilizan globos climatológicos que están
llenos de helio (menos denso que el aire). Según este helio sea más o menos denso por efecto de
la temperatura, el globo bajará o subirá de altura. Por el día, el globo sube debido al calentamiento
del gas (menos densidad), por la noche baja. El comportamiento de la altura del globo en las
primeras 48 horas desde el lanzamiento viene dado por (t viene expresado en horas y no puede
pasar de 48):
𝐴𝐴𝐴 (𝑡) = −0,13 × 𝑡4 + 12 × 𝑡3 − 378 × 𝑡2 + 4100 × 𝑡 + 219.55
La velocidad de subida o bajada viene dada por:
𝑉𝑉𝑉 (𝑡) = −0.48 × 𝑡2 + 456 × 𝑡 − 45
Se trata de hacer un programa en ANSI C que dé al usuario, de acuerdo a que haya pedido altura
o velocidad, y como parámetros de entrada, el tiempo inicio, el de final y el incremento en horas; los
resultados previstos, sabiendo que el tiempo no puede ser inferior a cero ni superior a 48 horas.

El tiempo dado al programa tendrá formato entero. Los resultados se darán en formato de doble flotante (ten en cuenta estos formatos y haz las conversiones explícitas que necesites).

Como ves debes tomar como referencia el programa anterior. Dividirás el programa en
funciones: una de entrada a la que se pasan por referencia los datos inicial, final y el paso.
Otra de cálculo a la que pasarás esos datos por valor y pintaran los resultados.





Bien, mi programa anterior es este:

Código C++:
Ver original
  1. //Ejercicio1
  2.  
  3. #include<stdio.h>
  4. #include<math.h>
  5. #include<string.h>
  6. double Velocidad(int t);
  7. double Altura(int t);
  8. int main()
  9. {
  10.  
  11.     int tInicial; //tiempo incial
  12.     int tFinal; //tiempo final
  13.     int incremento;
  14.     printf("Introduce el tiempo inicial en horas\n");
  15.     scanf("%d",&tInicial);
  16.     printf("Introduce el tiempo final en horas\n");
  17.     scanf("%d",&tFinal);
  18.     printf("Introduce el incremento de tiempo en horas\n");
  19.     scanf("%d",&incremento);
  20.     int dif;
  21.     dif=tFinal-tInicial;
  22.  
  23.     if(dif<0 || dif>48 || tInicial<0 || tFinal>48)
  24.     {
  25.         printf("Introduce tiempos válidos\n");
  26.     }
  27.     else
  28.     {
  29.         char funcion;
  30.         printf("Introduce v (velocidad) o a (altura) según la función que quieras\n");
  31.         scanf("%s",&funcion);
  32.         int t=tInicial;
  33.         switch(funcion)
  34.         {
  35.             case 'a':
  36.                 do
  37.                 {
  38.             printf("La altura es %lf \n",Altura(t));
  39.                 t+=incremento;
  40.                 }
  41.                 while(t<tFinal);
  42.                 break;
  43.             case 'v':
  44.                 do
  45.                 {
  46.             printf("La velocidad es %lf m/s \n",Velocidad(t));
  47.                 t+=incremento; 
  48.                 }
  49.                 while(t<tFinal);
  50.                 break; 
  51.             default:
  52.                 {
  53.             printf("Introduce v (velocidad) o a (altura)\n");
  54.                 }  
  55.         }
  56.     }
  57. }
  58. double Velocidad(int t)
  59.     {
  60.         return -0.48*(t*t)+456*t-45;
  61.        
  62.     }
  63.  
  64. double Altura(int t)
  65. {
  66.     return -0.13*(t*t*t*t)+12*(t*t*t)-378*(t*t)+4100*t+219.55;
  67.  
  68. }


Y no se como hacer eso que está en negrita en el enunciado.

Muchas gracias