Lógica de Programação: Pascal. Alguém poderia me ajudar?
Lógica de Programação: Pascal. Alguém poderia me ajudar?
Estou fazendo um exercício em que tenho que apurar a pesquisa sobre um cinema com as seguintes perguntas:
O que achou do Filme:
1-ótimo
2-bom
3-ruim
4-não opinou
Respostas diferentes não serão consideradas.
Sexo:
1-Masculino
2-Feminino
O cinema possui capacidade para 10 pessoas. Ao final da pesquisa deverá ser mostrado os seguintes dados:
Quantidade de cada resposta(opinião sobre o filme)
Resposta mais votada
Quantidade de mulheres que responderam ótimo.
O meu código deu certo porém não está mostrando no final os dados, o que será que eu errei nisso?
Program Cinema;
Uses Crt;
var Maisvotada,Cont,otimo,bom,ruim,naoopinou…
sexo:integer;
opcao:integer;
begin
clrscr;
bom:=0;
ruim:=0;
naoopinou:=0;
Maisvotada:=0;
contfem:=0;
contmas:=0;
OtimoFem:=0;
cont:=0;
for cont:= 1 to 10 do
begin
{Clrscr}
writeln(' ');
writeln('O que vocˆ achou do Filme?');
writeln('1 - otimo');
writeln('2 - Bom');
writeln('3 - Ruim');
writeln('4 - Nao quero opinar');
writeln('Digite sua opcao, por favor');
readln(opcao);
case opcao of
1:otimo:=otimo+1;
2:bom:=bom+1;
3:ruim:=ruim+1;
4:Naoopinou:=Naoopinou+1;
end;
writeln('');
writeln('Qual ‚ o seu sexo?');
writeln('1 - Masculino');
writeln('2 - Feminino');
readln(sexo);
Case sexo of
1:contmas:=contmas+1;
2:contfem:=contfem+1;
end;
If (sexo=2) and (opcao=1) then
OtimoFem:=OtimoFem+1;
End;
Begin
Writeln(' '); {APARTIR DAQUI O PASCAL NÃO EXECUTA O PROGRAMA, NO QUE ERREI?}
Writeln(otimo,' responderam 1-Otimo');
Writeln(bom,' responderam 2-Bom');
Writeln(ruim,' responderam 3-Ruim');
Writeln(naoopinou,' responderam 4-Nao Opinou');
Writeln('');
End;
If otimo>Maisvotada then
Begin
Maisvotada:=otimo;
Writeln('A opcao mais votada foi o 1-Otimo');
End
Else
If bom>Maisvotada then
Begin
Maisvotada:=bom;
Writeln('A opcao mais votada foi o 2-Bom');
End
Else
If ruim>Maisvotada then
Begin
Maisvotada:=ruim;
Writeln('A opcao mais votada foi o 3-Ruim');
End
Else
If naoopinou>Maisvotada then
Begin
Maisvotada:=naoopinou;
End;
Begin
Writeln('');
Writeln('A quantidade de Homens foi: ',Contmas);
Writeln('A quantidade de Mulheres foi:',Contfem);
Writeln('A quantidade de Mulheres que responderam otimo foi:',OtimoFem)
end;
end.
Update:Ele fez um monte pergunta pois seria para 10 pessoas, pra diminuir isso só é trocar o 10 do cont logo antes do begin para um número menor.
Comments
Olá,
Tente rodar o código abaixo. Montei ele de acordo com o enunciado, só faltou o tratamento do empate da resposta mais votada.
Existem formas muito melhores de se resolver esse problema, mas estou a mais ou menos 10 anos sem utilizar o BP7 e até que foi legal relembrar um pouco.
program teste;
uses
crt;
const
op: array[1..4] of string = ('otimo','bom','ruim','nao opinou');
var
cho, chs: char;
i, cont, erro, FO, MV: integer; {FO = feminimo & otimo; MV = mais votada}
s: string;
opcao: array[1..4] of integer;
sexo: array[1..2] of integer;
begin
for cont:= 1 to 10 do
begin
{-- tela --------------------------------------------------------------}
clrscr;
gotoxy(10,01); writeln('PESQUISA');
gotoxy(10,02); writeln('----------------------------------------');
str(cont,s);
gotoxy(36,2); write(' ',s,'ø opiniao ');
gotoxy(10,04); writeln('O que achou do Filme:');
gotoxy(10,05); writeln(' 1 - otimo');
gotoxy(10,06); writeln(' 2 - bom');
gotoxy(10,07); writeln(' 3 - ruim');
gotoxy(10,08); writeln(' 4 - nÆo opinou');
gotoxy(10,10); writeln('Sexo: ');
gotoxy(10,11); writeln(' 1 - masculino');
gotoxy(10,12); writeln(' 2 - feminino');
{-- leitura opiniao ---------------------------------------------------}
gotoxy(33,04);
repeat
cho:= readkey;
if not (cho in['1'..'4']) then
begin
gotoxy(15,14);
writeln('-- OPCAO INVALIDA --');
gotoxy(33,4);
end
else
begin
val(cho, i, erro);
opcao[i]:= opcao[i] + 1;
end;
until cho in['1'..'4'];
{-- leitura sexo ------------------------------------------------------}
gotoxy(16,10);
repeat
chs:= readkey;
if not (chs in['1'..'2']) then
begin
gotoxy(15,14); writeln('-- OPCAO INVALIDA --');
gotoxy(16,10);
end
else
begin
val(chs, i, erro);
sexo[i]:= sexo[i] + 1;
end;
until chs in['1'..'2'];
if (cho = '1') and (chs = '2') then
FO:= FO +1;
end;
{-- resultado -------------------------------------------------------------}
clrscr;
gotoxy(10,01); writeln('RESULTADO');
gotoxy(10,02); writeln('----------------------------------------');
gotoxy(10,04); write('O que achou do Filme');
gotoxy(10,05); write(' otimo: ', opcao[1]);
gotoxy(10,06); write(' bom: ', opcao[2]);
gotoxy(10,07); write(' ruim: ', opcao[3]);
gotoxy(10,08); write(' nÆo opinou: ', opcao[4]);
gotoxy(10,10); write('Sexo');
gotoxy(10,11); write(' masculino: ', sexo[1]);
gotoxy(10,12); write(' feminino: ', sexo[2]);
MV:=0;
for cont:= 1 to 4 do
begin
if opcao[i] > MV then
MV:= opcao[i];
end;
gotoxy(10,14); write('Resposta mais votada: ', MV, ' - ',op[MV]);
gotoxy(10,15); write('Qtd de mulheres que responderam otimo: ',FO);
readkey;
end.
espero ter ajudado
Fabiano.
ecu sou programadora, e também comecei aprendendo Pascal. E usando esse livro de Pascal citado pelo colega aqui em cima. O massête é que vc deve lembrar que o computer é burro. Quando o professor dizia isso todo mundo achava muito engraçado, mas é importante saber, é como uma torneira aberta, ela não fecha sozinha... É sério mesmo, a gente as vezes se esquece que é uma máquina e aceita tudo o que a gente faz ou deixa de fazer. Portanto comece a prestar mais atenção no processo como um todo. Boa sorte... e relaxe..
O 1º erro q percebi ao rodar o programa é que o seu Gotoxy não tá mt certo não, podia tá mais alinhado pra facilitar a compreensão(Mas isso é facil de fazer e é o de menos) e tbm não entendi pq algumas perguntas ele faz um moi de vezes e dps de repente ele sai assim do nada.
Me explica 1º isso antes q eu diga o resto