C/Visual C - Caso switch

 
Vista:
sin imagen de perfil
Val: 17
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Caso switch

Publicado por Javier (9 intervenciones) el 05/12/2019 19:41:43
No se que falla en este programa, me dice el compilador que hay un valor duplicado, aunque ponga <= en las espresiones tampoco funciona. Lo he conseguido hacer con if's. Quiza halla una condicion de case que no nocozco. A ver si me podeis ayudar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Calcular la nota media y asignarle una letra.
 
 
# include <stdio.h>
 
main()
{
 
int x, y, z, j;
int media;
printf("Dame cuatro entreros: \n");
scanf("%d" "%d" "d" "d", &x,&y, &z, &j);
 
media= (x+y+z+j)/4;
 
switch(media)
{
	case (0<media<59):
	     printf("E");
	     break;
    case (60<media<69):
	     printf("D");
	    break;
	case (70<media<79):
	     printf("C");
	     break;
	case (80<media<89):
	     printf("B");
	     break;
    case (90<media<100):
	     printf("A");
	     break;
    default:
	     printf("Nota no valida\n");
}
 
 
system("pause");
return 0;
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Caso switch

Publicado por Rodrigo (119 intervenciones) el 06/12/2019 02:24:24
La sintaxis no corresponde al lenguaje C.
Un Switch usa constantes en cada opcion.
Si esto no te sirve, usa una secuencia de if y else if ..
y dado que los numeros son enteros, puedes hacer solo 1 comparacion por if.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Caso switch

Publicado por Javier (9 intervenciones) el 06/12/2019 19:16:28
En resumen mi pregunta es, dada una nota media (entera) calculada con numeros enteros (int). No se puede utilizar un switch para meterlo dentro de un rango de valores?
El problema lo tengo resuelto con if,s. Pero quiero resolverlo con un swtich si es posible. Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Caso switch

Publicado por Rodrigo (119 intervenciones) el 07/12/2019 03:56:13
No se pueden poner rangos en los switch,
Osea, puedes hacerlo poniendo todos los casos posibles,
pero para que tenemos computadores que iteran sin cansarse si vas a programarlos asi, cansandote tu.
Una posible solucion es modificar los datos para poder usar un switch.
Restale 50 a la media y luego divide por 10, solo podras tener 5 valores posibles y todos ellos te permiten deducir la nota.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar