Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Exercício de apostila sobre While+Repeat (Sofrido) hahaha


Posts recomendados

Sofri demais para resolver, consegui resolver mas estou com uma pulga atrás da orelha e sem vontade de voltar a quebrar a cabeça, vou mandar o exercicio e o código q fiz.

Segue o código:

Program b ;
Var Voto: integer; Continuar: string; cont, c1, c2, c3, c4:integer;
 Begin
	   Writeln('ESCOLHA SEU CANDIDATO A VOTAÇÃO ');
	   Writeln('1 - CARLAO'   );
	   Writeln('2 - BORRACHA' );
	   Writeln('3 - BOLSONARO');
	   Writeln('4 - BOULOS'   ); 
	   readln(Voto);       				 				 	       
	    Writeln('Deseja finalizar a votação?'); Readln(Continuar);
	      while (upcase(Continuar)) = 'NAO' do
	        Begin
	          Writeln('ESCOLHA SEU CANDIDATO A VOTAÇÃO ');
	          Writeln('1 - CARLAO'   );
	          Writeln('2 - BORRACHA' );
	          Writeln('3 - BOLSONARO');
	          Writeln('4 - BOULOS'   );
						Readln(voto);
					 If voto = 1 then
						begin
		          inc(Cont);
		          inc(c1,  cont);
		         end
		        else if voto = 2 then
		         begin
		          inc(Cont);
		          inc(c2,  cont);
		         end
		         else if voto = 3 then
		         begin
		          inc(Cont);
		          inc(c3,  cont);
		         end
		        else if voto = 4 then
		         begin
		          inc(Cont);
		          inc(c4,  cont);
		         end;
						   
						   Repeat
						      Writeln(' CARLAO    = ', c1   );
	                Writeln(' BORRACHA  = ', c2   );
	                Writeln(' BOLSONARO = ', c3   );
	                Writeln(' BOULOS    = ', c4   ); 
						     
						     
						     Writeln('Deseja continuar a votação?'); Readln(Continuar);
						    
						   Until (upcase(continuar)) = 'NAO';
						    
								 Continuar:= 'Sim'; 								
				  end;		   
	    		     
 End.

 205729390_WhatsAppImage2019-08-29at10_12_23PM.thumb.jpeg.1e3174ecf998011f5139025f1ab24f6b.jpegfile:///C:/Users/ACER/Downloads/WhatsApp%20Image%202019-08-29%20at%2010.12.23%20PM.jpeg

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@AnonymousLPH     seu código está bom , faltou zerar a variável cont ,  pois do jeito que está ele está somando os votos todos e no final a quantidade está errada , e uma melhor organização seria assim  :

Program b_votacao ;
Var 
  Voto             : integer; 
	Continuar        : string; 
	cont,c1,c2,c3,c4 : integer;
Begin
  while(upcase(Continuar)) <> 'NAO' do
  Begin
    Writeln('ESCOLHA SEU CANDIDATO A VOTAÇÃO ');
    Writeln('1 - CARLAO'   );
    Writeln('2 - BORRACHA' );
    Writeln('3 - BOLSONARO');
    Writeln('4 - BOULOS'   );
    Readln(voto);
    cont := 0;
    case voto of
    1 : begin
          inc(Cont);
          inc(c1);
        end;
    2 : begin
          inc(Cont);
          inc(c2);
        end;
    3 : begin
          inc(Cont);
          inc(c3);
        end;
    4 : begin
          inc(Cont);
          inc(c4);
        end;
    end;
    Writeln('Deseja continuar a votação sim/nao'); 
    Readln(Continuar);
  end;
  textcolor(11);
  Repeat
    Writeln(' CARLAO    --= ',c1);
    Writeln(' BORRACHA  --= ',c2);
    Writeln(' BOLSONARO --= ',c3);
    Writeln(' BOULOS    --= ',c4); 			     
    Writeln('Deseja continuar a votação  sim/nao'); 
    Readln(Continuar);
  Until (upcase(continuar)) = 'NAO';				    
End.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Sobre:

10 horas atrás, devair1010 disse:

faltou zerar a variável cont

 

Zerar para quê? no código original, essa variável estava sendo usada incorretamente mesmo. No seu código, ela não está sendo utilizada. Basta apagar.

 

 

 

Sobre:

10 horas atrás, devair1010 disse:

  Repeat
    Writeln(' CARLAO    --= ',c1);
    Writeln(' BORRACHA  --= ',c2);
    Writeln(' BOLSONARO --= ',c3);
    Writeln(' BOULOS    --= ',c4); 			     
    Writeln('Deseja continuar a votação  sim/nao'); 
    Readln(Continuar);
  Until (upcase(continuar)) = 'NAO';				    

 

Para quê ficar repetindo o resultado final? Deu uma viajada aí, em @devair1010 😁

 

 

Então, para mim o enunciado também ficou um pouco confuso... cheguei a essa estrutura:

program b_votacao ;
uses
  CRT; //necessário para funcionar ClrScr e ReadKey alguns compiladores (PZim não precisa)
var
  voto        :integer;
  continuar   :string;
  c1,c2,c3,c4 :integer;
  o06pediuParaSair:boolean;
begin
o06pediuParaSair := false;
while (UpCase(continuar) <> 'NAO') do
  begin
  ClrScr;
  writeln('ESCOLHA SEU CANDIDATO A VOTAÇÃO ');
  writeln('1 - CARLAO   ');
  writeln('2 - BORRACHA ');
  writeln('3 - BOLSONARO');
  writeln('4 - BOULOS   ');
  readln(voto);
  case voto of
    1 :Inc(c1);
    2 :Inc(c2);
    3 :Inc(c3);
    4 :Inc(c4);
  end; //fim case
  writeln('Deseja continuar a votação (sim/nao)');
  readln(continuar);
  if (UpCase(continuar) = 'NAO') and (not o06pediuParaSair) then
    begin
    o06pediuParaSair := true;
    continuar := 'sim';
    end;
  end;
Textcolor(11);
writeln('');
writeln('RESULTADO DA VOTAÇÃO');
writeln(' CARLAO    --= ',c1);
writeln(' BORRACHA  --= ',c2);
writeln(' BOLSONARO --= ',c3);
writeln(' BOULOS    --= ',c4);
ReadKey();
end.

 

No caso, não vi necessidade de usar 2 laços de repetição.

 

Uma forma poderia ser assim:

program b_votacao ;
uses
  CRT; //necessário para funcionar ClrScr e ReadKey alguns compiladores (PZim não precisa)
var
  voto        :integer;
  continuar   :string;
  c1,c2,c3,c4 :integer;
  o06pediuParaSair:boolean;
begin
o06pediuParaSair := false;
while (UpCase(continuar) <> 'NAO') do
  begin
  repeat
    ClrScr;
    writeln('ESCOLHA SEU CANDIDATO A VOTAÇÃO ');
    writeln('1 - CARLAO   ');
    writeln('2 - BORRACHA ');
    writeln('3 - BOLSONARO');
    writeln('4 - BOULOS   ');
    readln(voto);
    case voto of
      1 :Inc(c1);
      2 :Inc(c2);
      3 :Inc(c3);
      4 :Inc(c4);
    end; //fim case
    if (not ((voto = 1) or (voto = 2) or (voto = 3) or (voto = 4))) then
      begin
      writeln('Voto inválido');
      ReadKey();
      end;
    until (voto = 1) or (voto = 2) or (voto = 3) or (voto = 4);
  writeln('Deseja continuar a votação (sim/nao)');
  readln(continuar);
  if (UpCase(continuar) = 'NAO') and (not o06pediuParaSair) then
    begin
    o06pediuParaSair := true;
    continuar := 'sim';
    end;
  end;
Textcolor(11);
writeln('');
writeln('RESULTADO DA VOTAÇÃO');
writeln(' CARLAO    --= ',c1);
writeln(' BORRACHA  --= ',c2);
writeln(' BOLSONARO --= ',c3);
writeln(' BOULOS    --= ',c4);
ReadKey();
end.

 

 

Ou ainda, mudando a interpretação do enunciado, poderia ser algo como:

program b_votacao ;
uses
  CRT; //necessário para funcionar ClrScr e ReadKey alguns compiladores (PZim não precisa)
var
  voto        :integer;
  continuar   :string;
  c1,c2,c3,c4 :integer;
  o06pediuParaSair:boolean;
begin
o06pediuParaSair := false;
while (not o06pediuParaSair) do
  begin
  repeat
    ClrScr;
    writeln('ESCOLHA SEU CANDIDATO A VOTAÇÃO ');
    writeln('1 - CARLAO   ');
    writeln('2 - BORRACHA ');
    writeln('3 - BOLSONARO');
    writeln('4 - BOULOS   ');
    readln(voto);
    case voto of
      1 :Inc(c1);
      2 :Inc(c2);
      3 :Inc(c3);
      4 :Inc(c4);
    end; //fim case
    if (not ((voto = 1) or (voto = 2) or (voto = 3) or (voto = 4))) then
      begin
      writeln('Voto inválido');
      ReadKey();
      end;
    until (voto = 1) or (voto = 2) or (voto = 3) or (voto = 4);
  writeln('Deseja continuar a votação (sim/nao)');
  readln(continuar);
  if (UpCase(continuar) = 'NAO') then
    begin
    writeln('Mais uma vez: Deseja continuar a votação (sim/nao), ZERO MEIA?');
    readln(continuar);
    if (UpCase(continuar) = 'NAO') then
      o06pediuParaSair := true;
    end;
  end;
Textcolor(11);
writeln('');
writeln('RESULTADO DA VOTAÇÃO');
writeln(' CARLAO    --= ',c1);
writeln(' BORRACHA  --= ',c2);
writeln(' BOLSONARO --= ',c3);
writeln(' BOULOS    --= ',c4);
ReadKey();
end.

 

Se entenderem diferente, avisa aí... pois buguei um pouco!

 

Qualquer dúvida/crítica/sugestão é só postarem.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Simon Viegas         eh ,  esse loop repeat já estava no código do   @AnonymousLPH   , também não vi necessidade dele não , mas no enunciado pede para usar o while e o repeat ;           Creio que poderia usar o repeat para fazer uma pausa no final  ,  tipo assim :

repeat  until keypressed ;

mesmo que se possa usar um read ou readln ou  o readkey , mas apenas para satisfazer o enunciado  .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@AnonymousLPH    tranquilo ,  você só precisa se acostumar com os comandos ,  e no começo o que é difícil no java é saber que tipo de código fazer , pois tem vários tipos , de console , de interface , e isso precisa ser definido no inicio , na hora de criar o código , então um local onde você consegue iniciar com mais facilidade é no youtube com o professor Guanabara :

https://www.youtube.com/watch?v=ijXXaIYsVx4

ele usa uma IDE boa fácil e gratis , que é o netbeans .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...