Códigos em C: Matrizes, Funções e Lógica

Classificado em Design e Engenharia

Escrito em em português com um tamanho de 10,46 KB

Algoritmos e Estruturas em Linguagem C

1. Manipulação de Matrizes com Números Pares e Primos

#include <stdio.h>
#include <string.h>
int Par(int a){
    return a % 2;
}
int Primo(int a){
    int divs,     // Variável para armazenar a quantidade de divisores de um número
        i;        // Contador
    divs = 0;
    for(i = 2; i <= a/2; i++) {
      if (a % i == 0){
          divs++;
          break;
      }
    }
    return divs;
}
int main(){
    int mat[2][5],  // Variável para armazenar a matriz
        num,        // Armazena temporariamente o valor lido
        i, j;       // Contadores
    // Recebimento da matriz
    i = 0;
    while(i < 2){
        j = 0;
        while(j < 5){
            printf("Matriz[%d][%d]: ", i, j);
            scanf("%d", &num);
            if(i == 0){
                if(Par(num) == 0){
                    mat[i][j] = num;
                    j++;
                }else{
                    printf("Esta linha da matriz somente pode receber números pares\n");
                }
            }else{
                if(Primo(num) == 0){
                    mat[i][j] = num;
                    j++;
                }else{
                    printf("Esta linha da matriz somente pode receber números primos\n");
                }
            }
        }
        i++;
    }
    // Impressão da matriz
    for(i = 0; i < 2; i++){
        printf("\n");
        for(j = 0; j < 5; j++){
            printf("%d  ", mat[i][j]);
        }
    }
}


2. Validação de Intervalos e Contagem de Caracteres

#include <stdio.h>
#include <stdlib.h>
int isIntervalo(int n, int a, int b){
    if(n >= a && n <= b)
        return 1;
    else
        return 0;
}
int main(){
    struct Quantidades{
        int letraMin;   // Variável para armazenar a quantidade de letras minúsculas
        int letraMai;   // Variável para armazenar a quantidade de letras maiúsculas
        int naoLetra;   // Variável para armazenar a quantidade de não letras
    }q;
    int num;            // Variável para receber os números
    q.letraMin = q.letraMai = q.naoLetra = 0;  // Zera as quantidades
    for(;;){
        // Recebimento do número
        printf("Digite um número: ");
        scanf("%d", &num);
        // Ao receber um número negativo
        if (num < 0){
            // Impressão das quantidades
            printf("\nLetras Maiúsculas: %d", q.letraMai);
            printf("\nLetras Minúsculas: %d", q.letraMin);
            printf("\nNão Letras : %d", q.naoLetra);
            break;
        }else{
            // Letra Maiúscula
            if(isIntervalo(num, 'A', 'Z') == 1){
                printf("Letra digitada: %c\n", num);
                q.letraMai++;
            }else{
                // Letra Minúscula
                if(isIntervalo(num, 'a', 'z') == 1){
                    printf("Letra digitada: %c\n", num);
                    q.letraMin++;
                }else{
                    // Não Letra
                    printf("Não é uma letra\n");
                    q.naoLetra++;
                }
            }
        }
    }
}


3. Jogo Pedra, Papel e Tesoura

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
    struct Quantidades{
        int vitoria;   // Variável para armazenar a quantidade de vitórias
        int derrota;   // Variável para armazenar a quantidade de derrotas
        int empate;    // Variável para armazenar a quantidade de empates
    }q;
    int opcaoUsr,      // Variável para armazenar a opção escolhida
        opcaoComp,     // Variável para armazenar o número gerado aleatoriamente
        i;             // Contador
    // Evita que gere o mesmo número aleatório
    srand(time(0));
    q.vitoria = q.derrota = q.empate = 0;  // Zera as quantidades
    for(;;){
        // Recebimento da opção
        printf("Digite a opção 0 (Papel), 1 (Pedra), 2 (Tesoura) ou 3 (sair): ");
        scanf("%d", &opcaoUsr);
        if ((opcaoUsr == 0) || (opcaoUsr == 1) || (opcaoUsr == 2)){
            // Impressão da opção do usuário
            switch(opcaoUsr){
                case 0 : printf("\nUsuário escolheu: Papel");
                         break;
                case 1 : printf("\nUsuário escolheu: Pedra");
                         break;
                case 2 : printf("\nUsuário escolheu: Tesoura");
                         break;
            }
            // Geração e Impressão da opção do Computador
            opcaoComp = rand() % (2 + 1);
            switch(opcaoComp){
                case 0 : printf("\nComputador escolheu: Papel");
                         break;
                case 1 : printf("\nComputador escolheu: Pedra");
                         break;
                case 2 : printf("\nComputador escolheu: Tesoura");
                         break;
            }
            // Verificar resultado da partida
            if (opcaoUsr == opcaoComp){
                printf("\nPartida empatada.\n\n");
                q.empate++;
            }else{
                switch(opcaoUsr){
                    case 0 : if (opcaoComp == 1){
                                 printf("\nUsuário Venceu\n\n");
                                 q.vitoria++;
                             }else{
                                 printf("\nComputador Venceu\n\n");
                                 q.derrota++;
                             }
                             break;
                    case 1 : if (opcaoComp == 2){
                                 printf("\nUsuário Venceu\n\n");
                                 q.vitoria++;
                             }else{
                                 printf("\nComputador Venceu\n\n");
                                 q.derrota++;
                             }
                             break;
                    case 2 : if (opcaoComp == 0){
                                 printf("\nUsuário Venceu\n\n");
                                 q.vitoria++;
                             }else{
                                 printf("\nComputador Venceu\n\n");
                                 q.derrota++;
                             }
                             break;
                }
            }
        }else
            break;
    }
    // Impressão da quantidade de partidas, vitórias e derrotas
    printf("\nPartidas: %d", q.vitoria + q.derrota + q.empate);
    printf("\nVitórias: %d", q.vitoria);
    printf("\nDerrotas: %d", q.derrota);
    printf("\nEmpates : %d", q.empate);
}
#include <stdio.h>
#include <stdlib.h>


4. Encontrando o Maior Elemento com Recursividade

int max(int a, int b){
    if(a >= b){
        return a;
    }else{
        return b;
    }
}


int maior(int v[10], int n){
    if(n == 0){
        return v[n];
    }else{
        return max(v[n], maior(v, n-1));
    }
}


int main(){
    int vet[10],      // Variável para armazenar 10 inteiros
        i;            // Contador


    // Preenchimento do vetor
    for(i = 0; i < 10; i++){
        printf("%dº número: ", i + 1);
    scanf("%d", &vet[i]);
    }


    // Imprime o maior elemento do vetor
    printf("\nO maior elemento do vetor é: %d", maior(vet, 9));
}

Entradas relacionadas: