Ir ao conteúdo

Posts recomendados

Postado

Estou com um pequeno problema, criei esse código para simular uma eleição. Quero colocar para aparecer o nome dos candidatos que eu registar em candidato A, B e C mas não consigo fazer isso, o que preciso fazer?

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

struct tipo_novo{
	int Votoc;
	char nome[10];
	int qnat;
};


int cadastro(tipo_novo Voto[], int aux)
{
 printf("Informe o numero do candidato: ");
	scanf("%d",&Voto[aux].Votoc);
	  fflush(stdin);
 printf("Informe o nome do candidato: ");
    scanf("%s",&Voto[aux].nome);
      fflush(stdin);
}


int Pesquisa(tipo_novo Voto[], int aux)
{

	int i = 0;
	int pesq;
	
	printf("\nEntre com o codigo\n");
	  scanf("%d", &pesq);
     	fflush(stdin);
	system("cls");

	while ( i <= aux )
	{
		if (Voto[i].Votoc == pesq)
		{

			
			printf("\nCodigo: %d \nNome: %s\n\n", Voto[i].Votoc, Voto[i].nome);

			;


		}

		i++;

	}

	

}

main(){
setlocale(LC_ALL, "Portuguese");	
tipo_novo Voto[100];
int aux = 0;
	
	
	int  ContA = 0,  ContB = 0,  ContC = 0,  ContBr = 0,  ContN = 0,  Votoc = 0,  ContVoto = 0, opc;

	
	while (opc != 3){
	printf("==================================");
	printf("\n\n Escolha uma das opções:  \n\n");
	printf("================================== \n\n");
	printf("1)Cadastrar candidato  \n");
	printf("2)Pesquisar candidato  \n");
	printf("3)Fim  \n\n");
	scanf("%d",  &opc);
	if  (opc ==1)
	{
	 cadastro(Voto, aux);
	 aux++;
	 
 	}
	if(opc ==2)
	Pesquisa(Voto, aux);

}
	
	
	
	while  (Votoc  !=  6)  {
	system("cls");
	   printf("Escolha  o  candidato para votar:  \n\n");
	   printf("1 - Voto  para o candidato A \n\n");
	   printf("2 - Voto  para o candidato B \n\n");
	   printf("3 - Voto  para o candidato C \n\n");
       printf("4 - Voto  em  Branco  \n\n");
	   printf("5 - Voto  Nulo  \n\n");
	   printf("6 - Fim  \n\n");
	   printf("Voto  -->  ");
	   printf("");
	     scanf("%d",  &Votoc);
	fflush(stdin);
	
	switch  (Votoc)
	{
	case  1: 
	ContA++; break;
	case  2:  ContB++; break;
	case  3:  ContC++; break;
	case  4:  ContBr++; break;
	case  5:  ContN++; break;}
	ContVoto++;
}    
    printf("======== Apuração de votos ========= \n");  
    printf("Candidato  A  =  %d  Votos  \n",  ContA);
	printf("Candidato  B  =  %d  Votos  \n",  ContB);
    printf("Candidato  C  =  %d  Votos  \n\n",  ContC);
    printf("Votos em branco = %d \n", ContBr);
    printf("Votos nulos = %d \n", ContN);
    printf("===================================== \n");  
	system("pause");     
	
	 
}     

 

  • Obrigado 1
Postado

@vitao1020     então você precisa definir quem são os candidatos A B e C , pois do jeito que está não se sabe quem são , pois está cadastrando os candidatos pela variável aux , e aí poderia cadastrar milhares de candidatos , aí para imprimir os votos deles precisaria  pesquisar no vetor de  struct e somar o voto de cada candidato , mas no caso de ter apenas esses três candidatos , então crie uma variável para cada um deles e atribua o nome à essas variáveis , então seu código poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
int letras[8][5] ={{15,16,14, 1,30}, /* letra  S */
                   {14,17,31,17,17}, /* letra  A */
                   {14, 4, 4, 4,14}, /* letra  I */
                   {17,25,21,19,17}, /* letra  N */
                   {30,17,17,17,30}, /* letra  D */
                   {14,17,17,17,14}, /* letra  O */
                   { 0, 0, 0, 0, 0}, /* letra    */
                   { 1, 2, 4, 0,16}, /* letra  ! */
                };
void gotoxy_2(int x, int y){/*imprimir na linha e coluna desejada */
  COORD c;
  c.X = x;
  c.Y = y;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
struct tipo_novo {
    int  Votoc   ;
    char nome[10];
    int  qnat    ;
};
int cadastro(struct tipo_novo Voto[], int aux)
{
    printf("Informe o numero do candidato: ");
    fflush(stdin);
    scanf("%d",&Voto[aux].Votoc);
    printf("Informe o nome do candidato: ");
    fflush(stdin);
    scanf("%s",&Voto[aux].nome);
}
int Pesquisa(struct tipo_novo Voto[], int aux)/* precisa colocar struct */
{
    int i = 0;
    int pesq;
    printf("\nEntre com o codigo\n");
    fflush(stdin);
    scanf("%d", &pesq);
    system("cls");
    while ( i <= aux )
    {
        if (Voto[i].Votoc == pesq){
            printf("\nCodigo -: %d\n", Voto[i].Votoc);
            printf("Nome ---: %s\n\n", Voto[i].nome );
        }
        i++;
    }
    printf("\n      Tecle !");
    getch();
}
int main(){
    setlocale(LC_ALL, "Portuguese");
    struct tipo_novo Voto[100];
    char candA[15],candB[15],candC[15] ;
    int  ContA    = 0,  ContB = 0,  ContC = 0,
         ContBr   = 0,  ContN = 0,  Votoc = 0,
         ContVoto = 0,  aux = 0  ,  opc ,x   ;
    while (opc != 3){
        system("cls");
        printf("==================================");
        printf("\n\n Escolha uma das opções:  \n\n");
        printf("================================== \n\n");
        printf("1)Cadastrar candidato  \n");
        printf("2)Pesquisar candidato  \n");
        printf("3)Fim  \n\n");
        scanf("%d",  &opc);
        if  (opc ==1){
            cadastro(Voto, aux);
            aux++;
        }
        else
            if(opc ==2)
                Pesquisa(Voto, aux);
    }
    strcpy(candA,Voto[0].nome);/* o primeiro nome cadastrado */
    strcpy(candB,Voto[1].nome);/* o segundo  nome cadastrado */
    strcpy(candC,Voto[2].nome);/* o terceiro nome cadastrado */
    while(ContVoto  !=  6){
        system("cls");
        printf("Escolha  o  candidato para votar:  \n\n");
        printf("1 - Voto  para o candidato A \n\n");
        printf("2 - Voto  para o candidato B \n\n");
        printf("3 - Voto  para o candidato C \n\n");
        printf("4 - Voto  em  Branco  \n\n");
        printf("5 - Voto  Nulo  \n\n");
        printf("6 - Fim  \n\n");
        printf("Voto  -->  ");
        printf("");
        fflush(stdin);
        scanf("%d",  &Votoc);
        switch(Votoc)
        {
        case  1: ContA++; break;
        case  2: ContB++; break;
        case  3: ContC++; break;
        case  4: ContBr++; break;
        case  5: ContN++; break;
        }
        ContVoto++;
    }
    printf("======== Apuração de votos ========= \n\n"             );
    if(strcmp(Voto[x].nome,"")!= 0                                 );
        printf("Candidato  A  %15s  = %d  Votos  \n"  ,candA, ContA);
    if(strcmp(Voto[x].nome,"")!= 0                                 );
        printf("Candidato  B  %15s  = %d  Votos  \n"  ,candB, ContB);
    if(strcmp(Voto[x].nome,"")!= 0                                 );
        printf("Candidato  C  %15s  = %d  Votos  \n\n",candC, ContC);
    printf("Votos em branco = %d         \n"    , ContBr           );
    printf("Votos nulos     = %d         \n\n"  , ContN            );
    printf("===================================== \n\n"            );
    gotoxy_2(0,40);
    gotoxy_2(0,30);
    system("pause");
    gotoxy_2(0,50);
    gotoxy_2(0,37);
    int w,px,py,s;                            /* variáveis simples                       */
    HANDLE hOut;                              /* controle dos dispositivos do pc         */
    hOut= GetStdHandle(STD_OUTPUT_HANDLE);    /* pega a saída padrão                     */
    CONSOLE_SCREEN_BUFFER_INFO SBInfo;        /* informações sobre a buffer da tela      */
    GetConsoleScreenBufferInfo(hOut, &SBInfo);/* pega a posição do cursor do console     */
    px = SBInfo.dwCursorPosition.X;           /* pX será a posição da coluna do cursor no console */
    py = SBInfo.dwCursorPosition.Y;           /* pY será a posição da linha do cursor no console  */
    int y1=py+1,x1=20,y2=y1,x2=x1,j,i,a,b;    /*y1=linha inicial  y2 para recuperar a linha inicial*/
    for(i=0;i<8;i++){                     /*  sao 8 letras                                    */
        for(j=0;j<5;j++){                 /*o caractere é de 5 linhas                          */
            x1 = x2;
            a=letras[i][j];               /*pega o numero da 1 linha do caractere              */
            for(b=0;b<5;b++){             /*aqui eh um numero de apenas 8 bits                 */
                gotoxy_2(x1,y1);
                if(a % 2 != 0){           /*se bit 0 igual 1                                   */
                    printf("%c",219);     /*coloca espaço invertido senão coloca espaço normal */
                }
                else{
                    printf(" ");          /*senão coloca espaço normal                         */
                }
                a=a/2;                    /*dividindo numero por 2 desloca os bits para direita*/
                x1--;
                Sleep(10);
            }
            y1++;                   /*muda para proxima linha                                  */
            x1=x2;                  /*volta para a coluna inicial                              */
        }                           /*proxima linha                                            */
        x2=x2+6;                    /*avança 6 colunas posicionando para o prox caract         */
        y1=y2;                      /*volta para linha inicial                                 */
    }                               /*imprimiu o primeiro caractere                            */
    printf("\n\n\n");
    return 0;
}

 

Postado

@devair1010 tentei compilar esse código e ainda apareceu a mesma mesma coisa de Candidato A, B e C, e depois quando mostra o resultado da eleição no nome do candidato tá aparecendo o endereço de memória

  • Curtir 1
Postado

@devair1010 é windows q uso, mais precisamente o 7 professional 64

adicionado 35 minutos depois

@devair1010 Queria que nessa parte eu já pudesse substituir "Candidato A" pelo nome do candidato que eu cadastrar, e outra coisa que percebi que nesse seu código a votação ficou limitada em 6 votos

part 1 programa.png

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!