Ir ao conteúdo
  • Cadastre-se

Exibir tabuadas... Fica travado


Posts recomendados

Eu tenho um exercício para fazer em pascal que pede:

"Exibir a tabuada dos valores de um a vinte, no intervalo de um a dez. Entre as tabuadas, solicitar que o usuário pressione uma tecla."

 

Eu até consegui fazer o algoritmo, eu acho, mas quando vou executar fica sem exibir nada, a tela fica totalmente preta... poderiam me dar uma dica do que errei, ou esqueci?

Program Exercicio_27 ;
var
 T, I, R: Integer;    //T = Número da tabuada; I = Número da multiplicação
                      //R = Resultado
 Begin
  T := 1;
  I := 1;
  
  While (T <= 20) do
   begin
    R := T * I;
   end;  
  
   While (I <= 10) do
    begin
     Write (T ,'x', I = R);
	I := I + 1;
end;
    
  readkey;  	 
  
 End.

 

Obrigado!

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

  • Membro VIP

Olá @danilo001.

 

1 hora atrás, danilo001 disse:

While (T <= 20) do
  begin
  R:=T*I;
  end;

 

Nesse trecho, você usa T como parâmetro para o while, mas o seu valor está fixo.. ou seja,  o valor de T não está sendo alterando no while, logo ficará num loop infinito... Ficará sempre calculando R=T*I, logo R=1*1, R=1... resumindo: ficará infinitamente atribuindo 1 a R.

 

No aguardo.

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

Consegui deixar essa forma, agora exibe, mas fica:

"1 x true" - dez vezes

A partir do 2 fica:

"2 x false" - dez vezes

Até o 20, quer seria a última tabuada a exibir.

Program Exercicio_27 ;
var
 T, I, R: Integer;    //T = Número da tabuada; I = Número da multiplicação
                      //R = Resultado
 Begin
  T := 1;
  
  While (T <= 20) do
   begin
    I := 1; 
  
   While (I <= 10) do
    begin
     R := T * I; 
     Writeln (T ,'x', I = R);
	 I := I + 1;
    end;
    
    T := T + 1;
    
  readkey;
  end;  	 
  
 End.

 

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

Agora deu certo!

O estranho é que, ele começa fazendo o número da tabuada multiplicado por 2, até 11.

Tipo:

"1 x 2"

"1 x 3'

...

"1 x 11"

 

Mas teria que ser:

"1 x 1"

...

"1 x 10"

 

OBS.: Esqueci de dizer, apesar disso, a multiplicação mostra normal..

"1 x 2 = 1"

e assim por diante... estranho isso

 

Program Exercicio_27 ;
var
 T, I, R: Integer;    //T = Número da tabuada; I = Número da multiplicação
                      //R = Resultado
 Begin
  T := 1;
  
  While (T <= 20) do
   begin
    I := 1; 
  
   While (I <= 10) do
    begin
     R := T * I;
     I := I + 1; 
     Writeln (T ,'x', I, ' = ', R);
    end;
    
    T := T + 1;
    
  readkey;
  end;  	 
  
 End.

 

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

É esse:

Program Exercicio_27 ;
var
 T, I, R: Integer;    //T = Número da tabuada; I = Número da multiplicação
                      //R = Resultado
 Begin
  T := 1;
  
  While (T <= 20) do
   begin
    I := 1; 
  
   While (I <= 10) do
    begin
     R := T * I;
     I := I + 1; 
     Writeln (T ,'x', I, ' = ', R);
    end;
    
    T := T + 1;
    
  readkey;
  end;  	 
  
 End.

 

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

@danilo001   ali está o erro, você colocou a soma do I antes de escrever  a resposta, mas lá no primeiro post estava depois do writeln .

   aqui seu código :

Program Exercicio_27 ;
  var
    T, I, R: Integer;    //T = Número da tabuada; I = Número da multiplicação
                      //R = Resultado
    Begin
      T := 1;
      While (T <= 20) do
      begin
        I := 1;
        While (I <= 10) do
        begin
          R := T * I;
          Writeln (T ,'x',I,' = ',R);
          I := I + 1;
        end;
        T := T + 1;
        readln;
      end;
   End.

 

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

  • Membro VIP

Olá.

15 horas atrás, danilo001 disse:

É verdade, acho que quando eu estava corrigindo ele, devo ter recortado e colado ele sem perceber.

Agora está funcionando 100%

Muito obrigado pela ajuda!

Bacana... mas tem alguns pontos que podem melhorar..

 

- Como os laços repetições são fixos (de 1 a 20 e 1 a 10), melhor usar para, em vez de while;

- Você não precisa armazenar o resultado da conta, a conta pode ser feita diretamente no writeln;

 

No aguardo.

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

Visitante
Este tópico está impedido de receber novas respostas.

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...