Commit da9921201cc6f84e938b7d92fd763ab3dfd1a8d2

Authored by Francisco Javier Coutiño
1 parent 20676b739a
Exists in master

p11 - Resuelto

11 - Mayor producto en cuadricula/p11
No preview for this file type
11 - Mayor producto en cuadricula/p11.cpp
... ... @@ -40,12 +40,21 @@ using namespace std;
40 40 #define SIZE_Y 20
41 41 #define SIZE_MAX_NUMBER 2
42 42  
  43 +int multiplyHorRight(int x, int y, int grid[SIZE_X][SIZE_Y]);
  44 +int multiplyVerDown(int x, int y, int grid[SIZE_X][SIZE_Y]);
  45 +int multiplyDiagRight(int x, int y, int grid[SIZE_X][SIZE_Y]);
  46 +int multiplyDiagLeft(int x, int y, int grid[SIZE_X][SIZE_Y]);
  47 +
  48 +int maxValue(int a, int b);
  49 +
43 50 int main(int argc, char const *argv[])
44 51 {
45 52 int x;
46 53 int y;
47 54 int grid[SIZE_X][SIZE_Y] = {0};
48 55  
  56 + long resultMax = 0;
  57 +
49 58 char buffer[SIZE_MAX_NUMBER];
50 59 char *ptrBuffer;
51 60 char *ptrNumeros;
... ... @@ -72,25 +81,71 @@ int main(int argc, char const *argv[])
72 81  
73 82 ptrBuffer = buffer;
74 83 memset(buffer,'\0',SIZE_MAX_NUMBER);
75   -
76 84 }
77 85 else { *ptrBuffer++ = *ptrNumeros; }
78 86  
79 87 ptrNumeros++;
80 88 }
81 89  
82   - //________________________________________-
83   - //PRINT GRID
84   - for (int i = 0; i < SIZE_Y; ++i)
  90 + //------------------------------------------
  91 + resultMax = 0;
  92 + for (y = 0; y < SIZE_Y; ++y)
85 93 {
86   - for (int j = 0; j < SIZE_X; ++j)
  94 + for (x = 0; x < SIZE_X; ++x)
87 95 {
88   - printf("%d\t",grid[j][i]);
  96 + resultMax = maxValue(multiplyHorRight(y, x, grid), resultMax); //Validacion de Horizontal
  97 + resultMax = maxValue(multiplyVerDown(y, x, grid), resultMax); //Validacion de Vertical
  98 + resultMax = maxValue(multiplyDiagRight(y, x, grid), resultMax); //Validacion en Diagonal derecha
  99 + resultMax = maxValue(multiplyDiagLeft(y, x, grid), resultMax); //Validacion en Diagonal izquierda
89 100 }
90   - printf("\n");
91 101 }
92   - //------------------------------------------
93 102  
  103 + printf("Resultado:\t%ld\n", resultMax);
94 104  
95 105 return 0;
  106 +}
  107 +
  108 +
  109 +//HORIZOTAL
  110 +int multiplyHorRight(int x, int y, int grid[SIZE_X][SIZE_Y])
  111 +{
  112 + return ( x+3 < SIZE_X ) ?
  113 + grid[x][y] *
  114 + grid[x+1][y] *
  115 + grid[x+2][y] *
  116 + grid[x+3][y] : 0;
  117 +}
  118 +
  119 +//VERTICAL
  120 +int multiplyVerDown(int x, int y, int grid[SIZE_X][SIZE_Y])
  121 +{
  122 + return ( y+3 < SIZE_Y ) ?
  123 + grid[x][y] *
  124 + grid[x][y+1] *
  125 + grid[x][y+2] *
  126 + grid[x][y+3] : 0;
  127 +}
  128 +
  129 +//DIAGONAL
  130 +int multiplyDiagRight(int x, int y, int grid[SIZE_X][SIZE_Y])
  131 +{
  132 + return ( x+3 < SIZE_X && y+3 < SIZE_Y ) ?
  133 + grid[x][y] *
  134 + grid[x+1][y+1] *
  135 + grid[x+2][y+2] *
  136 + grid[x+3][y+3] : 0;
  137 +}
  138 +
  139 +int multiplyDiagLeft(int x, int y, int grid[SIZE_X][SIZE_Y])
  140 +{
  141 + return ( x-3 >= 0 && y+3 < SIZE_Y ) ?
  142 + grid[x][y] *
  143 + grid[x-1][y+1] *
  144 + grid[x-2][y+2] *
  145 + grid[x-3][y+3] : 0;
  146 +}
  147 +
  148 +int maxValue(int a, int b)
  149 +{
  150 + return (a >= b) ? a : b;
96 151 }
97 152 \ No newline at end of file
... ...