Pesquisar este blog

Livros Recomendados

quinta-feira, 3 de setembro de 2020

URI - 1578 - Matriz de Quadrados - Ad-Hoc - C++

Plataforma: URI

Problema1578

Enunciado:

Atrapalhilton é um estudante muito dedicado, embora muito, muito atrapalhado. Na semana passada, seu professor de Matemática, o Sr. Sabetudilton, recomendou à classe uma lista de exercícios sobre matrizes. Atrapalhilton, aplicado como é, dediciu fazer os exercícios no mesmo dia, tão logo chegou em casa, embora apenas após assistir o episódio vespertino de A Galinha Listradinha, seu programa de TV favorito. O enunciado de um dos exercícios dizia:

  • Calcule o quadrado de cada uma das matrizes abaixo…

No entanto, Atrapalhilton fez uma baita duma confusão. Para ele, o quadrado de uma matriz quadrada Aé a matriz dos quadrados dos valores da matriz A. Por exemplo, o quadrado da matriz

13
57

para ele não é

1624
4064

mas

19
2549

Atrapalhilton conseguiu calcular o “quadrado” da primeira matriz, da segunda, da terceira e percebeu que já estava muito tarde, que não ia conseguir terminar de calcular os “quadrados” de todas as matrizes da lista. Então, decidiu escrever um programa que fizesse o serviço para ele.


Linguagem: C++

Solução: 

#include <iostream>
#include <iomanip>

using namespace std;

unsigned long long int contaDigitos(unsigned long long int valor) {
    int resposta = 1;
    
    while (valor > 9) {
        resposta++;
        valor /= 10;
    }
    
    return resposta;
}

int main() {
    
    int x = 4, n, m;
    
    cin >> n;
    
    while (n--) {
        cin >> m;
        unsigned long long int quadrados[m][m], valor, maiores[m];
        
        for (int i=0; i<m; i++) {
            for (int j=0; j<m; j++) {
                cin >> valor;
                quadrados[i][j] = valor * valor;
            }
        }
        
        if (x != 4)
            cout << endl;
            
        cout<<"Quadrado da matriz #"<<x++<<":"<<endl;

        for (int i=0; i<m; i++)
            maiores[i] = quadrados[0][i];

        for (int i=1; i<m; i++) {
            for (int j=0; j<m; j++) {
                if (maiores[j] < quadrados[i][j])
                    maiores[j] = quadrados[i][j];
            }
        }
     
        for (int i=0; i<m; i++)
            maiores[i] = contaDigitos(maiores[i]);
        
        for (int i=0; i<m; i++) {
            for (int j=0; j<m-1; j++)
                cout<<setw(maiores[j])<<right<<quadrados[i][j]<<" ";
            
            cout<<setw(maiores[m-1])<<right<<quadrados[i][m-1]<<endl;
        }
        
    }
    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas