quinta-feira, 29 de outubro de 2015

2015/2: ALP - Estruturas de Repetição: Exercício 1

Problema 1
Entrada: dois números naturais A e B informados pelo usuário
Saída: Se A for maior que B:
         Informar se A é divisível por B (A/B?)
  Senao:
    Informar todos os múltiplos de A de zero até B

Solução:
- Linguagem natural
- Pseudocodigo
- Código fonte em C

Linguagem natural
1) Solicitar do usuário dois numeros naturais (A e B)
2) Ler as duas entradas (A e B)
3) Se A for maior que B
3.1) Calcular o resto da divisão de A por B
3.2) Se o resto for zero
3.2.1) Informar que B divide A
3.3) Senão
3.3.1) Informar que B NÃO divide A
4) Senao (A é menor ou igual a B)
4.1) Para cada número de zero até B de A em A
4.1.1) Exibir o número

Ex: A=8, B=3-> testar se A é divisível por B -> não é divisivel (8 MOD 3 != 0)

Ex: A=5, B=34-> listar os multiplos de A de zero até B -> 0, 5, 10, 15 ... 30

Pseudocódigo
algoritmo "semnome"
// Função :
// Autor :
// Data : 28/10/2015
// Seção de Declarações 
var
 a, b, c, r: inteiro
inicio
// Seção de Comandos 
  escreval("Digite dois numeros naturais:")
  leia(a)
  leia(b)
  se a > b entao // a maior que b
    r <- a mod b // resto da div. de a por b
    se r = 0 entao
      escreval("B divide A")
    senao
      escreval("B NAO divide A")
    fimse
  senao // a menor ou igual a b
    para c de 0 ate B passo a faca
      escreval(c)
    fimpara
  fimse
  
fimalgoritmo


Código Fonte em C
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {

  // variaveis
  int a, b, c, r;
  // entrada
  printf("Digite dois números inteiros:");
  scanf("%d %d", &a, &b);
  // processamento
  if (a > b){
    r = a % b; // modulo
    if (r == 0){
      printf("B divide A\n");
    } else {
      printf("B NAO divide A\n");
    }
  } else{
    for (c = 0; c <= b; c = c + a){
      printf("%d\n", c);
    }
  }
  system("PAUSE");
  return 0;
}

Nenhum comentário:

Postar um comentário