OneCompiler

Atividade 1 de MD2 - 221031256 - Angélica da Costa Campos

EXERCÍCIOS DE PROGRAMAÇÃO PARA A NOTA P1

ESCRITOS EM LINGUAGEM C


RECURSÃO MATEMÁTICA

  1. O cálculo de n! utilizando recursividade (exemplo teste 5!)
#include <stdio.h>

int fatorial_recursividade(int n) {
    if (n == 0) {
        return 1; 
    } else {
        return n * fatorial_recursividade(n - 1); 
    }}

int main() {
    int num = 5;
    int resultado = fatorial_recursividade(num);
    printf("O fatorial de %d e: %d\n", num, resultado);
    return 0;
}
  1. A sequência de Fibonacci
 #include <stdio.h>

void fibonacciIterativo(int n) {
    int a = 0, b = 1, proximo;
    printf("Sequencia de Fibonacci ate o %dº termo:\n", n);
    for (int i = 0; i < n; i++) {
        if (i <= 1) {
            proximo = i; 
        } else {
            proximo = a + b; 
            a = b;
            b = proximo;}
        printf("%d ", proximo);}
    printf("\n");
}

int main() {
    int n;
    printf("Digite o numero de termos da sequencia de Fibonacci: ");
    scanf("%d", &n);
    if (n <= 0) {
        printf("Por favor, insira um numero maior que 0.\n");
        return 1;}
    fibonacciIterativo(n);
    return 0;}

  1. A impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10)
 #include <stdio.h>
void imprimir_numeros_naturais(int n){
    if (n > 0)
    {
        imprimir_numeros_naturais(n - 1);
        if (n > 1)
        {
            printf(", ");
        }
        printf("%d", n);
    }}
    
int main(){
    int num;
    printf("Digite um numero: ");
    scanf("%d", &num);
    printf("Numeros de 1 a %d: ", num);
    imprimir_numeros_naturais(num);
    printf(".");
    return 0;
    }
    
  1. Um método recursivo que receba como entrada um número inteiro positivo n e retorne
    1 + 2 + 3 + 4 + … + n
 #include <stdio.h>

int somaRecursiva(int n) {
    if (n == 1) {
        return 1; 
    } else {
        return n + somaRecursiva(n - 1); 
    }
}

int main() {
    int n;
    printf("Digite um numero inteiro positivo: ");
    scanf("%d", &n);
    if (n <= 0) {
        printf("Por favor, insira um numero inteiro positivo.\n");
        return 1; 
    }
    printf("A soma de 1 ate %d e: %d\n", n, somaRecursiva(n));
    return 0;
}


DIVISIBILIDADE

  1. Algoritmo de Euclides para o cálculo do MDC
 #include <stdio.h>

int mdc(int a, int b) {
    if (b == 0) {
        return a; 
    }
    return mdc(b, a % b); 
}

int main() {
    int num1, num2;
    printf("Digite o primeiro numero: ");
    scanf("%d", &num1);
    printf("Digite o segundo numero: ");
    scanf("%d", &num2);
    printf("O MDC de %d e %d e: %d\n", num1, num2, mdc(num1, num2));
    return 0;
}

  1. Calcular o MMC(a,b) a partir do MDC(a,b)
 #include <stdio.h>

int mdc(int a, int b) {
    if (b == 0) {
        return a; 
    }
    return mdc(b, a % b); 
}

int mmc(int a, int b) {
    return (a * b) / mdc(a, b);
}

int main() {
    int num1, num2;
    printf("Digite o primeiro numero: ");
    scanf("%d", &num1);
    printf("Digite o segundo numero: ");
    scanf("%d", &num2);
    int resultadoMDC = mdc(num1, num2);
    int resultadoMMC = mmc(num1, num2);
    printf("O MDC de %d e %d e: %d\n", num1, num2, resultadoMDC);
    printf("O MMC de %d e %d e: %d\n", num1, num2, resultadoMMC);
    return 0;
}


ARITMÉTICA MODULAR

  1. Tabela Z_n para adição modular
 #include <stdio.h>

void gerarTabelaZn(int n) {
    printf("Tabela de Adicao Modular Z_%d:\n\n", n);
    printf("   ");
    for (int i = 0; i < n; i++) {
        printf("%3d", i);
    }
    printf("\n");

    for (int i = 0; i <= n; i++) {
        printf("---");
    }
    printf("\n");

    for (int i = 0; i < n; i++) {
        printf("%2d|", i); 
        for (int j = 0; j < n; j++) {
            printf("%3d", (i + j) % n); 
        }
        printf("\n");
    }}

int main() {
    int n;
    printf("Digite o valor de n para gerar a tabela Z_n: ");
    scanf("%d", &n);

    if (n <= 0) {
        printf("O valor de n deve ser maior que 0.\n");
    } else {
        gerarTabelaZn(n);
    }
    return 0;}
  1. Tabela Z_n para multiplicação modular
 #include <stdio.h>

void gerarTabelaMultiplicacaoZn(int n) {
    printf("Tabela de Multiplicacao Modular Z_%d:\n\n", n);
    printf("   ");

    for (int i = 0; i < n; i++) {
        printf("%3d", i);
    }
    printf("\n");

    for (int i = 0; i <= n; i++) {
        printf("---");
    }
    printf("\n");

    for (int i = 0; i < n; i++) {
        printf("%2d|", i); 

        for (int j = 0; j < n; j++) {
            printf("%3d", (i * j) % n); 
        }
        printf("\n");
    }}

int main() {
    int n;
    printf("Digite o valor de n para gerar a tabela Z_n: ");
    scanf("%d", &n);

    if (n <= 0) {
        printf("O valor de n deve ser maior que 0.\n");
    } else {
        gerarTabelaMultiplicacaoZn(n);
    }
    
    return 0;
}