Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Natana

exercicios de algoritmo

Recommended Posts

Gostaria de confirmar as resoluçoes

 

• Estrutura de Seleção

2. Elabore um algoritmo que, a partir de um dia, mês e ano fornecidos, valide se eles compõem uma data válida. Não deixe de considerar os meses com 30 ou 31 dias, e o tratamento de ano bissexto.

ínicio
   inteiro: Dia, Mês, Ano;
   escreva; ("Digite o número do dia, mês e ano");
   leia(Dia, MÊs, Ano);
      se (dia >= 1) e (dia <= 12)
          então
             se (Mes >= 1) e (mes <= 12)
                  então
                      se (ano >= 1) e (ano <= infinito)
                           então 
                              escreva ("Data válida");
                       fimse;
               fimse;
       fimse;
fim.
• Estrutura de Repetição

1. Elabore um algoritmo que obtenha o mínimo múltiplo comum (MMC) entre dois números fornecidos.

ínicio
   inteiro : x, y , mmc;
   escreva ("Digite dois números");
   leia (x,y);
       para a de 2 a 9 passo 1 faça
           ínicio
           a=1
           se (x mod a = 0)
              ínicio
              a=1
              mmc = mmc*a;
              x = x/a;
              fim;
          fimse;
          se (y mod a = 0)
              ínicio
              se a <> 1
              mmc = mmc*a;
              y = y/a;
          fimse;
       fimse;
   fim;
 escreva("o mmc entre o números é ");
fim.
2. Elabore um algoritmo que imprima todos os números primos existentes entre N1 e N2, em que N1 e N2 são números naturais fornecidos pelo usuário.

ínicio
    inteiro: n1, n2, a, b;
    lógica; primo;
    escreva ("digite 2 números");
    leia(n1, n2);
      para a de n1 até n2 passo 1 faça
      primo = v;
         para b de 2 até (a-1) passo 1 faça
            se (a mod b = 0);
            então
              primo = f;
            fimse;
         fimpara;
       se primo == v
          então
            escreva ("os números primos são ");
        fimse;
       fimpara;
fim.
3. Construa um algoritmo que calcule e escreva a soma dos dez primeiros termos da seguinte série:

2/500 - 5/450 + 2/400 – 5/350 + ...

ínicio
      inteiro; soma, t, t1, a;
      leia (div(t1/t));
      soma = a;
      t = 500;
      t1 = -5;
        para a de 0 até 9 passo 1 faça
         t = t-(a*50);
         se(t1 == -5)
           então
             t1 = 2;
         fimse;
          se (t1 == 2)
           então
            t1 = -5;
          fimse;
       escreva ("t1/t");
        soma = soma + div(t1/t);
        fimpara;
    escreva ("O valor da soma dos 10 primeiros termos é ");
fim

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro está incorreto. A validação da data vai muito além daquilo.

Um boa estratégia é validar primeiramente o ano.

Ano precisa ser maior que 0. Depois disso voce podevalidar se o ano é bissexto.

 


se ano < 0 entao
    // pare por aqui. A data é invalida.
// aqui voce pode ter uma variavel booleana indicando se o ano é bissexto.
se ((ano mod 4)=0)
    bissexto = verdadeiro
senao bissexto = falso

Por base nesse código voce deve validar agora o mes que é o mais fácil. Deve estar entre 1 e 12.

Os dias devem ser validados tendo por base o mês. Há um grupo que possui os dias 1-30, outro que possui os dias 1-31 e fevereiro que é um caso a parte.

 

Tente fazer, surgindo dúvidas volte a postar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prazer para todos. A questão três não é para fazer a divisão matemática como muitos pensam, mas mostrar a sequência dos números, mostrar os valores 500, 450, 400, 350... no denominador e 2 ou -5 no numerador. Como disse, não é para dividir 2/500 que vai dar um valor e sim mostrar os números sendo diminuídos de 50 em 50. Tentei implementar. O resultado no meu sai /02/02/02/02. Não consegui identificar o erro. No final deve mostrar 2/500.

int num,denom,i;
num = 0;
denom = 0;
for(i=1;i<=500;i++)
  {    
    if (num % 2 == 0)
      {
        num = 2;
        denom = 0;
        cout << num << "/" << denom;
      }
     else
     {
         num = -5;
         denom = 50;
         cout << num << "/" << denom;
     }
   denom = denom + 50;
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.