-
Notifications
You must be signed in to change notification settings - Fork 0
/
MatrizRelojDeArena_DesvStand.java
124 lines (108 loc) · 4.25 KB
/
MatrizRelojDeArena_DesvStand.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package egg_ejemplos;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Scanner;
/**
*
* @author WALTER GOMEZ
*/
public class MatrizRelojDeArena_DesvStand {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner leer = new Scanner(System.in); DecimalFormat df = new DecimalFormat("###.##");
int n;
System.out.println("recuerde que el valor de filas y columnas debe ser impar");
do {
System.out.println(" Ingrese el valor de filas y columnas........");
n = leer.nextInt();
} while (n % 2 == 0 || n < 10);
int m[][] = new int [n][n];
int me = (n / 2) + 1;
ArrayList<Integer> vector;
vector = new ArrayList();
String maux[][] = new String[n][n];
// System.out.println(" --- la matriz original --- "); // llenamos la matriz original
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
m[i][j] = (int) (Math.random() * 10);
}
}
for (int i = 0; i < n; i++) { // llenamos la matriz auxiliar
for (int j = 0; j < n; j++) {
maux[i][j] = "#";
}
}
// lleno la matriz auxiliar con los datos de la matriz principal
for (int i = 0; i < me; i++) {
for (int j = i; j < n - i; j++) {
maux[i][j] = "" + m[i][j];
vector.add( Integer.parseInt(maux[i][j]));
maux[n - i - 1][j] = "" + m[n - i - 1][j];
vector.add(Integer.parseInt(maux[n - i - 1][j]));
}
}
System.out.println("---------------------------------------------------------"); // mostramos la dos matrices juntas
System.out.println(" - Matriz inicial - \t\t- Matriz reloj de arena - ");
int colContarMatriz = m[0].length;
for (int x1 = 0, x2 = 0; x1 < m.length || x2 < maux.length; x1++, x2++) {
// Si no se han pintado todas las filas de la matriz A
if (x1 < m.length) {
System.out.print("[");
for (int y1 = 0; y1 < m[x1].length; y1++) {
System.out.print(m[x1][y1]);
if (y1 != m[x1].length - 1) {
System.out.print(" ");
}
}
System.out.print("]");
} else {
// Si ya se pintaron todas las filas e la matriz A
// Esto lo hago para que la matriz B siempre quede alineada en caso de la matriz A tenga menos filas
for (int i = 0; i < colContarMatriz - 1; i++) {
System.out.print(" ");
}
}
// Si no se han pintado todas las filas de la matriz A
if (x2 < maux.length) {
System.out.print("\t\t[");
for (int y2 = 0; y2 < maux[x2].length; y2++) {
System.out.print(maux[x2][y2]);
if (y2 != maux[x2].length - 1) {
System.out.print(" ");
}
}
System.out.println("]");
}
}
System.out.println("---------------------------------------------------------\n");
int a= vector.size();
//Media
double media;
double suma = 0;
for (Integer i: vector) {
suma = suma + i;
}
media = suma / a;
System.out.println("la media es " +df.format( media)+"\n");
//Varianza
double varianza = 0;
double sumatoria;
for(Integer e:vector){
//for(int i = 0; i<a; i++) {
sumatoria = Math.pow(e - media, 2);
varianza = varianza + sumatoria;
}
varianza = varianza / (a-1);
//Desviacion
double desviacion;
desviacion = Math.sqrt(varianza);
System.out.println("La desviacion estandar es " + df.format(desviacion)+"\n");
}
}