C/Visual C - Ayuda ejercicio en C

 
Vista:
sin imagen de perfil

Ayuda ejercicio en C

Publicado por Victor (17 intervenciones) el 24/08/2016 17:10:51
Buenas, quería saber como mejorar mi código para que se parezca lo más posible a la solución que me dan en el enunciado. Pondré una imagen del enunciado de como quedaría la salida del programa. Mi "problema" es que mi programa cuenta cuantas veces esta repetido cada elemento de cada posicion del array pero no es exactamente como pone en el enunciado, a ver si me podéis echar una mano.

Enunciado:

ejercicio-c-lwp

Mi programa:

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//Ejercicio 2
/*
Escribe un programa que lea 10 enteros comprendidos entre 1 y 10, los almacene en un
vector y escriba por pantalla la cantidad de elementos de cada numero que contiene.
*/
 
#include <stdio.h>
 
 
int main(){
 
 
	int vec[10];
	int i, cont, k, l, aux, n;
 
	k = 0;
	l = 1;
	aux = 0;
	n = 0;
 
	for(i = 0; i < 10; i++){
 
		printf("Introduce un entero entre 1 y 10 (%i) : ",n);
		scanf("%i",&vec[i]);
 
		while(aux == 0){
			if(vec[i] > 0 && vec[i] < 11){
				aux = 1;
			}
			else{
				printf("Introduce un entero entre 1 y 10 (%i) : ",n);
				scanf("%i",&vec[i]);
				}
			}
			aux = 0;
			n++;
		}
 
		printf("\n");
		cont = 0;
 
		while(k < 10){
 
			while(l < 10){
 
				if(vec[k] == vec[l]){
					cont++;
				}
 
				l++;
			}
			if(k == 0){
				printf("Existen %i elementos del numero %i.\n",cont+1,vec[k]);
			}
			else {
				printf("Existen %i elementos del numero %i.\n",cont,vec[k]);
			}
 
			k++;
			cont = 0;
			l = 0;
 
 
	}
 
	printf("\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 Aarón Castillo
Val: 75
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda ejercicio en C

Publicado por Aarón Castillo (20 intervenciones) el 25/08/2016 00:19:45
La respuesta es sencilla.
Al momento de contar los elementos, estás considerando los repetidos.

Como ejemplo, imagina que tienes: 1,1,1.

A partir de la línea 42 y de acuerdo a tu código saldrían las siguientes impresiones:

Existen 3 elementos del número 1 (el 1 de la izquierda).
Existen 3 elementos del número 1 (el 1 del centro).
Existen 3 elementos del número 1 (el 1 de la derecha).

Esto sucede porque estás contando las repeticiones para todos los números sin importar si ya los habías contado antes o no.
Debes agregar a tu código una cláusula que indique que si el número que estás contando ya lo habías considerado previamente, deje de hacer el conteo y se pase al siguiente número.

Por otro lado, si es de tu interés, puedo sugerirte algunas cosas para que tu código sea más simple, por ejemplo, hay dos secciones de código en la que le pides al usuario que inserte un número; esto puede acomodarse para que sea una sola vez.
Quedo a tu disposición.
Saludos.
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