Solução Chuva

Solução por Rogério Júnior

 

Este é um problema muito simples que envolve apenas o básico de manipulação com matrizes. Se você não sabe o que é uma matriz, clique aqui para ler nossa aula de vetores e vá ao final, onde é comentado sobre este tipo de array. Vamos inicializar uma matriz de inteiros com limites nos valores máximos de N. Vamos definir, então, MAXN como esse limite e inicializar a int matrix[MAXN][MAXN]. Vamos declará-la como global, fora da main e todos os seus elementos serão inicializados com valor 0. Assim, na entrada, após lermos o valor de n, vamos criar três fors, um dentro do outro, para percorrermos toda a entrada. O primeiro irá de 1 a dois, somente para lermos as matrizes duas vezes (pois são duas matrizes na entrada). O segundo irá de 1 a n, para percorrermos todas as linhas da matriz que estamos lendo. O terceiro irá novamente de 1 a n, para percorrermos todos os elementos da linha da matriz que estamos vendo. Para cada elemento desses, vamos ler um inteiro na tela e somar seu valor ao que está salvo em matrix.

Depois que todos os loops terminarem, faremos, novamente, dois fors para percorrermos a matriz inicial, imprimindo cada um de seus elementos e uma quebra de linha no fim de cada linha impressa da matriz. Segue o código para melhor entendimento:


#include <cstdio>
#define MAXN 110
int n, matrix[MAXN][MAXN];
int main(){
scanf("%d", &n); // leio o valor de n
for(int m=1; m<=2; m++) // para cada uma das duas matrizes que vou ler
for(int i=1; i<=n; i++) // para uma das linhas da matriz
for(int j=1; j<=n; j++){ // para cada elemento da linha da matriz
// declaro e leio o valor de num
int num;
scanf("%d", &num);
// e adiciono seu valor ao elemento corespondente em matrix
matrix[i][j]+=num;
}
for(int i=1; i<=n; i++){ // para cada linha da matriz final
for(int j=1; j<=n; j++) // para cada elemento da linha
printf("%d ", matrix[i][j]); // imprimo o seu valor seguido de espaço em branco
printf("\n"); // e imprimo a quebra de linha no final da linha da matriz
}
return 0;
}

view raw

chuva.cpp

hosted with ❤ by GitHub

Nosso leitor Roger Benet também conseguiu uma solução em C++ que usa unicamente vetores unidimensionais! Veja:


#include<iostream>
using namespace std;
int main() {
int n,i,j;
cin >> n;
int vet[n*n];
int vet2[n*n];
for(i = 0; i < n*n; i++){
cin >> vet[i];
}
j = 0;
for(i = 0; i < n*n; i++){
cin >> vet2[i];
}
for(i = 0; i < n*n; i++){
cout << vet2[i] + vet[i];
j++;
if(j < n)cout << " ";
else {
cout << endl;
j = 0;
}
}
}

view raw

chuva_benet.cpp

hosted with ❤ by GitHub