Ir para conteúdo
Fórum Script Brasil
  • 0

Auxílio em um exercício de Pascal


ucastro

Pergunta

Estou tentando aprender lógica de programação e no livro pede para realizar um exercício.

Ler um número N qualquer menor ou igual a 50 e apresentar o valor obtido da multiplicação sucessiva de N por 3 enquanto o produto for menor que 250 l(N*3;N*3*3;N*3*3*3;etc).

Não estou conseguindo nem montar um algoritmo decente veja abaixo. Precisava de alguma ajuda.

program sucessivo;

uses crt;

var

Contador,N2:integer;

begin

clrscr;

write('Digite um número menor que 50: ');readln(Contador);

while Contador<=50 do

Begin

Contador:=Contador+1;

N2:=Contador*Contador*Contador;

Writeln('O cubo de ',Contador,' é de ',N2);

while N2> 250 do

readln;

end;


end.

Editado por ucastro
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Ele não quer o cubo do número, ele quer o resultado da multiplicação sucessiva por 3 até que o produto seja maior ou igual a 250. Ou seja, seria algo assim:

program sucessivo;

uses crt;

var
    numero : integer;

begin
    clrscr;

    numero := 0;
    while (numero<=0 or numero>50) do
    begin
        write('Digite um número menor que 50: ');
        readln(numero);
    end;

    repeat
        numero := numero * 3;
    until numero<250;

    writeln("Resultado final: ", numero);
end.

Certo? ;) (Dê uma conferida nos ponto-e-vírgulas, pois não testei e talvez tenha colocado algum errado - detesto Pascal por isso... rsrsrsrs).

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Graymalkin'pela citação: ele não quer o cubo do número, ele quer o resultado da multiplicação sucessiva por 3 até que o produto seja maior ou igual a 250.

Fiz as seguintes alterações:

program sucessivo;

uses crt;

var

N1,contador:real;

Begin

clrscr;

writeln('Digite um número menor que 50');readln(N1);

contador:=3;

while N1<=50 do

begin

writeln(N1:5:0,'x',contador:5:0,'=',N1*contador:5:0);
repeat

contador:=contador+1;


until N1*contador<=250;

end;

end.

Funciona agora corretamente, o único problema é que não encerra a programação pára no último número antes ou igual 250 e não finaliza não adianta colocar tipo writeln;

write('Aperte tecla <ENTER> para encerrar');readln;

Alguém tem alguma dica de como posso encerrar o programa?

Editado por ucastro
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, pra quê um contador? É só multiplicar por 3 e ir guardando. Se você digita o valor 5, por exemplo, ele tem que fazer:

5 * 3 = 15

15 * 3 = 45

45 * 3 = 135

135 * 3 = 405

----------- Aqui parou porque passou de 250

Dê uma olhada novamente no código do meu post. Você só precisa realmente de uma variável (a não ser que queira saber quantas iterações foram necessárias, mas mesmo assim essa quantia *não* será usada no cálculo).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Sander_Ethernus

pelo que entendi, você quer ler um número menor ou igual a 50

depois, ir mutiplicando o número por 3 até que o resultado dessa multiplicação seja menor que 250

faça assim:

program qualquer;

uses crt;

var N, multi : integer;

flag:boolean;

begin

N:=0; multi:=0; flag:=false; {iniciando variáveis}

clrscr; {clear screen ou limpa tela}

while (flag = false) do {enquanto flag for igual a falso faça}

begin

writeln('Informe um número menor que 50');

readln(N);

if (N <51) and (N >0) then {comparo para ver se o número é maior que 0 ou maior que 50}

flag:=true {se sim atribuo o valor true para flag e saio do while}

else

writeln('Número Inválido, digite novamente'); {senão o usuário tenta novamente}

end;

mult:=N; {mult recebe N para execurar a multiplicação por 3}

while (multi <251) do {enquanto multi for menor que 251 faça}

mult:=mult*3; {multiplico ele por 3}

writeln('O resultado da operação é:', multi); {exibo o resultado}

end.

Creio que seja isso, se desejar ajuda poste novamente aqui no fórum...

um abraço!

Link para o comentário
Compartilhar em outros sites

  • 0
tente isso funciona em VisuAlg 2.0 :) ... isso certo!! 100%
Var
n : inteiro
INICIO
escreval ( "digite uma numero:")
leia (n)
se ( n<50) ou (n=50) então
enquanto ( n<250) faca
n<- n*3
se ( n <250) então
escreval (n)
fimse
fimenquanto
senao
escreval ("invalid")
fimse
FIMALGORITMO
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...