OneCompiler

Lista 1 - MD2

Lista 1

Aluno: Gabriel Lima da Silva
Matrícula: 222037610
Linguagem: C

1 - Fatorial usando recursividade

#include <stdio.h>

int fatorial(int x) {
  if (x == 0 || x == 1) 
    return 1;

  return x * fatorial(x-1);
}

int main() {
  int valor;
  printf("Digite o numero fatorial: ");
  scanf("%d", &valor);

  int resultado = fatorial(valor);
  
  printf("Valor final do fatorial de %d! = %d", valor, resultado);

  printf("\n");

  return 0;
}
 

2 - Sequência de Fibonacci usando recursividade

 #include <stdio.h>

int fibonacci(int x) {
  if (x == 0) 
    return 0;

  if (x == 1) 
    return 1;  

  return fibonacci(x-1) + fibonacci(x-2);
}

int main() {
  int termos;
  printf("Digite o numero de termos: ");
  scanf("%d", &termos);
  
  printf("Sequencia de Fibonacci ate %d termos:\n", termos);
  for (int i = 0; i < termos; i++) {
      printf("%d ", fibonacci(i));
  }
  printf("\n");

  return 0;
}

3 - Impressão recursiva de 1 a n

 #include <stdio.h>

int numerosInteiros(int x) {
  if (x == 1) 
    return 1;
  else 
    return x + numerosInteiros(x-1); 
}

int main() {
  int n;
  printf("Digite um numero inteiro para somar sua sequencia de 1 a n:\n");
  scanf("%d", &n);

  if (n <= 0) {
      printf("Por favor, insira um numero inteiro positivo.\n");
  } else {
      printf("Soma dos numeros numeros interos de n = %d\nValor = %d", n, numerosInteiros(n));
      printf("\n");
  }

  return 0;
}

4 - Método recursivo

 #include <stdio.h>

void numerosNaturais(int x) {
  if (x <= 0) 
    return;
  else 
    numerosNaturais(x-1); 
    printf("%d ", x);
}

int main() {
  int n;
  printf("Digite um numero natural para imprimir de 1 a n: ");
  scanf("%d", &n);

  if (n <= 0) {
      printf("Por favor, insira um numero natural positivo.\n");
  } else {
      printf("Numeros de 1 a %d:\n", n);
      numerosNaturais(n);
      printf("\n");
  }

  return 0;
}

5 - Algoritmo de Euclides (MDC)

 #include <stdio.h>

// Função para calcular o MDC usando o Algoritmo de Euclides
int mdc(int a, int b) {
    while (b != 0) {
        int resto = a % b;
        a = b;
        b = resto;
    }
    return a;
}

int main() {
    int num1, num2;

    // Entrada de dois números
    printf("Digite dois numeros inteiros para calcular o MDC:\n");
    scanf("%d %d", &num1, &num2);

    // Chamando a função mdc e exibindo o resultado
    int resultado = mdc(num1, num2);
    printf("O MDC de %d e %d = %d\n", num1, num2, resultado);

    return 0;
}

6 - MMC por MDC

 #include <stdio.h>

// Função para calcular o MDC usando o Algoritmo de Euclides
int mdc(int a, int b) {
    while (b != 0) {
        int resto = a % b;
        a = b;
        b = resto;
    }
    return a;
}

// Função para calcular o MMC a partir do MDC
int mmc(int a, int b) {
    return (a * b) / mdc(a, b);
}

int main() {
    int num1, num2;

    // Entrada de dois números
    printf("Digite dois numeros inteiros para calcular o MMC:\n");
    scanf("%d %d", &num1, &num2);

    // Calculando o MMC e exibindo o resultado
    int resultadoMMC = mmc(num1, num2);
    printf("O MMC de %d e %d = %d\n", num1, num2, resultadoMMC);

    return 0;
}

7 - Tabela Z_n para adição modular

 #include <stdio.h>

void tabelaAdicaoModular(int n) {
    printf("Tabela de Adicao Modular em Z_%d\n\n", n);
    
    // Imprime o cabeçalho da tabela
    printf("   |");
    for (int i = 0; i < n; i++) {
        printf(" %2d", i);
    }
    printf("\n");
    
    // Linha divisória
    printf("---+");
    for (int i = 0; i < n; i++) {
        printf("---");
    }
    printf("\n");
    
    // Preenche a tabela com (a + b) mod n
    for (int i = 0; i < n; i++) {
        printf("%2d |", i);  // Exibe o índice da linha
        for (int j = 0; j < n; j++) {
            printf(" %2d", (i + j) % n);
        }
        printf("\n");
    }
}

int main() {
    int n;

    printf("Digite o valor de n para Z_n: ");
    scanf("%d", &n);

    if (n > 0) {
        tabelaAdicaoModular(n);
    } else {
        printf("Por favor, insira um número positivo para n.\n");
    }

    return 0;
}

8 - Tabela Z_n para multiplicação modular

#include <stdio.h>

void tabelaMultiplicacaoModular(int n) {
    printf("Tabela de Multiplicacao Modular em Z_%d\n\n", n);
    
    // Imprime o cabeçalho da tabela
    printf("   |");
    for (int i = 0; i < n; i++) {
        printf(" %2d", i);
    }
    printf("\n");
    
    // Linha divisória
    printf("---+");
    for (int i = 0; i < n; i++) {
        printf("---");
    }
    printf("\n");
    
    // Preenche a tabela com (a * b) mod n
    for (int i = 0; i < n; i++) {
        printf("%2d |", i);  // Exibe o índice da linha
        for (int j = 0; j < n; j++) {
            printf(" %2d", (i * j) % n);
        }
        printf("\n");
    }
}

int main() {
    int n;

    printf("Digite o valor de n para Z_n: ");
    scanf("%d", &n);

    if (n > 0) {
        tabelaMultiplicacaoModular(n);
    } else {
        printf("Por favor, insira um numero positivo para n.\n");
    }

    return 0;
}