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

Problemas con switch

Estas en el tema de Problemas con switch en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/10/2015, 14:22
 
Fecha de Ingreso: octubre-2014
Mensajes: 46
Antigüedad: 9 años, 6 meses
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
  #2 (permalink)  
Antiguo 28/10/2015, 14:35
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: Problemas con switch

Sí, debes poner el valor del carácter entre comillas simples, no entre comillas dobles.
Código C:
Ver original
  1. switch(ejemplo){
  2.     case 'a':
  3.        /* Código de a */
  4.     break; /*Se acaba lo que hace cuando ejemplo vale a */

Etiquetas: char, funcion, int, programa, string, switch
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 06:17.