Ir ao conteúdo

AJUDA COM PROGRAMA PASCAL


napmartins

Posts recomendados

Postado

Olá, gostaria que alguém me ajudasse a resolver esta questão... já fiz de várias formas mas não consegui resolve-la de jeito algum.

 

Obrigada.

 

 

Escreva um programa em Pascal que leia do teclado um inteiro n, maior ou igual a 1, e que 
apresente no vídeo n linhas da forma abaixo. 
Por exemplo, as seguintes linhas devem ser apresentadas se n = 5.
1 1 1 1 1
4 4 4 4
9 9 9
16 16
25
Se n < 1, uma mensagem de erro deve ser apresentada no vídeo.
  • Membro VIP
Postado

Olá!

Essa é uma questão meio matemática e meio lógica.

 

Se n = 5, então você terá 5 linhas de resultados.

Se você reparar, em cada linha, existe um cálculo de potência

 

1x1 = 1

2x2 = 4

3x3 = 9

4x4= 16

5x5 = 25

 

O programa ficará mais ou menos assim:

 

leia N

faça uma laço FOR de 1 até N para criar as linhas. 

Dentro desse laço FOR, faça a potenciação.

Pra saber quantas vezes você vai repetir o número, é só fazer a fórmula: N + 1- i, onde "i" é o índice do FOR.

 

Acho que vai dar certo. Fiz um "chinês" aqui rapidamente.

 

Tente fazer algum código e poste aqui. Informe também os erros dados para que possamos verificar e acertar.

 

Ficarei online novamente pela manha, 10hs.

Postado

Acabei fazendo desta maneira... Não sei se está correto mas fui pela minha lógica.

program cadeia (input{teclado}, output{video});procedure lerValor(var n: integer{s});Begin                write(output, 'Digite um valor: ');                readln(input, n);                while (n < 1) do               Begin                write(output, 'Digite um valor maior que 1: ');                readln(n);end;end;procedure exibeLinhas(n: integer{e});vari, j: integer;Beginfor i := n downto 1 doBeginfor j := i downto 1 do                              write(output, (n-i+1)*(n-i+1), '    ');writeln(output);end;                               end;varn: integer;begin                lerValor(n);                exibeLinhas(n);                readln();end.
  • 3 semanas depois...
  • Membro VIP
Postado

Creio que ficou tudo certinho...

 

Só aconselharia dá uma revisada na identação... achei que ficou muito espaçosa...

 

Existem vários padrões, no meu padrão ficara assim:
 

PROGRAM cadeia (input{teclado}, output{video});procedure lerValor(var n: integer{s});  begin  write(output, 'Digite um valor: ');  readln(input, n);  while (n < 1) do                   begin    write(output, 'Digite um valor maior que 1: ');    readln(n);    end;  end;procedure exibeLinhas(n: integer{e});  var    i, j: integer;  begin  for i := n downto 1 do    begin    for j := i downto 1 do      write(output, (n-i+1)*(n-i+1), '    ');    writeln(output);    end;  end;var  n: integer;BEGINlerValor(n);exibeLinhas(n);readln();END.

Obs.: Basicamente o que é "identado" anda duas espaços para direita. E o as linhas dentro do "begin/end" ficam na mesma direção. (não é muito comum fazer isso com o begin/end, mas acho mais econômico e funcional assim).

 

Qualquer avisa.

 

Abraços

 

 

Acabei fazendo desta maneira... Não sei se está correto mas fui pela minha lógica.

program cadeia (input{teclado}, output{video});procedure lerValor(var n: integer{s});Begin                write(output, 'Digite um valor: ');                readln(input, n);                while (n < 1) do               Begin                write(output, 'Digite um valor maior que 1: ');                readln(n);end;end;procedure exibeLinhas(n: integer{e});vari, j: integer;Beginfor i := n downto 1 doBeginfor j := i downto 1 do                              write(output, (n-i+1)*(n-i+1), '    ');writeln(output);end;                               end;varn: integer;begin                lerValor(n);                exibeLinhas(n);                readln();end.

 

Arquivado

Este tópico foi arquivado e está fechado para 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!