Exercícios simples com matrizes

Nesse post são apresentados 3 exercícios resolvidos que utilizam matrizes. O primeiro exercício é resolvido com e sem modularização (uso de função) e os demais utilizam a função elaborada no primeiro exercício, com alteração para deixar a função mais genérica.

Algoritmo 1 – Elabore um algoritmo que preencha duas matrizes 10×10 com valores aleatórios 0 e 1 e em seguida, determine se as matrizes são iguais (possuem os mesmos valores em cada posição).

Solução em linguagem C sem utilizar funções

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define TAM 2

int main() {
    srand(time(NULL));

    int m1[TAM][TAM], m2[TAM][TAM], i, j, igual = 1;

    //preenche as matrizes
    for (i = 0; i < TAM; i++) {
        for (j = 0; j <  TAM; j++) {
            m1[i][j] = rand()%2;
            m2[i][j] = rand()%2;
        }
    }

    //mostra a primeira matriz
    for (i = 0; i < TAM; i++) {
        for (j = 0; j <  TAM; j++) {
            printf("%i ", m1[i][j]);
        }
        printf("\n");
    }
    printf("\n");

    //mostra a segunda matriz
    for (i = 0; i < TAM; i++) {
        for (j = 0; j <  TAM; j++) {
            printf("%i ", m2[i][j]);
        }
        printf("\n");
    }

    //testa se matrizes são iguais
    for (i = 0; i < TAM; i++) {
        for (j = 0; j <  TAM; j++) {
            if (m1[i][j] != m2[i][j]) {
                igual = 0;
            }
        }
    }

    if (igual == 1) {
        printf("Matrizes iguais");
    } else {
        printf("Matrizes diferentes");
    }

    return 0;
}

Solução utilizando funções

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define TAM 2

void preencheMatriz(int tam, int mat[tam][tam]) {
    int i, j;
    for (i = 0; i < tam; i++) {
        for (j = 0; j <  tam; j++) {
            mat[i][j] = rand()%2;
        }
    }
}

void mostraMatriz(int tam, int mat[tam][tam]) {
    int i, j;
    for (i = 0; i < tam; i++) {
        for (j = 0; j <  tam; j++) {
            printf("%i ", mat[i][j]);
        }
        printf("\n");
    }
}

int main() {
    srand(time(NULL));

    int m1[TAM][TAM], m2[TAM][TAM], i, j, igual = 1;

    preencheMatriz(TAM, m1);
    preencheMatriz(TAM, m2);

    mostraMatriz(TAM, m1);
    printf("\n");
    mostraMatriz(TAM, m2);

    for (i = 0; i < TAM; i++) {
        for (j = 0; j <  TAM; j++) {
            if (m1[i][j] != m2[i][j]) {
                igual = 0;
            }
        }
    }

    if (igual == 1) {
        printf("Matrizes iguais");
    } else {
        printf("Matrizes diferentes");
    }

    return 0;
}

Link para o vídeo: https://youtu.be/0pMAbAsDaBM


Algoritmo 2 – Dada uma matriz de inteiros  Amxn, verificar se existem elementos repetidos em A.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define TAML 2
#define TAMC 3

void preencheMatriz(int lin, int col, int mat[lin][col]) {
    srand(time(NULL));
    int i, j;
    for (i = 0; i < lin; i++) {
        for (j = 0; j <  col; j++) {
            mat[i][j] = rand()%10;
        }
    }
}

void mostraMatriz(int lin, int col, int mat[lin][col]) {
    int i, j;
    for (i = 0; i < lin; i++) {
        for (j = 0; j <  col; j++) {
            printf("%i ", mat[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int mat[TAML][TAMC], i, j, k, w, valTeste, repetido = 0;

    preencheMatriz(TAML, TAMC, mat);
    mostraMatriz(TAML, TAMC, mat);

    for (k = 0; k < TAML; k++) {
        for (w = 0; w < TAMC; w++) {
            valTeste = mat[k][w];

            for (i = 0; i < TAML; i++) {
                for (j = 0; j < TAMC; j++) {
                    if (mat[i][j] == valTeste) {
                        repetido++;
                    }
                }
            }
        }
    }
    printf("Repetido: %i\n", repetido);

    if (repetido > TAML * TAMC) {
        printf("Valores repetem");
    } else {
        printf("Valores nao repetem");
    }

    return 0;
}

Link para o vídeo: https://youtu.be/GT_lpSUsTIk


Algoritmo 3 – Dada uma matriz  Amxn, imprimir o número de linhas e o número de colunas nulas da matriz.

Exemplo com uma matriz quadrada de ordem 4 (m = 4 e n = 4)

Resultado: Linhas nulas: 2 | Colunas nulas: 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define TAML 3
#define TAMC 2

void preencheMatriz(int lin, int col, int mat[lin][col]) {
    srand(time(NULL));
    int i, j;
    for (i = 0; i < lin; i++) {
        for (j = 0; j <  col; j++) {
            mat[i][j] = rand()%2;
        }
    }
}

void mostraMatriz(int lin, int col, int mat[lin][col]) {
    int i, j;
    for (i = 0; i < lin; i++) {
        for (j = 0; j <  col; j++) {
            printf("%i ", mat[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int mat[TAML][TAMC], i, j, zeros, linhas = 0, colunas = 0;

    preencheMatriz(TAML, TAMC, mat);
    mostraMatriz(TAML, TAMC, mat);

    //conta linhas nulas
    for (i = 0; i < TAML; i++) {
        zeros = 0;
        for (j = 0; j < TAMC; j++) {
            if (mat[i][j] == 0) {
                zeros++;
            }
        }
        if (zeros == TAMC) {
            linhas++;
        }
    }
    printf("\nLinhas nulas: %i", linhas);

    //conta colunas nulas
    for (j = 0; j < TAMC; j++) {
        zeros = 0;
        for (i = 0; i < TAML; i++) {
            if (mat[i][j] == 0) {
                zeros++;
            }
        }
        if (zeros == TAML) {
            colunas++;
        }
    }
    printf("\nColunas nulas: %i", colunas);

    return 0;
}

Link para o vídeo: https://youtu.be/NZCC7SE-O30

Share

Uma opinião sobre “Exercícios simples com matrizes

Deixe um comentário

O seu endereço de e-mail não será publicado.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.