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

Sign In or Register to comment.