Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida Definir Maior Numero na Diagonal de Uma Matriz


Leonardo Prass

Pergunta

Faça um programa que leia uma matriz (2,2) e calcula o maior elemento da sua diagonal principal. A seguir, o programa deve dividir todos os elementos de (2,2) pelo maior encontrado. O programa deve retornar a matriz alterada.

eu fiz um que soma as diagonais porem não sei como faco para achar o maior da diagonal e nem como dividir todos pelo maior segue meu codigo abaixo:

 

//1. Faça um programa que leia uma matriz A(2,2) e calcula o maior elemento da sua diagonal principal.
//A seguir, o programa deve dividir todos os elementos de A(2,2) pelo maior encontrado. O programa
//deve retornar a matriz alterada.
#include <iostream>
 #include <iomanip>


 using namespace std;

 int main()
 {
 int matriz [2] [2];
  int soma_diagonal = 0;
 for(int i=0; i<2;i++){
 for(int j=0;j<2;j++){
 cout<<"Numero da Linha " <<i <<" Numero da Coluna " <<j <<"\n" ;
 cin >> matriz[i][j];


  } }

  cout << "\n\nValores na matriz\n" << endl;
  for(int i = 0; i < 2; i++){
    for(int j = 0; j < 2; j++){
      cout <<"  "  << matriz[i][j];
    }

    cout << "\n" << endl;
  }


  int ordem = 2;
  for(int i = 1; i <= 2; i++){
    for(int j = 1; j <= 2; j++){
      if((i + j) == (ordem + 1)){
        soma_diagonal = soma_diagonal + matriz[i - 1][j - 1];
      }
    }
  }

  cout << "A soma dos elementos da diagonal secundaria e: " <<
    soma_diagonal << endl;
  cout << "\n" << endl;





  }




 

Editado por Leonardo Prass
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
#include <iostream>
#include <iomanip>
using namespace std;
#define N 2

int main (){
    float m[N][N] = { {3.0, 7.0}, {8.0, 5.0} }; //Si quiser uma matriz mas grande, mude N a um valor maior e nao se esqueça de preencher ela aqui, cada linha deve ter dentro as colunas {n1,n2,n3...}
    float maior = 0;
    float soma=0;
    int i = 0;

    cout << "O vetor contem: " << endl;
    for( i = 0; i < N; i++){
        cout << "{ ";
        for(int j = 0; j < N; j++){
            cout << m[i][j];
            if ( j<N-1 ){
                cout << ", ";
            }else{
                cout << " ";
            }
        }
        cout << "}" << endl;    
    }    
    cout << endl;
    
    i=0;
    while ( i<N ){
        //maior
        if ( m[i][i] > maior ){
            maior = m[i][i];
        }
        
        //soma diagonal
        soma += m[i][i];
        
        i++;
    }
    
    cout << "Maior valor na diagonal: " << maior << ". \nSoma de elementos em diagonal: " << soma << endl << endl;
    
    //mostrando a divisao de cad aelemento polo maior numero
    cout << "Divisao de cada elemento do vetor pelo maior numero encontrado em diagonal: " << endl;
    for( i = 0; i < N; i++){
        cout << "{ ";
        for(int j = 0; j < N; j++){
            float f = ( m[i][j]/maior);
            std::cout << std::fixed;
            cout << setprecision(2) << f;
            if ( j<N-1 ){
                cout << ", ";
            }else{
                cout << " ";
            }
        }
        cout << "}" << endl;    
    }    
    cout << endl;    
        
    cin.ignore();
    return 0;
}

Da uma analisada e o que não entender pergunte XD

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

  • 0

O Maior não Seria 8?a so a principal ok XD.

 

 
 cout << "O vetor contem: " << endl;
    for( i = 0; i < N; i++){
        cout << "{ ";
        for(int j = 0; j < N; j++){
            cout << m[i][j];
            if ( j<N-1 ){
                cout << ", ";
            }else{
                cout << " ";
            }
        }
        cout << "}" << endl;    
    }    
    cout << endl;

Essa parte eu fiquei meio com duvida e porque -1?

anteriormente para mostrar a matriz eu mostrei desta forma teria como fazer dessa forma que eu fiz nesse caso?

cout << "\n\nValores na matriz\n" << endl;
  for(int i = 0; i < 2; i++){
    for(int j = 0; j < 2; j++){
      cout <<"  "  << matriz[i][j];
    }

    cout << "\n" << endl;
  }

 

Editado por Leonardo Prass
Link para o comentário
Compartilhar em outros sites

  • 0

O Maior não Seria 8?a so a principal ok XD.

https://pt.wikipedia.org/wiki/Diagonal_de_uma_matriz

#include <iostream>
#include <iomanip>
using namespace std;
#define N 2

int main (){
    float m[N][N] = { {3.0, 7.0}, {8.0, 5.0} }; //Si quiser uma matriz mas grande, mude N a um valor maior e nao se esqueça de preencher ela aqui, cada linha deve ter dentro as colunas {n1,n2,n3...}
    float maior = 0;
    float soma=0;
    int i = 0;

    for ( i = 0; i < N; i++ ) {
        for ( int j = 0; j < N; j++ ) {
            cout << "  "  << m[i][j];
        }
        
        cout << "\n" << endl;
    }
    
    i=0;
    while ( i<N ){
        //maior
        if ( m[i][i] > maior ){
            maior = m[i][i];
        }
        
        //soma diagonal
        soma += m[i][i];
        
        i++;
    }
    
    cout << "Maior valor na diagonal: " << maior << ". \nSoma de elementos em diagonal: " << soma << endl << endl;
    
    //mostrando a divisao de cad aelemento polo maior numero
    cout << "Divisao de cada elemento do vetor pelo maior numero encontrado em diagonal: " << endl;
  
    for ( i = 0; i < N; i++ ) {
        for ( int j = 0; j < N; j++ ) {
            std::cout << std::fixed;
            cout << setprecision(2);            
            cout << "  "  << ( m[i][j]/maior);
        }
        
        cout << "\n" << endl;
    }   
        
    cin.ignore();
    return 0;
}

Essa parte eu fiquei meio com duvida e porque -1?

Por que ele só vai imprimir a virgula até j ser N-1, ou seja, nesse caso, uma só vez por linha.

Link para o comentário
Compartilhar em outros sites

  • 0

No caso eu deveria colocar os valores das matrizes no codigo como eu faria isso eu tentei mais deu muito errado segue abaixo: 

//1. Faça um programa que leia uma matriz A(2,2) e calcula o maior elemento da sua diagonal principal.
//A seguir, o programa deve dividir todos os elementos de A(2,2) pelo maior encontrado. O programa
//deve retornar a matriz alterada.
#include <iostream>
 #include <iomanip>


 using namespace std;

 int main()
 {
int i;
float soma=0;
float maior=0;
float matriz [2] [2];
int soma_diagonal = 0;
for(int i=0; i<2;i++){
for(int j=0;j<2;j++){
 cout<<"Numero da Linha " <<i <<" Numero da Coluna " <<j <<"\n" ;
 cin >> matriz[2][2];


  } }

  cout << "\n\nValores na matriz\n" << endl;
  for(int i = 0; i < 2; i++){
    for(int j = 0; j < 2; j++){
      cout <<"  "  << matriz[2][2];
    }

    cout << "\n" << endl;
  }





 i=0;
    while ( i<2 ){
        //maior
        if ( matriz[2][2] > maior ){
            maior = matriz[2][2];
        }

        //soma diagonal
        soma += matriz[2][2];

        i++;
    }

    cout << "Maior valor na diagonal: " << maior << ". \nSoma de elementos em diagonal: " << soma << endl << endl;

    //mostrando a divisao de cad aelemento polo maior numero
    cout << "Divisao de cada elemento do vetor pelo maior numero encontrado em diagonal: " << endl;
    for( i = 0; i < 2; i++){
        cout << "{ ";
        for(int j = 0; j < 2; j++){
            float f = ( matriz[2][2]/maior);
            std::cout << std::fixed;
            cout << setprecision(2) << f;
            if ( j<2-1 ){
                cout << ", ";
            }else{
                cout << " ";
            }
        }
        cout << "}" << endl;
    }
    cout << endl;

    cin.ignore();
    return 0;
}





 

Link para o comentário
Compartilhar em outros sites

  • 0

No caso eu deveria colocar os valores das matrizes no codigo como eu faria isso eu tentei mais deu muito errado segue abaixo: 

não entendo o que quer dizer "colocar os valores das matrizes no codigo". você quer guardar o resultado na própria matriz?

Link para o comentário
Compartilhar em outros sites

  • 0

ex digito 1 2 3 4 e ele mostra  1  2

                                                3  4

o programa deve mostrar os números que o usuário digitar na matriz

eu consegui armazenar os valores imprimi-los porem não consigo calcula-los

Editado por Leonardo Prass
Link para o comentário
Compartilhar em outros sites

  • 0

#include <iostream>
 #include <iomanip>


 using namespace std;

 int main()
 {
  char matriz [26] [26];
  
 for(int i=0; i<2;i++){
 for(int j=0;j<2;j++){
 cout<<"Numero da Linha " <<i <<" Numero da Coluna " <<j <<"\n" ;
 cin >> matriz[j];


  } }

  cout << "\n\nValores na matriz\n" << endl;
  for(int i = 0; i < 2; i++){
    for(int j = 0; j < 2; j++){
      cout <<"  "  << matriz[j];
    }

    cout << "\n" << endl;
  }

 

 

 


  }

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...