Jump to content
Fórum Script Brasil
  • 0

Duvida Definir Maior Numero na Diagonal de Uma Matriz


Leonardo Prass
 Share

Question

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;





  }




 

Edited by Leonardo Prass
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 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

Edited by vangodp
Link to comment
Share on other 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;
  }

 

Edited by Leonardo Prass
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by Leonardo Prass
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...