Re: [FORA DO TOPICO] programa para votacao
On Thu, 6 Jun 2002 10:20:37 -0300
M de Ara Benedito <china@pbh.gov.br> wrote:
>
> Amigos,
Beleza!
>
>
> Vou vou participar de um debate sobre a "Urna Eletronica". Vou >defender a posicao de que o codigo fonte do programa da urna tem que >ser aberto para garantir a lisura do processo.
Isso é muito importante.
>
> Neste debate gostaria de mostrar a importancia disso, demonstrando >como uma votacao pode ser manuopulada, atraves de um programinha.
>
> Entao peco a ajuda dos coolegas da lista que sejam programadores e estejam com uns minutos livres para me ajudar, pois nao sou programador e nao dou conta de fazer o que pretendo, que e o seguinte:
>
> Um programa que mostre as opcoes de escolha:
>
> letra A = branco
> letra B = amarelo
> letra C = azul
> letra D = preto
>
> Onde o "eleitor" possa escolher a cor mais bonita votando na letra. Apos a votacao, o programa retorna a apuracao mostrando quantos votos teve cada cor em ordem do mais votado para o menos votado.
>
> Agora vem o detalhe mais importante: que este programa permita um macete para fraudar a "eleicao", de forma que fazemos uma eleicao com o programa correto, e depois eu altero alguma coisa no codigo e repetimos a eleicao, e entao ela da um resultado modificado.
>
No source tem a indicacao de como fraudar, nao sei se e o melhor tipo de fraude, mas e uma, caso queira um tipo diferente, pode-se modificar.
Duvidas? mail me!
> E ai? Alguem topa?
>
Ai segue o anexo :).
> Nao precisa ser nada de luxo em ambiente grafico, pode ser em qualquer >linguagem, pode ser compilado em binario ou script, pode ser executado >no shell ou no navegador.
>
Bem, fiz em bash pois era a maneira mais rapida.
--
----
Elcio Mello - SwaP
Use it, abuse it, It's Free
GNU/Debian --->>> www.debian.org
----
# Programa Demo de eleicao
# Elcio Mello - 06-06-2002
# mello@ajato.com.br - SwaP
#
#
A=0 # Inicializa a variavel A com zero
B=0 # Inicializa a variavel B com zero
C=0 # Inicializa a variavel C com zero
D=0 # Inicializa a variavel D com zero
ELEITOR=349542 # Um numero para o eleitor, Numero do titulo :-)
CONT_VOTO=0 # conta o Numero de votos.
FRAUDE=0 # (0) indica um eleicao sem fraude (1) indica um eleicao com fraude.
BENEFICIAR="B" # Candidato a se beneficiar.
QTDE_UM="3" # Com quantos votos o candidato
# será beneficiado para cada voto que receber.
# Funcao que somo os votos do candidato A
somaA(){
if [ ${FRAUDE} = 0 ];then
let "A += 1"
else
if [ ${BENEFICIAR} = "A" ];then
let "A += QTDE_UM"
else
let "A += 1"
fi
fi
}
# Funcao que somo os votos do candidato B
somaB(){
if [ ${FRAUDE} = 0 ];then
let "B += 1"
else
if [ ${BENEFICIAR} = "B" ];then
let "B += QTDE_UM"
else
let "B += 1"
fi
fi
}
# Funcao que somo os votos do candidato C
somaC(){
if [ ${FRAUDE} = 0 ];then
let "C += 1"
else
if [ ${BENEFICIAR} = "C" ];then
let "C += QTDE_UM"
else
let "C += 1"
fi
fi
}
# Funcao que somo os votos do candidato D
somaD(){
if [ ${FRAUDE} = 0 ];then
let "D += 1"
else
if [ ${BENEFICIAR} = "D" ];then
let "D += QTDE_UM"
else
let "D += 1"
fi
fi
}
# Funcao que imprime o menu de selecao de votos
menu(){
echo "++++++++++++++++++++++++++++++++++++++++++++++++"
echo "+ CANDIDATOS +"
echo "++++++++++++++++++++++++++++++++++++++++++++++++"
echo "+ A) Branco +"
echo "+ B) Amarelo +"
echo "+ C) Azul +"
echo "+ D) Preto +"
echo "+ F) Fim, exibir a contagem de votos. +"
echo "++++++++++++++++++++++++++++++++++++++++++++++++"
echo
echo -n "Escolha a cor mais bonita, Eleitor N.o ${ELEITOR}: "
# Guarda o voto na variavel $voto
read voto
}
# A funcao votar() chama a funcao de somar de acordo com o voto do eleitor
votar(){
case "$voto" in
"A" | "a")
somaA
;;
"B" | "b")
somaB
;;
"C" | "c")
somaC
;;
"D" | "d")
somaD
;;
"F" | "f")
result_eleicao
exit 0
;;
*)
echo "Voto incorreto"
exit 0
;;
esac
}
# Imprime a contagem dos votos de cada candidato
result_eleicao(){
echo
echo "RESULTADO DAS VOTACOES"
echo "" > result.tmp
echo "$A - Braco(s)." >> result.tmp
echo "$B - Amarelo(s)." >> result.tmp
echo "$C - Azul(is)." >> result.tmp
echo "$D - Preto(s)." >> result.tmp
echo "" >> result.tmp
sort result.tmp | tac
rm -rf result.tmp
}
clear
menu
votar
while [ "$voto" ]
do
let "ELEITOR += 2502341"
clear
menu
votar
done
echo "Votacao concluida"
Reply to: