C/Visual C - Ejercicios de Arreglos y punteros

 
Vista:
sin imagen de perfil

Ejercicios de Arreglos y punteros

Publicado por Sebastián (31 intervenciones) el 06/12/2016 03:13:02
Hola saludos a toda la comunidad, espero me puedan ayudar con el siguiente ej, les agradeceria mucho
Los resultados de las últimas elecciones a alcalde en el pueblo x han sido los siguientes:
Distrito
Candidato A Candidato B Candidato C Candidato D
1 194 48 206 45
2 180 20 320 16
3 221 90 140 20
4 432 50 821 14
5 820 61 946 18


Escribir un programa que haga las siguientes tareas:
a) Ingresar los votos por teclado.
b) Imprimir la tabla anterior con cabeceras incluidas.
c) Calcular e imprimir el número total de votos recibidos por cada candidato y el porcentaje del total de votos emitidos. Asimismo, visualizar el candidato más votado.
d) Si algún candidato recibe más del 50 por 100 de los datos, el programa imprimirá un mensaje declarándole ganador.
e) Si ningún candidato recibe más del 50 por 100 de los datos, el programa debe imprimir el nombre de los dos candidatos más votados, que serán los que pasen a la segunda ronda de las elecciones.


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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include<conio.h>
#define DIM 5
void vtyg(int A[][DIM], int *mayor, int *mayor1, char *nombre,int *p, char *nombre1, float porc[], int *ban);
 
int main()
{
	char nombre, nombre1;
	int A[DIM][DIM],c,*p,j,i;
	int mayor=0, mayor1=0;
	float porc[4];
	int ban=0;
	for(i=0;i<DIM;i++)
	{
		A[i][0]=c++;
	}
 
	p=&A[0][1];
	printf("Ingrese los votos del Distrito 1\n");
	for(i=0;i<DIM-1;i++)
	{
		printf("Candidato %c ",65+i);
		scanf("%d",p);
		*p++;
	}
	p=&A[1][1];
	printf("Ingrese los votos del Distrito 2\n");
	for(i=0;i<DIM-1;i++)
	{
		printf("Candidato %c ",65+i);
		scanf("%d",p);
		*p++;
	}
	p=&A[2][1];
	printf("Ingrese los votos del Distrito 3\n");
	for(i=0;i<DIM-1;i++)
	{
		printf("Candidato %c ",65+i);
		scanf("%d",p);
		*p++;
	}
	p=&A[3][1];
	printf("Ingrese los votos del Distrito 4\n");
	for(i=0;i<DIM-1;i++)
	{
	printf("Candidato %c ",65+i);
	scanf("%d",p);
	*p++;
	}
	p=&A[4][1];
	printf("Ingrese los votos del Distrito 5\n");
	for(i=0;i<DIM-1;i++)
	{
		printf("Candidato %c ",65+i);
		scanf("%d",p);
		*p++;
	}
	printf("DISTRITOS   CANDIDATO A    CANDIDATO B    CANDIDATO C    CANDIDATO D\n");
	for(i=0;i<DIM;i++)
	{
		for(j=0;j<DIM;j++)
		{
			printf("%d\t\t",A[i][j]);
		}
		printf("\n");
	}
 
	 vtyg(A, &mayor, &mayor1, &nombre,p, &nombre1, porc, &ban);
	 getch();
}
 
void vtyg(int A[DIM][DIM], int *mayor, int *mayor1, char *nombre, int*p, char *nombre1, float porc[], int *ban)
{
	float vt=0;
	int tot=0;
	int i;
	*ban=0;
	//int ban=0;
	//float porc[4];
	int vot[4]= {};
	int	j;
	//int mayor=0, mayor1=0;
	//	printf("%f ", A[i][1]);
	//p=&A[0][1];
	/*for(i=0;i<=DIM-1;i++)
	{
		for(j=0;j<DIM-1;j++)
		{
			tot=tot+A[i][j];
			printf("Tot= %d\n", tot);
		}
	}*/
	printf("Tot= %d", tot);
	for(i=0;i<DIM-1;i++)
		{
		vot[0]+=A[i][1];
 
			//printf("%f ", vot[i]);
				//*p++;
		}
 
	for(i=0;i<DIM-1;i++)
		{
			vot[1]+=A[i][2];
		}
	for(i=0;i<DIM-1;i++)
		{
			vot[2]=A[i][3];
		}
	for(i=0;i<DIM-1;i++)
		{
			vot[3]=A[i][4];
		}
	for(i=0;i<4;i++)
	{
		vt+=vot[i];
	}
	printf("vt:");
	printf("%d\n", vt);
	for(i=0;i<4;i++)
	{
		porc[i]=((vot[i]*100.00)/vt);
		if(porc[i]>=50.00)
		{
			*ban=1;
		}
		printf("\n\nEl porcentaje del candidato %c es %d",65+i,porc[i]);
	}
	for(i=0;i<4;i++)
	{
		if(*ban==1)
		{
			printf("\n\nEl candidato ganador es %c", 65+i);
			*ban=0;
		}
 
		else
		{
 
			p=&A[0][1];
			for(i=0;i<DIM-1;i++)
			{
				j=65;
				if(*mayor<*p)
				{
					*mayor=*p;
					*nombre=j;
				}
			j++;
			*p++;
			}
 
		printf("\n\nEl primer candidato ganador  es: %d\n del distrito: %c", *mayor, *nombre);
		p=&A[0][1];
 
		for(i=0;i<DIM-1;i++)
		{
			int k=65;
			if((*mayor1<*p)&&(*p!=*mayor))
			{
				*nombre1=k;
				*mayor1=*p;
			}
		k++;
		*p++;
		}
		printf("\n\n El segundo candidato ganador es: %d del distrito: %c", *mayor1, *nombre1);
		}
	}
 
 
}

Este es mi codigo, en el ej debo usar punteros y funciones, tengo un problema , a la hora de que me impriman los promedios no me sale nada y la verdad no se en donde esta el error, y como puedo hacer la impresion de cuando existan dos candidatos que vayan a la segunda vuelta, me explico al compilar siempre me sale el mensaje con los candidatos ganadores, aunque solo exista un candidato ganador, ¿como puedo hacer ese control?

Gracias de antemano por su ayuda y tiempo
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

Ejercicios de Arreglos y punteros

Publicado por Jose Perez (1 intervención) el 09/11/2021 04:46:42
Hola amigo lograstes realizar todo el programa?
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

Ejercicios de Arreglos y punteros

Publicado por Arely (1 intervención) el 31/03/2022 02:52:00
Hola disulpa ando en las mismas alguien te llego a contestar?:(
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