Ir ao conteúdo

Posts recomendados

Postado

Estou com muita dificuldade no seguinte exercício:

 

Escreva um programa de calculadora de matrizes 3x3 com as seguintes opções:

1 - Soma A+B

2 - Subtração A-B

3- Multiplicação A*B

4- Determinante A

O programa deve receber primeiramente um dos números indicando a opção, depois deve receber a quantidade de matrizes correspondentes à operação (duas para operações 1, 2 e 3 e uma para a operação 4) e em seguida imprimir o resultado.

 

Ele deve ser dividido em diversas funções

 

#include <iostream>
using namespace std;
#define L 3
#define C 3

void leMatriz(int n, int soma [L][C], int menos [L][C], int mult [L][C], int det [L][C], int linha, int coluna){
for (int linha = 0; linha < 3; linha++)
for (int coluna = 0; coluna < 3; coluna++){
    cin >> soma [L][C];
    cin >> menos [L][C];
    cin >> mult [L][C];
    cin >> det [L][C];
}
}

void somaMatrizes(...) {
    //funcao que soma duas matrizes
}

void subtraiMatrizes(...) {
    //funcao que subtrai duas matrizes
}

void mostraMatriz(...){
    //funcao que imprime uma matriz na tela
}

void multiplicaMatrizes(...){
    //funcao que multiplica duas matrizes
}

int calculaDet(){
    //funcao que calcula o determinante de uma matriz
}

int main() {

}


 

Postado

@maylin Uma função para ler/acrescentar os números na matriz só precisa do parâmetro da própria matriz, então este seria o protótipo,

void leMatriz(int Matriz[N][N]);

 

Como a matriz é quadrada só precisa definir um valor para o tamanho: #define N 3

 

Nas funções do cálculo das operações de 1 a 3 os parâmetros podem ser das duas matrizes, p.ex da soma,

void somaMatrizes(int A[N][N], int B[N][N]);

 

Postado

estou com dificuldade para escrever a função para calcular o determinante e o int main 

#include <iostream>
using namespace std;
#define L 3
#define C 3

void leMatriz(int mat[L][C], int linha, int coluna) {
    for (int linha = 0; linha < 3; linha++)
    for (int coluna = 0; coluna < 3; coluna++) {
        cin >> mat[L][C];
}
}

void somaMatrizes(int A[L][C], int B[L][C], int soma[L][C], int linha, int coluna) {
    for (int linha = 0; linha < 3; linha++)
    for (int coluna = 0; coluna < 3; coluna++) {
       soma[linha][coluna] = A[linha][coluna] + B[linha][coluna];
}
}

void subtraiMatrizes(int A[L][C], int B[L][C], int menos[L][C], int linha, int coluna) {
    for (int linha = 0; linha < 3; linha++)
    for (int coluna = 0; coluna < 3; coluna++) {
       menos[linha][coluna] = A[linha][coluna] - B[linha][coluna];
}
}

void mostraMatriz(int matriz[L][C]){
    for (int linha = 0; linha < 3; linha++)
    for (int coluna = 0; coluna < 3; coluna++) {
        cout << matriz[L][C] << " ";
        cout << endl;
}
}

void multiplicaMatrizes(int A[L][C], int B[L][C], int AB[L][C], int linha, int coluna, int mult){
    for (int linha = 0; linha < 3; linha++)
    for (int coluna = 0; coluna < 3; coluna++)
    for(mult = 0; mult < 3; mult++) {
        AB[linha][coluna] += A[linha][mult] * B[mult][coluna];
}
}

int calculaDet(double det[L][C], int linha, int coluna){
    for (int linha = 0; linha < 3; linha++)
    for (int coluna = 0; coluna < 3; coluna++) {
       
}
}

int main() {

}

 

Postado
Citação

Escreva um programa de calculadora de matrizes 3x3 com as seguintes opções:

1 - Soma A+B

2 - Subtração A-B

3- Multiplicação A*B

4- Determinante A

O programa deve receber primeiramente um dos números indicando a opção, depois deve receber a quantidade de matrizes correspondentes à operação (duas para operações 1, 2 e 3 e uma para a operação 4) e em seguida imprimir o resultado.

 

O enunciado não te obriga a ler essas coisas todas da entrada padrão (o teclado). Porque está fazendo isso? Muito tempo livre? 

Para cada teste vai mesmo digitar a operação e depois 9 valores para a primeira matriz e 9 valores para a segunda e depois fazer isso mais 2 vezes para as outras operações? E depois mais um teste para o cálculo do determinante?

 

Nunca faça isso. Pense nos dados. Leia de arquivos, é muito mais fácil. Grave em arquivos, é muito mais fácil.

 

O cálculo do determinante:

 

Use por exemplo a regra de Sarrus e entenda que o determinante é uma conta fixa, uma soma de 6 produtos, e basta escrever exatamente isso em C ou C++: uma função que recebe um int[3][3] e retorna um int

Postado

Escreva em torno dos dados. 

 

Está bem claro como o programa deve ser dividido, imagino. De todo modo considere uma struct assim
 

struct Matriz
{
    int     M[3][3];
    long long int determinante;
    Matriz(){};

    Matriz          soma(Matriz& A, Matriz& B);
    Matriz          subtracao(Matriz& A, Matriz& B);
    Matriz          multiplicacao(Matriz& A, Matriz& B);
    long long int   calcula_determinante(Matriz A);
};

 

E sem novidades:

  • a soma retorna outra matriz. Qual o propósito de usar void se sabe que vai retornar uma matriz?
  • o mesmo vale para as outras operações
  • o determinante pode ser calculado quando a matriz for criada. Onde? Em Matriz(), popularmente conhecida como construtor da struct/classe. Porque? Porque ao ler os dados ele se torna definido. E porque a função que calcula? Porque se mudar um dado vai mudar o determinante.

Em C++ é possível e fácil associar operadores a essas funções e escrever
 


	Matriz A;
	Matriz B;

	Matriz C = soma( A,B );

// ou 

	Matriz D = A + B;

 

E é comum associar o operador << (como é feito em iostream) à operação de mostrar na tela uma matriz para poder escrever
 

	cout << A;
	cout << B;
	cout << A+B;

 

O último cout também funciona porque A+B retorna uma nova Matriz.

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!