[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: