Dev - C++ - Votaciones

 
Vista:
sin imagen de perfil

Votaciones

Publicado por Miguel Angel (1 intervención) el 23/11/2022 17:24:49
Hola!
Necesito una ayuda con este código ya que en el menú en la opción 4 los resultados se presentan de forma errónea en un caso inclui 3 candidatos a,b y c, luego vote por la persona "c" y me mostró de forma repetida la letra c, necesito que aparezca de forma descendente pero no logro entender que error estoy cometiendo.
Se que podria realizar mas funciones pero estoy empezando con algo basico. (Ademas que el monton de if que puse se que los podria hacer con switch)

Les agradecería mucho su ayuda!

Aquí les presento el código.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define letras 20

void cargar();
void presentacion();
void despedida();
int candidatos;
int i,j;
int tarjeton;
int votos[letras];

void cargar(char nombre[10][letras]){
int i,j;
do{
printf("\nIngrese el numero de candidatos:");
scanf("%i",&candidatos);
}while ((candidatos<2)||(candidatos>10));
printf("\n");
for(i=0;i<candidatos;i++){
j=0;
printf("Digite nombre del candidato %i: ",i+1);
scanf("%s",&nombre[i][j]);
j++;
}
}

void presentar(char nombre[10][letras]){
for(j=0;j<candidatos;j++){
votos[j]=0;
}
system("cls");
presentacion();
printf("\n\tNo.Tarjeton\t\tNombre\t\tVotos\n");
for(i=0;i<candidatos;i++){
j=0;
printf("\t%i\t\t\t%s\t\t%d\n",i+1,nombre[i],votos[j]);
j++;
}
}


int main(){
int opcion,can,aux;
char nombre[candidatos][letras];
char opcionsn;
char cadenaaux[letras];
do{
system("cls");
presentacion();
printf("\n\t\t\t1. Registro de candidatos\n");
printf("\t\t\t2. Listado de candidatos\n");
printf("\t\t\t3. Proceso de elecci%cn\n",162);
printf("\t\t\t4. Resultados\n");
printf("\t\t\t5. Licencia del programa\n");
printf("\t\t\t6. Salir del programa\n");
printf("\n********************************************************************\n");

do{//Ciclo para repetir si la persona ingresa una opcion erronea
printf("\n Digite una opci%cn del men%c: ",162,163);
scanf("%i",&opcion);
}while((opcion>6)||(opcion<1));
switch(opcion){

case 1:
system("cls");
presentacion();
do{
cargar(nombre);
printf("\nDesea volver al men%c principal(S/N): ",163);
scanf("%s",&opcionsn);
}while((opcionsn=='n')||(opcionsn=='N'));
printf("Volviendo al men%c principal",163);
Sleep(2000);
break;

case 2:
presentar(nombre);
printf("\nEsperando revisi%cn,presione una tecla para volver al men%c principal",162,163);
getch();
printf("\nVolviendo al men%c principal",163);
Sleep(2000);
break;
case 3:
system("cls");
presentacion();
printf("\n\tNo.Tarjeton\t\tNombre\n");
for(i=0;i<candidatos;i++){
printf("\t[%i]\t\t\t%s\n",i+1,nombre[i]);
}

do{
printf("\nIngrese el numero del tarjeton para votar: ");
scanf("%i",&tarjeton);

if(tarjeton==1){
votos[0]=votos[0]+1;
}else{
if(tarjeton==2){
votos[1]=votos[1]+1;
}else{
if(tarjeton==3){
votos[2]=votos[2]+1;
}else{
if(tarjeton==4){
votos[3]=votos[3]+1;
}else{
if(tarjeton==5){
votos[4]=votos[4]+1;
}else{
if(tarjeton==6){
votos[5]=votos[5]+1;
}else{
if(tarjeton==7){
votos[6]=votos[6]+1;
}else{
if(tarjeton==8){
votos[7]=votos[7]+1;
}else{
if(tarjeton==9){
votos[8]=votos[8]+1;
}else{
if(tarjeton==10){
votos[9]=votos[9]+1;
}
}
}
}
}
}
}
}
}
}


for(i=0; i<candidatos; i++){
for(j=0; j<(candidatos-1)-i;j++){
if(votos[j]<votos[j+1]){
aux=votos[j];
votos[j]=votos[j+1];
votos[j+1]=aux;

strcpy(cadenaaux,nombre[j+1]);
strcpy(nombre[j+1],nombre[j]);
strcpy(nombre[j],cadenaaux);
}
}
}

printf("\nDesea ingresar otro voto(S/N)? ");
scanf("%s",&opcionsn);
}while((opcionsn=='s')||(opcionsn=='S'));
printf("\nVolviendo al men%c principal",163);
Sleep(2000);
break;

case 4:
system("cls");
presentacion();
printf("\n\tNo\t\t\tNombre\t\tVotos\n");
for(i=0;i<candidatos;i++){
printf("\t%i\t\t\t%s\t\t%i\n",i+1,nombre[i],votos[i]);
}
printf("\nEsperando revisi%cn,presione una tecla para volver al men%c principal",162,163);
getch();
printf("\nVolviendo al men%c principal",163);
Sleep(2000);
break;
case 6:
system("cls");
presentacion();
despedida();
}
}while(opcion!=6);

return 0;
}

//PRESENTACION
void presentacion(){
printf("\n*********************************************************************\n");
printf("\n\t\t\tELECCIONES DEL ESTUDIANTE MAS POPULAR DEL SALON\n");
printf("\n*********************************************************************\n");
}

//DESPEDIDA
void despedida(){
printf("\nFinalizando programa\n");
Sleep(2000);
printf("\nVuelva pronto!");
}
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