Ir ao conteúdo

Apresentar em ordem decrescente a quantidade de votos


zépoa57

Posts recomendados

Postado

Boa noite eu gostaria de saber como eu faço para imprimir os candidatos em ordem decrescente com base no que tiver maior voto.

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define dados_prefeito 2
struct prefeito_dados
{
char nome[300];
char partido[300];
char cargo[300];
int num;
int votos_prefeito[300] ;
};
struct prefeito_dados prefeito[dados_prefeito];
int indice_prefeito=0;
char cadastro_sair;

int main()
{
prefeito[indice_prefeito].votos_prefeito[indice_prefeito]=0;

do
{
system("cls");

printf("\t\t\t=================================");
printf("\n\t\t\t\tCADASTRO PREFEITO\n");
printf("\t\t\t=================================\n");

printf("Digite a quantidade de votos-->");
scanf("%d",&prefeito[indice_prefeito].votos_prefeito[indice_prefeito]);
fflush(stdin);
printf("Digite o cargo do candidato -->");
fflush(stdin);
fgets(prefeito[indice_prefeito].cargo,300,stdin);
fflush(stdin);
printf("Digite o numero do candidato -->");
scanf("%d",&prefeito[indice_prefeito].num);
fflush(stdin);
printf("Digite nome do candidato-->");
fgets(prefeito[indice_prefeito].nome,300,stdin);
fflush(stdin);
printf("Digite o partido do candidato -->");
fgets(prefeito[indice_prefeito].partido,300,stdin);
fflush(stdin);
indice_prefeito++;
if(indice_prefeito<=1)
{
printf("Deseja cadastrar novamente s-sim n-nao");
cadastro_sair=getch();
}
else
{
printf("sair");
getch();
}



}while(indice_prefeito<dados_prefeito&&cadastro_sair!='n');


system("cls");
printf("\nCANDIDATO\t\tCARGO\t\tNUMERO\t\tPARTIDO\tVOTO");
printf("\n");
for(indice_prefeito=0;indice_prefeito<dados_prefeito;indice_prefeito++)
{


prefeito[indice_prefeito].votos_prefeito[indice_prefeito]=prefeito[indice_prefeito].votos_prefeito[indice_prefeito]+1;
printf("%s",prefeito[indice_prefeito].nome);
printf("\t\t\t%s",prefeito[indice_prefeito].cargo);
printf("\t\t\t%d",prefeito[indice_prefeito].num);
printf("\t\t\t%s",prefeito[indice_prefeito].partido);
printf("\t\t%d",prefeito[indice_prefeito].votos_prefeito[indice_prefeito]);
break;

}








system("pause");

}

OBRIGADO

Postado

Utiliza dois for para ordenar o vetor e depois manda imprimir os elementos do vetor.

Exemplo:


for(i=0 ; i<numero_de_candidatos ; i++)
{
for(j=i+1 ; j<numero_de_candidatos ; j++)
{
if(votos[j]>votos[i])
votos[i]=votos[j];
}
}

Conseguiu entender um pouco a lógica que precisa fazer?

Postado

sinceramente eu não consegui lhe compreender.

existe uma outra forma mais fácil ??

Utiliza dois for para ordenar o vetor e depois manda imprimir os elementos do vetor.

Exemplo:


for(i=0 ; i<numero_de_candidatos ; i++)
{
for(j=i+1 ; j<numero_de_candidatos ; j++)
{
if(votos[j]>votos[i])
votos[i]=votos[j];
}
}

Conseguiu entender um pouco a lógica que precisa fazer?

Como se declara este j como matriz ou declarar como j=0 este j se refere a posição ??

obrigado

for(indice_prefeito=0;indice_prefeito<dados_prefeito;indice_prefeito++)
{
for(posicao_voto=indice_prefeito+1;posicao_voto<dados_prefeito;posicao_voto++)
{
if(prefeito[posicao_voto].votos_prefeito[posicao_voto]>prefeito[indice_prefeito].votos_prefeito[indice_prefeito])
{
printf("\nCANDIDATO %s\t",prefeito[indice_prefeito].nome);
printf("\nCARGO %s\t",prefeito[indice_prefeito].cargo);
printf("\nNUMERO %d\t",prefeito[indice_prefeito].num);
printf("\nPARTIDO %s\t",prefeito[indice_prefeito].partido);
printf("\nVOTO %d\t",prefeito[indice_prefeito].votos_prefeito[indice_prefeito]);
}

}
}

Fiz desta forma verifique se é mais ou menos isto ??

Postado

for(i=0 ; i<numero_de_candidatos ; i++)
{
for(j=i+1 ; j<numero_de_candidatos ; j++)
{
if(votos[j]>votos[i])
votos[i]=votos[j];
}
}

Ele compara todos com todos e ordena o vetor através do if: Se votos na posição "j" "for maior" que votos na posição "i": "ENTÃO" votos na posição "i" recebe votos na posição "j". E como ele não quer fazer comparações inuteis ele inicia "j" do i para frente (j=i+1). Faça o TESTE DE MESA que você vai entender.

Postado
for(i=0 ; i<numero_de_candidatos ; i++)
{
for(j=i+1 ; j<numero_de_candidatos ; j++)
{
if(votos[j]>votos[i])
votos[i]=votos[j];
}
}

Ele compara todos com todos e ordena o vetor através do if: Se votos na posição "j" "for maior" que votos na posição "i": "ENTÃO" votos na posição "i" recebe votos na posição "j". E como ele não quer fazer comparações inuteis ele inicia "j" do i para frente (j=i+1). Faça o TESTE DE MESA que você vai entender.

ok eu escrevi o codigo mas ele está jogando o que tem maior voto para o que está em primeiro no cadastro de candidatos na verdade ele só está trocando o voto mas não a posição do candidato que foi escrito eu postei meu codigo ali acima se puder dar uma olhada.

obrigado

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!