Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Não estou conseguindo realizar esses programas


Visitante

Posts recomendados

Faça um programa que receba um número inteiro N maior que 0 e
informe qual o maior e qual o menor dígito do número. Desconsidere os zeros a
esquerda do número.

 

Faça um programa que receba um valor inteiro N. Em seguida seu
programa deverá receber N números inteiros e calcular o fatorial de cada número
digitado.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Pelo que eu entendi, o programa 1 vai ter que desmembrar os dígitos de um número. Depois disso, você precisará de um laço de repetição pra fazer as devidas comparações. Eu não sei como como se separa um número em algarismos pelo pascal. Mas você postando seu código, talvez cheguemos ao resultado.

 

O segundo não é comparação. Você só vai receber o número e fatorar ele. Faça um passo de cada vez. ex: fatore um número. Depois faça a entrada de N pra saber quantos números precisará fatorar.

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

@Math.Pi, segue o código:

 

Program compara_numeros;
var
  n1,result,n2: integer;
    
begin
  writeln ('Escreva um numero maior que zero:');
  read(n1);
  begin
    writeln ('o maior numero eh:',result);
  end;
  begin
    write('o menor numero eh:',result);
  end;
end.

 

Não estou conseguindo separar os números para indicar qual é maior ou qual é menor.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Em 19/11/2021 às 20:37, Izabelle13 disse:

Faça um programa que receba um número inteiro N maior que 0 e informe qual o maior e qual o menor dígito do número. Desconsidere os zeros a esquerda do número.


Vamos inicialmente focar apenas no cerne do problema: como separar os dígitos?

 

Direto ao ponto:

  1. https://www.google.com/search?q=separar+digitos+visualg
  2. achei esse vídeo: 
  3. Opa! Já sabemos uma forma de separar...

Vamos testar:

 

algoritmo "Separar dígitos"
var
   numInteiro: inteiro

inicio
numInteiro <- 123
escreval(numInteiro)

escreval(numInteiro\100 mod 10)
escreval(numInteiro\10 mod 10)
escreval(numInteiro\1 mod 10)

fimAlgoritmo


Resultado:

image.png

 

Oh! Lá!, funciona mesmo.

 

"Ah!, mas eu não sei quantos dígitos terá o número". Cria um laço que fica separando por etapas (@Math.Pi ). Exemplo:

 

algoritmo "Separar dígitos para tamanho variados"
var
   numInteiro: inteiro
   qtdDigitos: inteiro

inicio
   qtdDigitos <- RandI(7) + 1
   numInteiro <- RandI(Int(10 ^ qtdDigitos))
   escreval(numInteiro)

   enquanto (numInteiro > 0 ) faca
      escreva (numInteiro \ 1 mod 10)
      numInteiro <- numInteiro \ 10
   fimEnquanto

   escreval("")
fimAlgoritmo

 

image.png

 

 

Pronto! Só verifica o maior...

 

algoritmo "Verificar o maior e menor dígito de um número inteiro"
var
   num: inteiro
   numTemp: inteiro
   qtdDigitos: inteiro
   maior, menor: inteiro
   digito: inteiro

inicio
   qtdDigitos <- RandI(8) + 1
   num <- RandI(Int(10 ^ qtdDigitos)) + 1

   menor <- 9
   numTemp <- num
   
   enquanto (numTemp > 0 ) faca
      digito <- numTemp \ 1 mod 10
      numTemp <- numTemp \ 10

      se (digito > maior) entao
         maior <- digito
      fimSe
     
      se (digito < menor) entao
         menor <- digito
      fimSe
   fimEnquanto

   escreval("")
   escreval("Número: ", num:1)
   escreval("Maior dígito: ", maior:1)
   escreval("Menor dígito: ", menor:1)
fimAlgoritmo

 

image.png

 

Adendo: @Izabelle13, tente entender a lógica da separação que foi sugerida no vídeo... veja que foi utilizado "\" em vez de "/". Simplesmente tente entender o que foi feito. Depois tente entende qual foi o raciocínio que levou ao autor chegar nessa fórmula. Tipo: "Hum! ele deve ter pensado em isolar um dígito, pra isso fez..."

Adendo 2: mesmo com "/" também meio que iria funcionar, mas deixo para você também tentar entender porque e qual seria a diferença em usar um ou outro.

 

 

Sobre:

Em 19/11/2021 às 20:37, Izabelle13 disse:

Faça um programa que receba um valor inteiro N. Em seguida seu
programa deverá receber N números inteiros e calcular o fatorial de cada número
digitado.

 

É mesma coisa... qual o cerne aí? "Calcular um Fatorial", correto?

 

Então, se não sabe calcular um fatorial, como vai calcular "N" fatoriais? Não faz sentido algum... Logo, primeiro crie um programa que calcula o fatorial de um número... depois só simplesmente fazer que calcule para N.

 

Repito: não faz sentido tentar criar um laço de repetição ANTES de já saber calcular um fatorial seria só "perca" de tempo >D

 

Adendo: na mesma analogia dos exemplos do código anterior, faça o próprio programa gerar o valor de N e também que gere N outros números aleatórios... não "perda" tempo digitando número no teclado... bastaria ficar rodando e ver os resultados.

 

Qualquer dúvida é só postar.

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

Em 19/11/2021 às 20:43, Visitante disse:

estou com duvida nas variaveis, não sei qual utilizar, porque ai ele não mostra corretamente o numero maior e o menor

Primeiramente precisa ler os 2, você só falou para ler n1.
Segundamente precisa dizer ao programa que a variável 'result' será o valor de n1 ou o valor de n2, dependendo de qual dos 2 for o número maior. Talvez nem precise de uma variável 'result', basta dizer qual dos 2 é o maior e qual o menor. Um "if then else" já dá conta de fazer isso. Você já chegou a aprender "if then else"?

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

  • Membro VIP

Eu postei o código em VisualG, foi mal... mas a lógica é a mesma.

 

Segue um código em Pascal:

 

{$CODEPAGE UTF8} //para permitir acentos nas string em alguns compiladores [Não necessário no PascalZim, mas pode deixar]
program Verificar_o_maior_e_menor_digito_de_um_numero_inteiro;
uses
  CRT;
var
  num: integer;
  numTemp: integer;
  qtdDigitos: integer;
  maior, menor: integer;
  digito: integer;

begin
Randomize();
qtdDigitos := Random(4) + 1;
num := Random(Trunc(exp(qtdDigitos*ln(10)))) + 1;

menor := 9;
numTemp := num;

while (numTemp > 0 ) do 
  begin
  digito := numTemp div 1 mod 10;
  numTemp := numTemp div 10;

  if (digito > maior) then
    maior := digito;
  
  if (digito < menor) then
    menor := digito;
  end;

writeln('');
writeln('Número: ', num:1);
writeln('Maior dígito: ', maior:1);
writeln('Menor dígito: ', menor:1);
ReadKey();
end.

 

image.png

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