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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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; | |
} |
Nosso leitor Roger Benet também conseguiu uma solução em C++ que usa unicamente vetores unidimensionais! Veja:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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; | |
} | |
} | |
} |