1
2 *@autor: GUILLERMO LONDOÑO 624041 FABIAN CANO 624020
3 *ESTE ES UN CUBO MAGICO QUE SUM A LAS FILA Y COLUMNAS Y LAS DIAGONALES Y LA MUESTRAEN CONSOLA
4
5 public class Cubang1{
6 public static void main(String args[]){
7 //Genero la matriz de x numeros;
8
9 int opc=1;
10 //ingreso al ciclo que me controla si desea o no salir del programa
11 while (opc!=0){
12 int fent=0;
13 int cent=0;
14 fent=capturaFilent();
15 cent=fent;
16 //cent=capturaColent();
17 int [][] mat1;
18 mat1= new int [fent][cent];
19 int [] vec1;
20 vec1= new int [fent];
21 int [] vec2;
22 vec2= new int [cent];
23 int [] vec3;
24 vec3= new int [fent];
25 int [] vec4;
26 vec4= new int [cent];
27 /*****/
28 int fila=0;
29 int col=0;
30 int pos=0;
31 int fvec=0;
32 int cvec=0;
33 int num=0;
34 int aux0=0;
35 int aux1=0;
36 int aux2=fent*cent;
37 int aux4=0;
38 int acum=0;
39 //int acum2=0;
40 float aux3=0;
41 float res=0;
42
43 entro al ciclo de repeticion para validar la informacion */
44 fila=capturaFila(fent);
45 col=capturaCol(fent);
46 num=capturaNum(aux2);
47 System.out.println(" ");
48 for(aux0=0;aux0<aux2+1;aux0++){
49 mat1[fila][col]=num;
50 aux1=num;
51 // Se evalua si 25 es divisible por num. Y si el residuo de esta
52 // division es divisible por 5 y da Cero;
53 if((aux1>=2)&&(aux1<=aux2)){
54 res=calcularRes(aux1, aux2);
55 aux3=res%fent;
56 //si el resultado da Cero
57 if(aux3==0){
58 col=col+2;
59 if(col==cent+1){
60 col=1;
61 }
62 if(col==cent){
63 col=0;
64 }
65 }
66 //si el residuo de las operaciones anteriores es diferente de cero;
67 if(aux3!=0){
68 fila=fila+2;
69 if(fila==fent+1){
70 fila=1;
71 }
72 if(fila==fent){
73 fila=0;
74 }
75 col=col+1;
76 if(col==cent){
77 col=0;
78 }
79 }
80 }
81 // si num es igual a 1 (es una excepcion que se hace en la
82 // division de 25)
83 if(num==1){
84 fila=fila+2;
85 if(fila==fent+1){
86 fila=1;
87 }
88 if(fila==fent){
89 fila=0;
90 }
91 col=col+1;
92 if(col==cent){
93 col=0;
94 }
95 }
96 num=num+1;
97 if(num>aux2){
98 num=1;
99 }
100 }
101 //impresion de la matriz
102 for(fila=0;fila<fent;fila++){
103 for(col=0;col<cent;col++){
104 if(mat1[fila][col]<=9){
105 System.out.print(" "+mat1[fila][col]);
106 }
107 if((mat1[fila][col]>9)&&(mat1[fila][col]<100)){
108 System.out.print(" "+mat1[fila][col]);
109 }
110 if((mat1[fila][col]>=100)&&(mat1[fila][col]<999)){
111 System.out.print(" "+mat1[fila][col]);
112 }
113 if(mat1[fila][col]>=1000){
114 System.out.print(" "+mat1[fila][col]);
115 }
116 if(col==cent-1){
117 System.out.println();
118 }
119 }
120 }
121 //llenado del vector fila
122 System.out.println(" ");
123 fvec=capturaFvec();
124 for(fila=fvec;fila==fvec;fila++){
125 for(col=0;col<cent;col++){
126 vec1[pos]=mat1[fila][col];
127 pos=pos+1;
128 }
129 break;
130 }
131 System.out.println(" ");
132 System.out.print("la fila "+fvec+" es ");
133
134 //impresion del vector fila
135 for(pos=0;pos<cent;pos++){
136 acum=acum+vec1[pos];
137 System.out.print(" "+vec1[pos]);
138 }
139 System.out.print(" Suma total de la fila = "+acum);
140 System.out.println(" ");
141
142 //llenado del vector columna
143 System.out.println(" ");
144 cvec=capturaCvec();
145 pos=0;
146 for(fila=0;fila<fent;fila++){
147 for(col=cvec;col==cvec;col++){
148 vec2[pos]=mat1[fila][col];
149 pos=pos+1;
150 }
151 }
152 System.out.println(" ");
153 System.out.print("la columna "+cvec+" es ");
154 //impresion del vector columna
155 acum=0;
156 for(pos=0;pos<fent;pos++){
157 acum=acum+vec2[pos];
158 System.out.print(" "+vec2[pos]);
159 }
160 System.out.print(" Suma total de la columna = "+acum);
161 System.out.println(" ");
162
163 // llemado vector diagonal
164 pos=0;
165 acum=0;
166 for(fila=0;fila<fent;fila++){
167 for(col=0;col<fent;col++){
168 if(fila==col){
169 vec3[pos]=mat1[fila][col];
170 pos=pos+1;
171 }
172 }
173 }
174 //impresion vector diagonal
175 System.out.println(" ");
176 System.out.print("la diagonal es ");
177 for(pos=0;pos<fent;pos++){
178 acum=acum+vec3[pos];
179 System.out.print(" "+vec3[pos]);
180 }
181 System.out.print(" Suma total de la diagonal = "+acum);
182 System.out.println(" ");
183
184 // llemado vector transversal
185 pos=0;
186 acum=0;
187 for(fila=0;fila<fent;fila++){
188 for(col=0;col<cent;col++){
189 aux4=fila+col;
190 if(aux4==fent-1){
191 vec4[pos]=mat1[fila][col];
192 pos=pos+1;
193 }
194 }
195 }
196 //impresion vector transversal
197 System.out.println(" ");
198 System.out.print("la transversal es ");
199 for(pos=0;pos<cent;pos++){
200 acum=acum+vec4[pos];
201 System.out.print(" "+vec4[pos]);
202 }
203 System.out.print(" Suma total de la tranversal = "+acum);
204 System.out.println(" ");
205
206 //control del ciclo de salida del programa
207 System.out.println(" ");
208 System.out.print("Desea salir digite->0 desea continuar digite cualquier tecla :");
209 opc=Lectura.datoInt();
210 }
211 }
212
213 //funcion de capturar cantidad de filas
214 public static int capturaFilent(){
215 int fe=0;
216 System.out.print("Digite numero impar para definir el tamaño de la matriz :");
217 fe=Lectura.datoInt();
218 return fe;
219 }
220
221 /*funcion de capturar cantidad de columnas
222 public static int capturaColent(){
223 int ce=0;
224 System.out.print("Digite la fila entre 0 y 33 donde desea colocar el numero :");
225 ce=Lectura.datoInt();
226 return ce;
227 }*/
228
229 //funcion de capturar la fila
230 public static int capturaFila(int fent){
231 int fi=0;
232 int po1=0;
233 po1=fent-1;
234 System.out.print("Digite la fila entre 0 y "+po1+" donde desea colocar el numero :");
235 fi=Lectura.datoInt();
236 return fi;
237 }
238 //funcion de capturar la columna
239 public static int capturaCol(int fent){
240 int co=0;
241 int po1;
242 po1=fent-1;
243 System.out.print("Digite la columna entre 0 y "+po1+" donde desea colocar el numero :");
244 co=Lectura.datoInt();
245 return co;
246 }
247 //funcion de capturar el numero inicial
248 public static int capturaNum(int aux2){
249 int nu=0;
250 System.out.print("Digite un numero con el que desea inicializar la matriz entre 1 y "+aux2+" :");
251 nu=Lectura.datoInt();
252 return nu;
253 }
254 //funcion que evalua 25 dividido por num
255 public static float calcularRes(int aux1, int aux2){
256 float rs=0;
257 rs=aux2%aux1;
258 return rs;
259 }
260 //captura de la fila a verificar
261 public static int capturaFvec(){
262 int fi=0;
263 System.out.print("Digite fila entre a verificar :");
264 fi=Lectura.datoInt();
265 return fi;
266 }
267 //captura de la columna a verificar
268 public static int capturaCvec(){
269 int co=0;
270 System.out.print("Digite columna entre a verificar :");
271 co=Lectura.datoInt();
272 return co;
273 }
274 }
