Posts Tagged ‘matriz’

c# percorrendo matriz

January 5th, 2009

ao menos duas formas de percorrer uma matriz

using System;

namespace foo
{
class numbersAreGreat{
static void Main (string[] args){
string[] numbers = {“one”, “two”, “three”, “four”, “five”};
if (args.Length > 0)
{
int number = int.Parse(args[0]);
if (number <= 0)
{
Console.WriteLine("please more than zero");
}
else
if (number > numbers.Length)
{
Console.WriteLine(“{0} is greater than we can understand…”, number);
}
else
{
Console.WriteLine(“thanks for the {0} ! “, numbers[number - 1]);
}
}
else
{
Console.WriteLine(“would be a big effort to inform an integer ?”);
}

}
}
}

java posição em matriz

September 5th, 2006

Como é sabido de todos não se cria matrizes em Java e sim , vetor de vetor, o que na prática acaba sendo uma matriz, mas não temos uma sintaxe que crie de cara uma matriz onde todas as linhas tenham o mesmo comprimento, isto é definido na inicilização de cada linha.

Estavamos felizes em sala de aula, fazendo um exemplo lindo de jogo da velha, quando deparamos com a situação onde os nobres aluninhos não queriam entrar com a linha e coluna de cada jogada, queriam entrar com uma posição numérica para indicar onde cada jogada estava acontecendo … para simplificar a situação ofereci um solução “pensa pouco” que era um if para cada posição (ainda bem que eram somente 9 :) ) e indicar a linha e coluna na munheca … como não deu para pensar muito na hora, acabei pensando no metrô uma solução mas bonitinha, e transcrevo abaixo o código que usei para testar a solução e a mesma esta no método calculaPosicao q está no fimzim do código.

Posicao.java

1 public class Posicao {
2 public int linha;
3 public int coluna;
4
5 public String toString() {
6 return "linha=" + linha + " coluna=" + coluna;
7 }
8 }


VetorAmigo.java

01 
02 public class VetorAmigo {
03 
04    public static void main(String[] args) {
05       int[][] matriz1 = {{0,0,0},{0,0,0},{0,0,0}};
06       int[][] matriz2 = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
07       int[][] matriz3 = {{0,0,0,0},{0,0,0,0},{0,0,0,0}};
08 
09       int[][] matriz4 = new int[27][];
10       for (int i = 0; i < matriz4.length; i++) {
11          matriz4[inew int[5];
12       }
13       
14       testaMatriz(matriz1);
15       testaMatriz(matriz2);
16       testaMatriz(matriz3);
17       testaMatriz(matriz4);
18    }
19 
20    public static void testaMatriz(int[][] matriz) {
21       System.out.println("matriz " + matriz.length + " x " + matriz[0].length);
22       int linhas = matriz.length * matriz[0].length;
23       
24       for (int j = 1; j <= linhas; j++) {
25          Posicao p = calculaPosicaomatriz, j);
26          System.out.println("numero " + j + " = posicao : " + p);
27       }
28       
29       System.out.println("");
30    }
31 
32    /**
33     * calculo da linha :
34     
35     * Divindo o numero pela quantidade de elementos de cada linha
36     * obtemos um número entre a linha anterior e a desejada, com a 
37     * soma de 0.99 seguido de um truncamento (conversão para inteiro 
38     * desprezando as casas decimais) realizamos o arredontamento para cima
39     * e diminuimos 1 para usar como posição de vetor.
40     *  
41     * calculo da coluna
42     
43     * diminuimos o numero pela linha vezes a quantidade de elementos que 
44     * existem em cada linha reduzindo o número a primeira linha, e diminuimos 
45     * de 1 para usar como posição de vetor 
46     
47     @param matriz
48     @param i
49     @return Posicao
50     */
51    public static Posicao calculaPosicao(int[][] matriz, int i) {
52       Posicao p = new Posicao();
53       p.linha = (int)(((double)i / matriz[0].length)+0.99)-1
54       p.coluna = i - p.linha * matriz[0].length )-1
55       return p;
56    }
57 }

baixe os fontes: exemplo_matriz.zip