clase16 matrices

18
Matrices Edisson Gutiérrez Jiménez Universidad de Antioquia Lógica y representación I

Upload: adrian-espinosa

Post on 11-Jan-2017

22 views

Category:

Education


0 download

TRANSCRIPT

Matrices

Edisson Gutiérrez Jiménez

Universidad de Antioquia

Lógica y representación I

Definición

• Las matrices son estructuras de datos queorganizan su información en forma de tablas;es decir, los elementos que la conformanestán dispuestos bajo dos conceptos declasificación (fila y columna). Para poderindicar el lugar donde se encuentra undeterminado elemento, es necesario utilizardos índices: uno para indicar el renglón o fila yotro para indicar la columna.

Ejemplo

• Un arreglo bidimensional N * M tiene N filas yM columnas; por lo tanto, tiene N * Melementos dispuestos interiormente enmemoria en forma sucesiva. Gráficamente sepuede representar como una tabla de valores.Si matDatos es una matriz de 5 * 7 serepresentará así:

El arreglo anterior tiene 35 elementos, todos ellos con el nombrematDatos y se diferencian entre sí por dos índices; el primeroindica la fila donde está ubicado el elemento y el segundo lacolumna. El elemento matDatos[4, 2] hace referencia alcontenido del elemento ubicado en la fila 4 columna 2.

Recorrido de una matriz

• Para llevar información a todo el arreglo sepuede hacer de dos formas: una será llenandoprimero la fila uno, luego la fila 2, hasta la filaN; y la otra sería llenando primero la columnauno, luego la dos y así sucesivamente hastallenar la columna M,

Recorrido por filas

for (i=0;i<filas;i++)

{

for (j=0;j<columnas;j++)

{

System.out.println("Ingrese un dato");

matDatos[i][j] = sc.nextInt();

}

}

Recorrido por columnas

for (j=0;j<columnas;j++)

{

for (i=0;i<filas;i++)

{

System.out.println("Ingrese un dato");

matDatos[i][j] = sc.nextInt();

}

}

Ejemplo 1

• Hacer un algoritmo que lea una matriz de NFfilas y NC columnas y calcule la suma de lasfilas, dejando los resultados en un vector;imprima el vector.

public static void main(String[] args) {Scanner sc = new Scanner(System.in);

int filas, columnas, i, j;System.out.println("Ingrese la cantidad de filas: ");

filas = sc.nextInt();System.out.println("Ingrese la cantidad de columnas: ");

columnas = sc.nextInt();int[][] matDatos = new int[filas][columnas]; int[] sumaFilas = new int[filas];for (j=0;j<columnas;j++){

for (i=0;i<filas;i++){

System.out.println("Ingrese un dato: ");

matDatos[i][j] = sc.nextInt();}

}for (i=0;i<filas;i++){

sumaFilas[i] = 0;for (j=0;j<columnas;j++){

sumaFilas[i] += matDatos[i][j];}

}for (i=0;i<filas;i++){

System.out.println("La suma de la fila " + (i+1) + " es " + sumaFilas[i]);

}}

Ejemplo 2• La Registraduria Nacional del Estado Civil dentro de sus principales

funciones es la de dirigir y organizar el proceso electoral y demásmecanismos de participación ciudadana. Para las elecciones deAlcaldía y Gobernación del pasado 25 de Octubre de 2015 lo hacontratado a usted para que realice un algoritmo para realizar elreconteo de los votos de la Alcaldía de la Unión Antioquia, debido ala controversia generada por los resultados iniciales del preconteo.La Registraduria requiere que usted haga un algoritmo que lepermita registrar en una matriz la información de los 6 candidatos:

• HUGO BOTERO LOPEZ• ELEUTERIO DE JESUS MARTINEZ VALENCIA• CARLOS ALBERTO FRANCO ARROYAVE• FERNANDO JAIME BOTERO CAMPUZANO• PABLO PELAEZ MEJIA• NATALIA DUQUE ALZATE

• La matriz solo debe tener de cada candidato elnúmero de identificación, partido (con lasiguiente codificación: OPCIÓN CIUDADANA =1, CAMBIO RADICAL=2, LIBERAL =3, CENTRODEMOCRÁTICO= 4, ALIANZA VERDE= 5,ALIANZA SOCIAL INDEPENDIENTE=6) y elnúmero de votos obtenidos por el candidato.

• La Matriz queda de la siguiente manera con su respectiva codificación:

Identificación Partido Votos

71456978 1 0

10216482 2 0

70255445 3 0

10225478 4 0

71954785 5 0

43254789 6 0

• El algoritmo debe realizar lo siguiente:1. Almacenar la información inicial de cada

candidato antes del conteo de votos en lamatriz. Para ello el usuario ingresará para cadacandidato la siguiente información: número deidentificación, partido y número de votosobtenidos en las urnas. La columna en donde seindica el número de votos obtenidos por cadacandidato debe quedar en 0.

2. El algoritmo debe dar la opción al usuario deingresar el número de votos que obtuvo cadacandidato, para ello debe ingresar la cédula delcandidato y el número de votos que obtuvo y sedebe almacenar dicho valor en la fila y columnacorrespondiente

3. El algoritmo debe dar la opción de saber quécandidato ganó las elecciones y con cuantosvotos.

4. Por último el algoritmo también debe dar laopción de saber cuántos votos en totalobtuvieron todos los candidatos

public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);

int filas = 6, columnas = 3, i, j, cedula, mayorVotos, candGanador, totalVotos = 0;int[][] matVotos = new int[filas][columnas];for (i=0;i<filas;i++){

System.out.println("Ingrese la identificación del candidato: ");

matVotos[i][0] = sc.nextInt();System.out.println("Ingrese el partido del candidato: ");

matVotos[i][1] = sc.nextInt();matVotos[i][2] = 0;

}

System.out.println("Registro de votos de los candidatos ");

for (i=0;i<filas;i++){

System.out.println("Ingrese la cedula del candidato a registrarle los votos: ");

cedula = sc.nextInt();for (j=0;j<filas;j++){

if (cedula == matVotos[j][0]){

System.out.println("Ingrese el número de votos del candidato: " + cedula);

matVotos[j][2] = sc.nextInt();j=filas;

}}

}

mayorVotos = matVotos[0][2];candGanador = matVotos[0][0];for (i=1;i<filas;i++){

if (matVotos[i][2] > mayorVotos){

mayorVotos = matVotos[i][2];candGanador = matVotos[i][0];

}}System.out.println("El candidato ganador es " + candGanador + " con " + mayorVotos + " votos");

for (i=0;i<filas;i++){

totalVotos += matVotos[i][2];}System.out.println("El total de votos obtenidos por todos los candidatos es " + totalVotos);

}

Referencias

• OVIEDO, Efraín. Lógica de programación.