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)

#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
Ainda preciso fazer uma revisão do post, mas a solução pode ser encontrada em http://www.galirows.com.br/meublog/programacao/algoritmo-solicitado2/