Linguacem C [RESOLVIDO]

1. Linguacem C [RESOLVIDO]

Flávio Manoel Sousa
Samre

(usa Outra)

Enviado em 10/12/2019 - 09:07h

Bom dia!
Eu estou tentando criar um programa de eleição em C, mas tenho muitas dúvidas, No código, a qual estou escrevendo, tem muitos erros e eu não sei identificar-los ou mesmo corrigi-lhos. Abaixo segue o código:

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

#define QTD_VOTOS 10

int main()
{

int CTG_VOTOS [5]={0};
for(int i=0; i<=QTD_VOTOS; ++i) {
printf("\nInforme seu voto:");
scanf("%i", &CTG_VOTOS);
if (CTG_VOTOS==1)CTG_VOTOS [1-1]++;
if (CTG_VOTOS==2)CTG_VOTOS [2-1]++;
if (CTG_VOTOS==3)CTG_VOTOS [3-1]++;
if (CTG_VOTOS>3)CTG_VOTOS[4-1]++;
}

for(int i=0;i<=4; i++)
printf("%i", CTG_VOTOS[i]);


}

No meu código eu estou, tentando, criar um vetor a qual irá armazenar os votos, para cada voto irá armazenar em uma posição diferente dentro do vetor, nas linhas 13-16 aparece "warning comparison between pointer and integer", e no último FOR, quando peço para printar os valores de cada posição do vetor aparecer apenas um número e muito grande.


  


2. MELHOR RESPOSTA

Adriano Siqueira
adrisiq

(usa KDE Neon)

Enviado em 04/01/2020 - 18:55h

Dá uma olhada nesse código, ele está quase completo, só falta implementar algumas condições (empate, por exemplo), mas já dá para ter uma ideia de como funciona. Ao invés de usar apenas um vetor, foi implementado o uso de struct, o que ajuda muito na leitura do código, na manutenção e na localização de erros que podem aparecer.

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

#define limparTela system("clear") // No Windows mude para "cls"

typedef struct {
char numero[10];
char nome[20];
int voto;
} Candidato_t;

void imprimirCandidatos(const Candidato_t candidatos[], int quantidade);

void imprimirRelatorio(const Candidato_t candidatos[], int quantidade, Candidato_t campeao);

int main() {
const int quantidade = 7;

Candidato_t candidatos[quantidade];
candidatos[0] = (Candidato_t) {"N", "Nulo", 0};
candidatos[1] = (Candidato_t) {"B", "Branco", 0};
candidatos[2] = (Candidato_t) {"1", "Candidato 1", 0};
candidatos[3] = (Candidato_t) {"2", "Candidato 2", 0};
candidatos[4] = (Candidato_t) {"3", "Candidato 3", 0};
candidatos[5] = (Candidato_t) {"4", "Candidato 4", 0};
candidatos[6] = (Candidato_t) {"5", "Candidato 5", 0};

Candidato_t campeao = candidatos[0];

char entrada = ' ';

do {
limparTela;
imprimirCandidatos(candidatos, quantidade);
printf("\n");
printf("S - Sair \n");
printf("> ");
scanf(" %c", &entrada);
entrada = _toupper(entrada);

switch (entrada) {
case 'S':
break;
case 'B':
candidatos[1].voto += 1;
break;
case '1':
candidatos[2].voto += 1;
break;
case '2':
candidatos[3].voto += 1;
break;
case '3':
candidatos[4].voto += 1;
break;
case '4':
candidatos[5].voto += 1;
break;
case '5':
candidatos[6].voto += 1;
break;
default:
candidatos[0].voto += 1;
break;
}
} while (entrada != 'S');

for (int i = 0; i < quantidade; ++i) {
if (candidatos[i].voto > campeao.voto) {
campeao = candidatos[i];
}
}

limparTela;
imprimirRelatorio(candidatos, quantidade, campeao);

return EXIT_SUCCESS;
}

void imprimirCandidatos(const Candidato_t candidatos[], int quantidade) {
for (int i = 1; i < quantidade; ++i) {
printf("%s - %s \n", candidatos[i].numero, candidatos[i].nome);
}
}

void imprimirRelatorio(const Candidato_t candidatos[], int quantidade, Candidato_t campeao) {
printf(">> Relatório \n");

for (int i = 0; i < quantidade; ++i) {
printf("%s - %15s - %3i \n", candidatos[i].numero, candidatos[i].nome, candidatos[i].voto);
}

printf("--------------------------------------------------- \n");
printf("Vencedor: \n");
printf("%s - %20s - %3i \n", campeao.numero, campeao.nome, campeao.voto);
printf("--------------------------------------------------- \n");
}


3. Re: Linguacem C [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 11/12/2019 - 12:30h

Samre escreveu:

No meu código eu estou, tentando, criar um vetor a qual irá armazenar os votos, para cada voto irá armazenar em uma posição diferente dentro do vetor, nas linhas 13-16 aparece "warning comparison between pointer and integer", e no último FOR, quando peço para printar os valores de cada posição do vetor aparecer apenas um número e muito grande.


Começando pelo fim, o suposto único número muito grande é porque você está imprimindo cada número individual ao lado do outro, sem nenhum espaço, quebra de linha ou outro separador qualquer. Se você quiser um separador, tem de o colocar explicitamente como parte da string de formatação de printf().

De resto, você parece estar se confundindo com o uso de arrays, não apenas entre as linhas 16 e 19, onde você compara o endereço em que reside o primeiro elemento do array com valores inteiros (provavelmente você gostaria de comparar apenas o valor de um dos elementos do array com is tais valores inteiros), mas também errou na hora de fazer a leitura.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


4. Re: Linguacem C [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 05/01/2020 - 02:10h

Prezado Adriano,

Eu sou um dos moderadores da comunidade de C e C++ do VOL, e gostaria de informar que nós geralmente não entendemos que entregar respostas prontas seja uma coisa muito boa porque, embora talvez ajude com um problema imediato de quem fez a pergunta, geralmente não é uma ajuda muito efetiva para ajudar a pessoa a aprender a programar ou a estimular sua criatividade -- além de, em muitos casos, não ser ético.

Apreciamos suas contribuições, mas creio que a maioria de nós entende que seria melhor orientar as pessoas, em vez de fazer o trabalho que é delas.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts