Pesquisar este blog

Livros Recomendados

terça-feira, 23 de fevereiro de 2021

URI (BEECROWD) - 1827 - Matriz Quadrada IV - Iniciante - C e C++

Este post traz a solução para o problema Matriz Quadrada IV. Em geral esses problemas de matrizes são interessantes, mas nem todos exigem de fato que se declare e use uma matriz. Confira a minha solução para esse problema!

Plataforma: URI (BEECROWD)

Problema1827

Enunciado:

Neste programa seu trabalho é ler um valor inteiro que será o tamanho da matriz quadrada (largura e altura) que será preenchida da seguinte forma: a parte externa é preenchida com 0, a parte interna é preenchida com 1, a diagonal principal é preenchida com 2, a diagonal secundária é preenchida com 3 e o ponto central contém o valor 4, conforme os exemplos abaixo.

Obs: o quadrado com '1' sempre começa na posição tamanho/3, tanto na largura quanto quanto na altura. A linha e a coluna começam em zero (0).

Linguagens: C e C++

Solução:

Basta fazer os testes para saber cada valor que precisa ser impresso, de 1 até 4. Os dois códigos seguem a mesma lógica.

Código em C:

#include <stdio.h>

int main() {
    int n, linha, coluna, meio;
    
    while (scanf("%i", &n) != EOF) {
        int valores[n];
        linha = 0;
        meio = n / 2;
        
        while (linha < n) {
            coluna = 0;
            
            while (coluna < n) {if (linha == meio && coluna == meio)
                    printf("4");
                else if (linha >= n / 3 && coluna >= n / 3 && linha < n - n / 3 && coluna < n - n / 3)
                    printf("1");
                else if (linha == coluna)
                    printf("2");
                else if (linha + coluna + 1 == n)
                    printf("3");
                else
                    printf("0");
                coluna++;
            }
            printf("\n");
            linha++;
        }
        printf("\n");
    }

    return 0;
}

Código em C++:

#include <iostream>

using namespace std;

int main() {
    int n, linha, coluna, meio;
    
    while (cin >> n) {
        int valores[n];
        linha = 0;
        meio = n / 2;
        
        while (linha < n) {
            coluna = 0;
            
            while (coluna < n) {if (linha == meio && coluna == meio)
                    cout << "4";
                else if (linha>=n/3 && coluna>=n/3 && linha<n-n/3 && coluna<n-n/3)
                    cout << "1";
                else if (linha == coluna)
                    cout << "2";
                else if (linha + coluna + 1 == n)
                    cout << "3";
                else
                    cout << "0";
                coluna++;
            }
            cout << endl;
            linha++;
        }
        cout << 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