Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/10/2015, 14:22
scuvi96
 
Fecha de Ingreso: octubre-2014
Mensajes: 46
Antigüedad: 10 años
Puntos: 0
Problemas con switch

Muy buenas, esto es lo que tengo que hacer:

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)

(Formulas en el codigo)

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.

Esto es lo que yo tengo:

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

y este error me da al compilar:

Problema1Alberto.c: In function ‘main’:
Problema1Alberto.c:35:4: error: case label does not reduce to an integer constant
case "a":
^
Problema1Alberto.c:42:4: error: case label does not reduce to an integer constant
case "v":


Me podeis decir que tengo mal?

Muchas gracias