fork(5) download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. int n, i, j;
  5. scanf("%i", &n);
  6.  
  7. int mat[n][n];
  8.  
  9. for (i = 0; i < n; i++) {
  10. for (j = 0; j < n; j++) {
  11. scanf("%i", &mat[i][j]);
  12. }
  13. }
  14.  
  15. for (i = 0; i < n; i++) {
  16. for (j = 0; j < n; j++) {
  17. printf("%i ", mat[i][j]);
  18. }
  19. printf("\n");
  20. }
  21.  
  22. int somaDP = 0, somaDS = 0;
  23.  
  24. //soma diagonal principal
  25. for (i = 0; i < n; i++) {
  26. somaDP += mat[i][i];
  27. }
  28.  
  29. //soma diagonal secundaria
  30. for (i = 0; i < n; i++) {
  31. somaDS += mat[i][n-i-1];
  32. }
  33.  
  34. //soma linhas
  35. printf("\nSoma das linhas: ");
  36. int vetL[n];
  37. for (i = 0; i < n; i++) {
  38. vetL[i] = 0;
  39. for (j = 0; j < n; j++) {
  40. vetL[i] += mat[i][j];
  41. }
  42. }
  43. for (i = 0; i < n; i++) {
  44. printf("%i ", vetL[i]);
  45. }
  46.  
  47. //soma colunas
  48. printf("\nSoma das colunas: ");
  49. int vetC[n];
  50. for (j = 0; j < n; j++) {
  51. vetC[j] = 0;
  52. for (i = 0; i < n; i++) {
  53. vetC[j] += mat[i][j];
  54. }
  55. }
  56. for (i = 0; i < n; i++) {
  57. printf("%i ", vetC[i]);
  58. }
  59.  
  60. printf("\nSoma diagonal principal %i e secundaria %i\n", somaDP, somaDS);
  61.  
  62. int testaL = 1, testaC = 1;
  63. for (i = 1; i < n; i++) {
  64. if (vetL[i] != vetL[i-1]) {
  65. testaL = 0;
  66. break;
  67. } else if (vetC[i] != vetC[i-1]) {
  68. testaC = 0;
  69. break;
  70. }
  71. }
  72.  
  73. if (testaL && testaC && somaDP == somaDS && somaDP == vetL[0]) {
  74. printf("Quadrado magico");
  75. } else {
  76. printf("Quadrado nao magico");
  77. }
  78.  
  79. return 0;
  80. }
  81.  
Success #stdin #stdout 0s 2172KB
stdin
3
8 0 7
4 5 6
3 10 2
stdout
8 0 7 
4 5 6 
3 10 2 

Soma das linhas: 15 15 15 
Soma das colunas: 15 15 15 
Soma diagonal principal 15 e secundaria 15
Quadrado magico