Ir para conteúdo

Arquivado

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

dark_wolk

[Resolvido] Registros

Recommended Posts

ai galera tenho q fazer um programa da eleição o código explicar melhor, as opcoes 1 e 2 funcionam perfeitamente, mas a 3 naum e num consigo ver o porque... por favor deem uma olhada e eu qria uma dica de como fazer para contar os votos e dar o resultado...

 

#include<stdio.h>

#define TAM 2


void cadastraEleitor()
{
	 int cont;
			
	 struct eleitor
	 {
	   char nomeCompleto[50];
	   char sexo[15];	 
	 };
								  
	 struct eleitor Eleitores[TAM];
	 for(cont = 0;cont < TAM;cont++)
	 {
		printf("\nEntre com os dados do %do. eleitor: \n",cont+1);
		printf("\tNome completo: ");
		scanf("%s", Eleitores[cont].nomeCompleto);
		printf("\tSexo(M/F): ");
		scanf("%s", Eleitores[cont].sexo);
	 }
	 getchar();
	 getchar();
	 system("cls");
	 return main();
}

void cadastraCandidato()
{
	 int cont; 
	 struct candidato
	 {
	   char nomeCompleto[50];
	   int numero;
	   char sexo[15];			
	};

	 struct candidato Candidatos[TAM];
	 for(cont = 0;cont < TAM;cont++)
	 {
		printf("Dados do %do. candidato: \n",cont+1);
		printf("\tNome do candidato : ",cont+1);
		scanf("%s", Candidatos[cont].nomeCompleto);
		printf("\tSexo: ");
		scanf("%s", Candidatos[cont].sexo);
		printf("\tNumero: ");
		scanf("%d",&Candidatos[cont].numero);
	 }
	 getchar();
	 getchar();
	 system("cls");
	 return main();
}

int votacao()
{	  
	int voto,opcao,cont;
	for(cont = 0;cont < TAM;cont++)
	{
	  printf("Entre com o numero do candidato: ");
	  scanf("%d",&voto);
	  printf("\
	  1 - Confirma<ENTER>\n\
	  2 - Corrige<ENTER>\n\
	  3 - Cancela<ENTER>\n\
	  ");
	  scanf("%d",&opcao);
	  if(opcao == 1)
	  {
		printf("Voto confirmado !\n");
		return votacao();
	  }
	  else if(opcao == 2)
	  {
	   system("cls");
	   return votacao();
	  }
	  else if(opcao == 3)
	  {
	   system("cls");
	   return main();
	  }
	}			 
  return main();
} 

int main()
{	
	 int opcao;		   
	 do{
		  printf("\t\t\t----URNA 2008----\n\
		  =======================================\n\
		  | 1 - Cadastrar eleitores\t\t|\n\
		  | 2 - Cadastrar candidatos\t\t|\n\
		  | 3 - Iniciar votacao\t\t\t|\n\
		  | 0 - Sair\t\t\t\t|\n\
		  =======================================\n");		   
		  printf("\nEntre com a opcao: ");
		  scanf("%d",&opcao);
		  if(opcao == 1)
		  cadastraEleitor();
		  else if(opcao == 2)
		  cadastraCandidato();
		  else if (opcao == 3)
		  {
			  votacao();
		  }
	 return 0;
	 
	 }while(opcao != 0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

gcc teste.c -Wall

teste.c: In function "cadastraEleitor":

teste.c:20: warning: implicit declaration of function "main"

teste.c:20: warning: "return" with a value, in function returning void

teste.c: In function "cadastraCandidato":

teste.c:32: warning: too many arguments for format

teste.c:39: warning: "return" with a value, in function returning void

 

 

Me dê um motivo real pra você colocar return main() e return votação() dentro das funções.

 

#include<stdio.h>
#define TAM 2

void cadastraEleitor()
{
 int cont;
 struct eleitor {
   char nomeCompleto[50];
   char sexo[15];
 };

 struct eleitor Eleitores[TAM];
 for(cont = 0;cont < TAM;cont++) {
	printf("\nEntre com os dados do %do. eleitor: \n",cont+1);
	printf("\tNome completo: ");
	scanf("%s", Eleitores[cont].nomeCompleto);
	printf("\tSexo(M/F): ");
	scanf("%s", Eleitores[cont].sexo);
}
}


void cadastraCandidato(){
int cont;
struct candidato{
   char nomeCompleto[50];
   int numero;
   char sexo[15];
};
struct candidato Candidatos[TAM];
for(cont = 0;cont < TAM;cont++) {
   printf("Dados do %do. candidato: \n",cont+1);
   printf("\tNome do candidato %d: ",cont+1);
   scanf("%s", Candidatos[cont].nomeCompleto);
   printf("\tSexo: ");
   scanf("%s", Candidatos[cont].sexo);
   printf("\tNumero: ");
   scanf("%d",&Candidatos[cont].numero);
}
}

void votacao(){
 int voto,opcao,cont;
 for(cont = 0;cont < TAM;cont++) {
CORRIGE:
printf("Entre com o numero do candidato: ");
scanf("%d",&voto);
printf("\
   1 - Confirma\n\
   2 - Corrige\n\
   3 - Cancela\n\
   ");
scanf("%d",&opcao);
if(opcao == 1)
  printf("Voto confirmado !\n");
else if(opcao == 2)
  goto CORRIGE;
else if(opcao == 3)
  break;
 }
}


int main()
{
  int opcao;
  do{
 printf("\t\t\t----URNA 2008----\n\
 =======================================\n\
 | 1 - Cadastrar eleitores\t\t|\n\
 | 2 - cADASTRAR CANDIdatos\t\t|\n\
 | 3 - Iniciar votacao\t\t\t|\n\
 | 0 - Sair\t\t\t\t|\n\
 =======================================\n");
 printf("\nEntre com a opcao: ");
 scanf("%d",&opcao);
 if(opcao == 1)
   cadastraEleitor();
 else if(opcao == 2)
   cadastraCandidato();
 else if (opcao == 3)
   votacao();
 }while(opcao != 0);
 return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tive refazendo o programa, mas continuo com o mesmo problema nao consigo comparar os valores pra saber com o numero qual foi o candidato votado, para a partir disso dizer o vencedor e as posicoes dos outros, se alguem puder me dar uma dica jah ajudaria bastante so ta faltando isso mesmo o resto dos tratamentos sao mais faceis...

 

tai o codigo

 

#include<stdio.h>
#define TAM 4

struct eleitor
{
   char nomeCompleto[50];
   char sexo[15];	 
};
struct eleitor Eleitores[TAM];

struct candidato
{
   char nomeCompleto[50];
   int numero;
   char sexo[15];			
};
struct candidato Candidatos[TAM];

int vetorVotos[TAM];

void cadastraEleitor()//Cadastra os eleitores
{
	 int cont;
			
	 for(cont = 0;cont < TAM;cont++)
	 {
		printf("\nEntre com os dados do %do. eleitor: \n",cont+1);
		printf("\tNome completo: ");
		scanf("%s", Eleitores[cont].nomeCompleto);
		printf("\tSexo: ");
		scanf("%s", Eleitores[cont].sexo);
	 }
	 getchar();
	 getchar();
}
void listaEleitores()//Lista os eleitores
{
	int cont;
	for(cont = 0;cont < TAM;cont++)
	{
		printf("Dados do %do. eleitor: \n",cont+1);
		printf("\tNome: %s\n",Eleitores[cont].nomeCompleto);
		printf("\tSexo: %s\n",Eleitores[cont].nomeCompleto);
	}
}
void cadastraCandidato()//Cadastra os candidatos
{
	 int cont; 
	 for(cont = 0;cont < TAM;cont++)
	 {
		printf("Dados do %do. candidato: \n",cont+1);
		printf("\tNome do do candidato : ");
		scanf("%s", Candidatos[cont].nomeCompleto);
		printf("\tSexo: ");
		scanf("%s", Candidatos[cont].sexo);
		printf("\tNumero: ");
		scanf("%d",&Candidatos[cont].numero);
	 }
	 getchar();
	 getchar(); 
}
void listaCandidatos()//Lista os candidatos
{
	int cont;
	for(cont = 0;cont <TAM;cont++)
	{
		printf("Dados do %do. candidato: ",cont+1);
		printf("\tNome: %s\n",Candidatos[cont].nomeCompleto);
		printf("\tSexo: %s\n",Candidatos[cont].sexo);
		printf("\tNumero: %d\n",Candidatos[cont].numero);
	}
} 
void realizaVotacao()//Guarda os votos
{
	int cont;
	
	for(cont = 0;cont < TAM;cont++)
	{
		printf("Entre com o numero do candidato: ");
		scanf("%d",&vetorVotos[cont]);
	}
}
void fechaVotacao()//Eh nessa funcao aq que eu to enrolado...
{
	int cont,i,qtd1,qt2;
	for(i = 0;i < TAM;i++)
	{
		  if(vetorVotos[i] == Candidatos[i].numero)
		  printf("%s\n",Candidatos[i].nomeCompleto);
	 }											
}
void trataOpcao()//Mostra menu e verifica a escolha
{
	 int opcao;		   
	 do{
		  printf("----URNA 2008----\n\
		  =======================================\n\
		  | 1 - Cadastrar eleitores\t\t|\n\
		  | 2 - Cadastrar candidatos\t\t|\n\
		  | 3 - Iniciar votacao\t\t\t|\n\
		  | 4 - Listar eleitores\t\t|\n\
		  | 5 - Listar Candidatos\t\t|\n\
		  | 6 - Fechar votacao\t\t\t|\n\
		  | 0 - Sair\t\t\t\t|\n\
		  =======================================\n");		   
		  printf("\nEntre com a opcao: ");
		  scanf("%d",&opcao);

		  if(opcao == 1)
		  cadastraEleitor();

		  else if(opcao == 2)
		  cadastraCandidato();
			
		  else if(opcao == 3)
		  realizaVotacao();
		  
		  else if(opcao == 4)
		  listaEleitores();
		  
		  else if(opcao == 5)
		  listaCandidatos();
		  
		  else if(opcao == 6)
		  fechaVotacao();
	 }while(opcao != 0);
}

int main()
{	
		trataOpcao();	 
		return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

void fechaVotacao()//Eh nessa funcao aq que eu to enrolado...
{
	int cont,i,qtd1,qt2;
	for(i = 0;i < TAM;i++)
	{
		  if(vetorVotos[i] == Candidatos[i].numero)
		  printf("%s\n",Candidatos[i].nomeCompleto);
	 }											
}

Aqui voce tem precisa de 2 lacos, um que controle qual candidato esta sendo analisado e outro que percorra o vetor de votos. No cao voce esta comparando Voto[0] com Candidato[0] e depois Voto[1] com candidato[1], mas e se o voto[0] que foi pro candidato[1]?

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza esse problema eu jah resolvi agora so falta contar os votos de cada candidato...

 

tive pensando em fazer um contador pra cada, mas eu achu q vai fika muito paia...

eu jah tentei aq e num deu mto certo naum... aliás tem até q dizer a colocação...

 

alguma dica?

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom a principio use uns contadores msm..

qnt a colocação creio q os contadores se encarregam disso..

poste os novos resultados!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem consegui contar os votos...

 

mas se eu excutar uma vez, cadastrar os candidatos, votar e qdo eu pedir para fechar a eleição ele mostra correto so q assim q eu fechar e sem votar e pedir para mostrar novamente mostra os valores + 3 e toda vez que fazer isso soma os valores com 3....

 

eu so nao consigo ver o porque se alguem ver por favor diga ai ...

 

#include<stdio.h>
#include<stdlib.h>

#define TAM 5
#define CAN 2
#define MAX 100

struct eleitor
{
   char nomeCompleto[MAX];
   char sexo[15];
   unsigned int numeroDoTitulo;	 
};
struct eleitor Eleitores[TAM];

struct candidato
{
   char nomeCompleto[MAX];
   int numero;
   char sexo[15];
   int votos;			
};
struct candidato Candidatos[CAN];

int vetorVotos[TAM];

void limparTela()
{
	 system("cls");	 
}

void cadastraEleitor()//Cadastra os eleitores
{
	 int cont;	 
	 for(cont = 0;cont < TAM;cont++)
	 {
		limparTela();
		printf("\nEntre com os dados do %do. eleitor: \n",cont+1);
		printf("\tNome: ");
		scanf("%s", Eleitores[cont].nomeCompleto);
		printf("\tSexo: ");
		scanf("%s", Eleitores[cont].sexo);
		printf("\tTitulo: ");
		scanf("%ld",&Eleitores[cont].numeroDoTitulo);
	 }
	 
	 getch();
	 limparTela();
}

void listaEleitores()//Lista os eleitores
{
	int cont;
	limparTela();
	for(cont = 0;cont < TAM;cont++)
	{	 
		printf("Dados do %do. eleitor: \n",cont+1);
		printf("\n\tNome: %s\n",Eleitores[cont].nomeCompleto);
		printf("\tSexo: %s\n",Eleitores[cont].sexo);
		printf("\tTitulo: %ld\n",Eleitores[cont].numeroDoTitulo);
	}
	getch();
	limparTela();
}

void cadastraCandidato()//Cadastra os candidatos
{
	 int cont; 
	 for(cont = 0;cont < CAN;cont++)
	 {
		limparTela();	  
		printf("Dados do %do. candidato: \n",cont+1);
		printf("\tNome do do candidato : ");
		scanf("%s", Candidatos[cont].nomeCompleto);
		printf("\tSexo: ");
		scanf("%s", Candidatos[cont].sexo);
		printf("\tNumero: ");
		scanf("%d",&Candidatos[cont].numero);
	 }
	 getch();
	 limparTela(); 
}

void listaCandidatos()//Lista os candidatos
{
	int cont;
	limparTela();
	for(cont = 0;cont < CAN;cont++)
	{
		printf("Dados do %do. candidato: ",cont+1);
		printf("\n\tNome: %s\n",Candidatos[cont].nomeCompleto);
		printf("\tSexo: %s\n",Candidatos[cont].sexo);
		printf("\tNumero: %d\n",Candidatos[cont].numero);
	}
	getch();
	limparTela();
}
 
void realizaVotacao()//Guarda os votos
{
	int cont,opcao;
	
	for(cont = 0;cont < TAM;cont++)
	{
		CORRIGE:				 
		printf("\nEntre com o numero do candidato: ");
		scanf("%d",&vetorVotos[cont]);
		printf("\t1 - CONFIRMA\n\t2 - CORRIGE\n");
		scanf("%d",&opcao);
		if(opcao == 1)
		printf("Voto confirmado\n");
		else if(opcao == 2)
		goto CORRIGE;
	}
}

void contaVotos()//Fecha a votacao temporariamente comparando com o vetor anterior
{
	int i,j,t;
	limparTela();
	for(i = 0;i < TAM;i++)
	{   
		for(j = 0;j < TAM;j++)
		{	 
			  if(vetorVotos[i] == Candidatos[j].numero)
			  Candidatos[j].votos++;		   
		}				   
	}
	for(t = 0;t < CAN;t++)
	{
		  printf("Numero: %d\n",Candidatos[t].numero);
		  printf("Prefeito: %s\n",Candidatos[t].nomeCompleto);
		  printf("Sexo: %s\n",Candidatos[t].sexo);
		  printf("Votos: %d\n\n", Candidatos[t].votos);
	}
	getch();
	limparTela();
}
	 
void trataOpcao()//Mostra menu e verifica a escolha
{
	 int opcao;		   
	 do{
		  printf("----URNA 2008----\n\
		  =======================================\n\
		  | 1 - Cadastrar eleitores\t\t|\n\
		  | 2 - Cadastrar candidatos\t\t|\n\
		  | 3 - Iniciar votacao\t\t\t|\n\
		  | 4 - Listar eleitores\t\t|\n\
		  | 5 - Listar Candidatos\t\t|\n\
		  | 6 - Fechar votacao\t\t\t|\n\
		  | 0 - Sair\t\t\t\t|\n\
		  =======================================\n");		   
		  printf("\nEntre com a opcao: ");
		  scanf("%d",&opcao);
	 
		  switch(opcao){
			 case 1:cadastraEleitor();limparTela();break;
			 case 2:cadastraCandidato();limparTela();;break;
			 case 3:limparTela();realizaVotacao();limparTela();break;
			 case 4:listaEleitores();limparTela();;break;
			 case 5:listaCandidatos();limparTela();break;
			 case 6:contaVotos();limparTela();break;
			 case 7:ordenaCandidatos();break;
		  }
	 }while(opcao != 0);
}

void cor()
{
   system("color 1a");  
}

int main()
{	   
		cor();
		trataOpcao();	 
		return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro que vai contar denovo, o elemento da variavel global vetorVotos, está armazenada no vetor, quando você entrou com o primeiro número lá, lembra? Cara, nessa função, contaVotos(), apenas use pra contar os votos, faz a atribuição dos votos direito na struct, na função realizaVotacao(), não tem porque criar essa variável global vetorVotos...faz tudo na função mesmo, ai não vai ter esse problema de somar denovo também :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.