Salve! Hoje vamos conhecer as soluções em C e C++ para o problema 1478 do Beecrowd, intitulado "Matriz Quadrada II". Ele é bem simples e a verdade é que nem precisa de uma matriz para resolvê-lo! Eu resolvi ele usando array (ok, um array é uma matriz unidimensional, mas não precisei declarar um array de duas dimensões, mxm).
Plataforma: URI (BEECROWD)
Problema: 1478
Enunciado:
Solução:
Li um valor n e declarei um array com n valores. Todas as variáveis presentes no problema foram declaradas como short int porque acabam recebendo somente valores pequeno.
Para seguir o padrão solicitado, crio dois laços de repetição, um dentro do outro, percorrendo valores de 0 até n-1 como se fosse uma matriz. O valor da variável primeiro inicia em linha+2 para cada linha, e é atualizado de acordo com as condições (aumenta 1 se a linha for menor, diminui 1 se a linha for maior ou é igual a um se for igual). Fiz anda um teste pra saber se a coluna é zero, apenas para não imprimir o espaço na frente, algo que deve ser feito para os valores seguintes.
Código em C:
Aqui o único detalhe a ser ressaltado é que %3hd faz o valor ocupar três espaços, deixando a tabela corretamente formatada.
#include <stdio.h> int main() { short int n = 1; while (1) { scanf("%hd", &n); if (n == 0) break; short int matriz[n], linha, coluna, primeiro = 1; for (linha = 0; linha < n; linha++) { primeiro = linha + 2; for (coluna = 0; coluna < n; coluna++) { if (linha < coluna) primeiro++; else if (linha > coluna) primeiro--; else primeiro = 1; if (coluna == 0) printf("%3hd", primeiro); else printf(" %3hd", primeiro); } printf("\n"); } printf("\n"); } return 0; }
#include <iostream> #include <iomanip> using namespace std; int main() { short int n = 1; while (1) { cin >> n; if (n == 0) break; short int linha, coluna, valor = 1; for (linha = 0; linha < n; linha++) { valor = linha + 2; for (coluna = 0; coluna < n; coluna++) { if (linha < coluna) valor++; else if (linha > coluna) valor--; else valor = 1; if (coluna == 0) cout << setw(3) << valor; else cout << setw(4) << valor; } cout << endl; } cout << endl; } return 0; }