Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Division en funciones

Estas en el tema de Division en funciones en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/01/2016, 13:55
 
Fecha de Ingreso: octubre-2014
Mensajes: 46
Antigüedad: 9 años, 5 meses
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
  #2 (permalink)  
Antiguo 04/01/2016, 02:04
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Division en funciones

Te están pidiendo que pongas la introducción de datos:

Código C:
Ver original
  1. printf("Introduce el tiempo inicial en horas\n");
  2. scanf("%d",&tInicial);
  3. printf("Introduce el tiempo final en horas\n");
  4. scanf("%d",&tFinal);
  5. printf("Introduce el incremento de tiempo en horas\n");
  6. scanf("%d",&incremento);

y el código que pinta los resultados:

Código C:
Ver original
  1. do
  2. {
  3.   printf("La altura es %lf \n",Altura(t));
  4.   t+=incremento;
  5. }
  6. while(t<tFinal);

y:

Código C:
Ver original
  1. do
  2. {
  3.   printf("La velocidad es %lf m/s \n",Velocidad(t));
  4.   t+=incremento;
  5. }
  6. while(t<tFinal);

en funciones independientes.

La parte de introducir los datos te piden que tomes como referencia porque no quieren que uses variables globales. En este escenario, si una función ha de devolver más de un resultado existen dos opciones:
  • Usar estructuras para empaquetar los resultados pedidos
  • Que la función admita punteros, de forma que pueda modificar el valor de dichas variables

En tu caso concreto no esperan que uses estructuras, luego únicamente te queda la segunda opción.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: char, division, funcion, funciones, int, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.