CS50 : S3 | 다원화
12349 단어 braziliandevsc
복수
Retornando com os desafios do CS50x(온라인 버전), seguimos para a semana 3.
Neste desafio, é pedido que completemos duas funções, sendo estas funçãovote
및 funçãoprint_winner
Função 투표
Ao baixarmos os arquivos, temos a função desta maneira:
// Update vote totals given a new vote
bool vote(string name)
{
// TODO
return false;
}
// Update vote totals given a new vote
bool vote(string name)
{
// TODO
return false;
}
vote
recebe apenas um argumento do tipo string
,presentando o nome do candidato. true
para indicar que o voto teve sucesso. Aqui, temos que nos atentar a estrutura já criada pelo código que baixamos, temos este
struct
que define que cada candidato, terá um name
e um votes
, sendo estes caractéristicas desta estrutura da dados.// Candidates have name and vote count
typedef struct
{
string name;
int votes;
}
candidate;
E analisando o código, também temos essa Importante informação, indicando que teremos um vetor (array) com o nome de
candidates
do tipo candidate
, ou seja, caso seja criado um vetor com três (3) espaços, cada espaço deste tipo de dado, terá uma estrutura envolvendo um name
e um vote
특정 de cada candidato.// Array of candidates
candidate candidates[MAX];
Então teremos que percorrer essa lista, e procurar se para cada candidato há uma "match"com o nome inserido para a votação.
for(int i = 0; i < candidate_count; i++) {
if(strcmp(name, candidates[i].name) == 0) {
candidates[i].votes += 1;
return true;
}
}
strcmp()
para comparer valores de strings
. Igualamos a zero, pois a documentação nos diz que:This function returns
an int less than 0 if s1 comes before s2,
0 if s1 is the same as s2,
an int greater than 0 if s1 comes after s2.
Então se o
name
for igual ao candidates[i].name
retornará o valor zero (0).true
name
não der match com o nome de nenhum candidato na eleição, então valor total de votos não se altera, ea função retorna false
para indicar que o voto não foi computado. Temos então, função
vote
최종.// Update vote totals given a new vote
bool vote(string name)
{
for(int i = 0; i < candidate_count; i++) {
if(strcmp(name, candidates[i].name) == 0) {
candidates[i].votes += 1;
return true;
}
}
return false;
}
Função print_winner
Primeira vamos procurar o número total de votos que existe nesse vetor 후보자. E vamos utilizar do loop e criar uma variável para armazenar o maior valor total de votos que existe entre os candidatos.
// Print the winner (or winners) of the election
void print_winner(void)
{
int max_votes = 0;
for(int i = 0; i < candidate_count; i++) {
if(candidates[i].votes > max_votes) {
max_votes = candidates[i].votes;
}
}
}
int
para registrar o maior número de votos existente entre os candidatos. votes
de cada candidato ao valor da minha variável. max_votes
. Aqui, optei por percorrer de novo a lista e agora, comparar quais candidatos possuem o mesmo número de votos da variável
max_votes
. Desta maneira, seja um ou multiplos candidatos, semper será imprimido em tela aqueles que tiverem a mesma quantidade de votos que a variável preenchida anteriormente.// Print the winner (or winners) of the election
void print_winner(void)
{
int max_votes = 0;
for(int i = 0; i < candidate_count; i++) {
if(candidates[i].votes > max_votes) {
max_votes = candidates[i].votes;
}
}
for(int i = 0; i < candidate_count; i++) {
if(candidates[i].votes == max_votes) {
printf("%s\n", candidates[i].name);
}
}
}
\n
para pular a próxima linha. É isso, pessoal!
Termina por aqui, o PSET da semana 3.
Reference
이 문제에 관하여(CS50 : S3 | 다원화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/mathsort/cs50-s3-pluralidade-1k44
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(CS50 : S3 | 다원화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mathsort/cs50-s3-pluralidade-1k44텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)