C/Visual C - programa en C para calificar la calidad de la comida

 
Vista:

programa en C para calificar la calidad de la comida

Publicado por Ruben Gallardo (4 intervenciones) el 25/07/2020 05:59:33
Se pidió a 40 estudiantes que calificaran la calidad de la comida del casino en una escala del 1 al 10 (1 es muy mala y 10 excelente).
Escriba un programa en C que pida las 40 respuestas y luego muestre un resumen del resultado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#include<stdlib.h>
#define MAX 40
int main(){
	int arreglo [MAX], i, n, contador;
	contador = 0;
 
	for(i = 0; i < MAX; i++){
		printf("\nEscriba un calificaci\242n: ", i);
		scanf("%d",&arreglo[i]);
 
	}
	printf("Digite el numero que quiere saber cuantas veces se repite: ");
	scanf("%d",&n);
	for(i = 0; i < MAX; i++){
		if (n == arreglo[i]){
			contador++;
		}
	}
 
	printf("El elemento %d, se repite %d",n,contador);
	return EXIT_SUCCESS;
 
}
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

programa en C para calificar la calidad de la comida

Publicado por Ruben Gallardo (4 intervenciones) el 25/07/2020 22:09:07
eso es lo que tengo hasta ahora si alguien podria ayudarme
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 Kabuto
Val: 21
Ha aumentado su posición en 3 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

programa en C para calificar la calidad de la comida

Publicado por Kabuto (5 intervenciones) el 26/07/2020 00:20:39
¿Y en que consiste el resumen del resultado?

¿Quizá en mostrar cuántas veces se ha dado una valoración de 1, cuántas veces se ha valorado 2, etc...?

Si se trata de eso, puedes usar otro arreglo de 10 posiciones, que puedes llamar "valoraciones" por ejemplo.
Cada posición representaría una de las valoraciones, la posición [0] sería para "valoración 1", posición [1] para "valoración 2", etc...

Entonces recorres el array de calificaciones, consultas el valor de cada posición e incrementas el valor correspondiente en el arreglo de valoraciones.

Si encuentras una calificación de 1, incrementas la posición [0] (valoraciones[0]++;)
Si encuentras un 2, pues incrementas posición 1 (valoraciones[1]++;)
..
...
Si encuentras un 10, pues incrementas posición 9 (valoraciones[9]++;)

Así ya tendrías contadas todas las valoraciones, solo quedaría recorrer este último array y mostrar resultados:

1
2
3
for (int i = 0; i < 10; i++) {
    printf("Hay %d valoraciones para la calificación de %d", valoraciones[i], (i+1));
}
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

programa en C para calificar la calidad de la comida

Publicado por Ruben Gallardo (4 intervenciones) el 26/07/2020 00:40:13
Asi es amigo de eso se trata, voy a añadir lo que me mandaste, muchas gracias!!!!!

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
#include<stdio.h>
#include<stdlib.h>
#define MAX 40
int main(){
	int arreglo [MAX], i, n, contador;
	contador = 0;
	int vec[]=(1,2,3,4,5,6,7,8,9,10);
	printf("El valor de la posicion 1 es: %i.\n\n",v[0]);
 
		for(i = 0; i < 10; i++) {
    printf("Hay %d valoraciones para la calificaci\242n de %d", valoraciones[i], (i+1));
}
 
	for(i = 0; i < MAX; i++){
		printf("\nEscriba un calificaci\242n: ", i);
		scanf("%d",&arreglo[i]);
 
	}
	printf("Digite el numero que quiere saber cuantas veces se repite: ");
	scanf("%d",&n);
	for(i = 0; i < MAX; i++){
		if (n == arreglo[i]){
			contador++;
		}
	}
 
	printf("El elemento %d, se repite %d",n,contador);
	return EXIT_SUCCESS;
 
}

Me tira error en int vec amigo puedes ayudarme
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

programa en C para calificar la calidad de la comida

Publicado por Ruben Gallardo (4 intervenciones) el 26/07/2020 01:11:29
me dice que ahi en el [] hay un error
printf("Hay %d valoraciones para la calificación de %d", valoraciones[i], (i+1));

13 77 [Error] subscripted value is neither array nor pointer nor vector
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 Kabuto
Val: 21
Ha aumentado su posición en 3 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

programa en C para calificar la calidad de la comida

Publicado por Kabuto (5 intervenciones) el 26/07/2020 13:38:42
Porque no has declarado ningún array con el nombre de "valoraciones".
Luego a parte tienes código de cosas que en principio no tienen que ver con el enunciado.

Mira, sería algo así:

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<stdio.h>
#include<stdlib.h>
#define MAX 40
int main() {
	int arreglo[MAX];
	int valoraciones[] = {0,0,0,0,0,0,0,0,0,0};
 
	//Pedimos calificaciones
	for(int i = 0; i < MAX; i++) {
		printf("\nEscriba un calificaci\242n: ");
		scanf("%d",&arreglo[i]);
	}
 
	//Contamos cuantas veces se repiten las valoraciones
	for(int i = 0; i < MAX; i++) {
		switch(arreglo[i]) {
		case 1:
			valoraciones[0]++;
			break;
		case 2:
			valoraciones[1]++;
			break;
		case 3:
			valoraciones[2]++;
			break;
		case 4:
			valoraciones[3]++;
			break;
		case 5:
			valoraciones[4]++;
			break;
		case 6:
			valoraciones[5]++;
			break;
		case 7:
			valoraciones[6]++;
			break;
		case 8:
			valoraciones[7]++;
			break;
		case 9:
			valoraciones[8]++;
			break;
		case 10:
			valoraciones[9]++;
			break;
		}
	}
 
	//Mostramos resultados
	printf("\n\t\tRESULTADOS\n");
	for (int i = 0; i < 10; i++)
		printf("Hay %d valoraciones para la calificaci\242n de %d\n", valoraciones[i], (i+1));
 
	return 0;
}

Lo he puesto con un switch porque así se entiende mejor la lógica que se está siguiendo. Pero en realidad podría simplificarse el código de otro modo.
Aprovechando que las calificaciones que se van a introducir van de 1 a 10 y que cada calificación la contamos en la posición anterior a su valor:
- las calificaciones de valor 1, las contamos en la posición 0, que es 1 - 1
- las calificaciones de valor 2, las contamos en la posición 1, que es 2 - 1..

Es decir, si a cada valor, entre 1 y 10, le restamos -1 obtenemos el valor de la posición donde se ha de contar cuántas veces se repite dicho valor, pues el switch podemos quitarlo y simplificar el código así:

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
#include<stdio.h>
#include<stdlib.h>
#define MAX 40
int main() {
	int arreglo[MAX];
	int valoraciones[] = {0,0,0,0,0,0,0,0,0,0};
 
	//Pedimos calificaciones
	for(int i = 0; i < MAX; i++) {
		printf("\nEscriba un calificaci\242n: ");
		scanf("%d",&arreglo[i]);
	}
 
	//Contamos cuantas veces se repiten las valoraciones
	for(int i = 0; i < MAX; i++) {
		valoraciones[arreglo[i] - 1]++; //Restando -1 al valor, tenemos la posición que hay que incrementar
	}
 
	//Mostramos resultados
	printf("\n\t\tRESULTADOS\n");
	for (int i = 0; i < 10; i++)
		printf("Hay %d valoraciones para la calificaci\242n de %d\n", valoraciones[i], (i+1));
 
	return 0;
}
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

programa en C para calificar la calidad de la comida

Publicado por Rodrigo (119 intervenciones) el 26/07/2020 16:02:54
Tambien es posible evitar el segundo ciclo y hacer la asignacion del arreglo valoraciones justo despues de haber pedido el numero, en el primer ciclo.

Si el usuario ingresa un numero fuera del rango 1 - 10 el switch funciona mejor, la asignacion directa simplificada fracasaria por usar un indice invalido, por lo que parece mas seguro chequear con un if antes de hacer la asignacion.
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