Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
main.cpp /* * File: main.cpp * Author: joao * * a- Escreva uma função que recebe como parâmetros uma matriz real Anxm, * e uma posição (i,j) da matriz, e calcula a média aritmética dos vizinhos de (i,j), * ou seja, a média entre A[i-1][j], A[i+1][j], A[i][j-1] e A[i][j+1]. * Desconsidere os vizinhos que não pertencem a matriz (por exemplo, os vizinhos de (0,0) * são somente (0,1) e (1,0)). * b- Escreva uma função que recebe como parâmetro uma matriz real Anxm e devolve uma matriz Amédia, * onde Amédia[i][j] é a média aritmética dos vizinhos de (i,j). Para isto, utilize a função do item anterior. */ #include <stdlib.h> #include <stdio.h> #include<math.h> #include<time.h> #define M 10 #define N 10 using namespace std; //---------------------------------- void preencheMatriz(int mat[M][N], int m, int n) { int randon; for (int i = 0; i < m; i++) { for (int k = 0; k < n; k++) { mat[i][k] = (rand() % ((5 - 1) + 1)) + 1; } } } int mediaDosVizinhos(int mat[M][N], int m, int n, int i, int j) { int cont = 0, soma = 0; // Soma o valor da posição à esquerda if ((j - 1) >= 0) { cont += 1; soma += mat[i][j - 1]; } // Soma o valor da posição à direita if ((j + 1) < n) { cont += 1; soma += mat[i][j + 1]; } // Soma o valor da posição acima if ((i - 1) >= 0) { cont += 1; soma += mat[i - 1][j]; } // Soma o valor da posição abaixo if ((i + 1) < m) { cont += 1; soma += mat[i + 1][j]; } return soma / cont; } void diagonalPrincipal(int mat[M][N], int m, int n, int vet[10]) { int k = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (i == j) { vet[k++] = mat[i][j]; } } } } void multiplica(int matA[M][N], int matB[M][N], int matC[M][N], int m, int n) { int soma = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { soma = 0; for (int k = 0; k < n; k++) { soma += matA[i][k] * matB[k][j]; } matC[i][j] = soma; } } } void matrizMedia(int matA[M][N], int matB[M][N], int m, int n) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { matB[i][j] = mediaDosVizinhos(matA, m, n, i, j); } } } void transporMatriz(int mat[M][N], int vet[M*N], int m, int n) { int k = 0; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) { vet[k++] = mat[i][j]; } } void exibeMatriz(int mat[M][N], int m, int n) { printf("\nMatriz\n"); for (int i = 0; i < m; i++) { printf("\n"); for (int j = 0; j < n; j++) { printf("[%4d] ", mat[i][j]); } } printf("\n"); } int main(int argc, char** argv) { int cont = 0, m = 4, n = 4; int matriz[10][10], matB[10][10], matC[10][10]; int vet[10]; preencheMatriz(matriz, m, n); exibeMatriz(matriz, m, n); multiplica(matriz, matriz, matC, m, n); exibeMatriz(matC, m, n); matrizMedia(matC, matB, m, n); exibeMatriz(matB, m, n); }
Compartilhar