Ir ao conteúdo

Posts recomendados

Postado

Gostaria de saber o que teria que fazer para nao repetir o 1 no algoritmo colocando o numero digitado como 1

Program Pzim ;
var
n : integer;
Begin
writeln('Digite um numero:');
readln (n);
while (n < 15) do
    begin
         writeln (n);
         n := n + 1; 
    end;

End.

 

  • Membro VIP
Postado

Você quer que a pessoa não digite números já digitados, correto?

Precisará criar um vetor (array) de 15 posições. Esse vetor pegará o número digitado e fará comparação com com os outros já digitados que estarão no vetor. 

 

Você precisa agora entender como encaixar um vetor no meio do seu programa. Se você já aprendeu a criar funções, pode chamar uma função "verifica" que faça a busca do número no vetor. Use um if else, onde Se o número foi achado dê uma mensagem, senão escreva o número e incremente n := n+1.

 

Se não tiver aprendido, você terá que criar um while ou um for logo depois de abrir o while e fazer essa busca aí.

Postado

@Math.Pi acho que entendeu errado, o numero que digitei foi 1 e gostaria que o programa nao o repetisse.

Aqui esta o que disse:

Sem título.png

Sem título2.png

  • Curtir 1
Postado

@Math.Pi eu ja tinha colocado do jeito que você disse só que ai mesmo eu colocando que n < 15 ele vai ate 15.

Por exemplo fazendo SOMENTE a modificação que você disse ele fica assim

Sem título.png

Postado

Estou incomodando pakas mas me diga por favor qual a diferença dessa parte?

begin

     writeln (n + 1);

      n := n + 1;

end;

e dessa?

begin

n := n + 1;     

writeln (n + 1);

end;

 

 E me explique por favor o que você mudou no algoritmo

  • Membro VIP
Postado

Olá @T635.


Vou tentar explicar uns conceitos inicialmente.
 

Veja, o Pascal ler as instrução "da esquerda para direita - de cima para baixo"... ou seja, exatamente da mesma forma que fazemos leitura de textos. No Pascal, o que separa os comando é o ";". Ex.: o primeiro código poderia ficar assim:

begin writeln(n+1);  n:=n+1;
end;

Ou tudo numa linha só... tanto faz...

A ordem de execução será exatamente a mesma... (como explicado acima).
 

Além dessa "regra", quando temos uma operação dentro de uma função (no exemplo o writeln), a operação (calculo) é efetuada primeiro, e depois é lançado o resultado na função.. ex.:

writeln (n + 1);

Primeiro soma "o valor de n com 1" e após é jogado o resultado no writeln, que por sua vez irá "escrever na tela"...  veja! esse cálculo não altera o valor de n!!! Está trabalhando apenas com VALORES. Nesse contexto, o n é tratado como um número mesmo... (no caso o valor que está armazenado nele no momento da execução).

Já  n := n + 1;. O n da esquerda é tratado como um VARIÁVEL, e o n da direita como VALOR, ou seja, "a variável n vai ser igual o valor de n mais 1". Ex.:  Sendo n=10. n=10+1, n=11!

 

Até ai tudo bem? (nada de novo, apenas entendendo o processo)

 

AGORA VAMOS A PARTE QUE INTERESSA

Como já sabido, o Pascal segue uma sequência de leitura de instrução, logo, ao inverter a ordem dos comandos, consequentemente as operações serão executadas na nova ordem.. ou seja, antes exibe o resultado da soma, depois atualiza o n. No outro código, primeiro atualiza o n, para depois efetuar a soma....
Ex.:

Código 1

Supondo n=8
writeln(n+1); //vai exibir 9
n:=n+1;  //n vai ficar igual a 9


Código 2

Supondo n=8
n:=n+1;  //n vai ficar igual a 9
writeln(n+1); //vai exibir 10 (pois nesse momento, o n está igual a 9 já)



No aguardo.

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