Autor Tópico: Matriz C#  (Lida 2686 vezes)

Offline Tsotumo

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
Matriz C#
« em: Dezembro 10, 2009, 02:53:44 pm »
Ora viva a todos, escrevo aqui como ultimo recursos, visto que já tentei de tudo e não estou a conseguir.

O problema é o seguinte. Tenho uma matriz de dimensão [4,4], por exemplo. Preencho a matriz com valores e no final quero saber quais os picos da matriz, sendo que para ser um pico, todos os valores à sua volta tem que ser mais pequenos. Já tentei de tudo e não consigo, será que alguém me pode ajudar? Desde já um grande abraço e até breve

Offline Teotónio Ricardo

  • Administrator
  • Newbie
  • *****
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
    • http://www.teotonio.pt
Matriz C#
« Responder #1 em: Dezembro 10, 2009, 07:14:51 pm »
Por exemplo verificar [2,3] tens que saber se [1,3], [2,2], [1,2], [1,4], [2,4], [3,4], [3,3], [3,2] são todos menores, é isso que queres saber?

1 1 1 1
1 1 2 1
1 1 1 1
1 1 1 1

Offline Tsotumo

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
Matriz C#
« Responder #2 em: Dezembro 10, 2009, 07:24:03 pm »
Sim, é isso. Já tentei de diversas formas e não consigo. Já andei a experimentar algumas coisas e sei que tenho que ir lá com if's mas ao tentar validar os extremos da matriz também tenho erros. Tou a ficar maluco com isto.
Abraços.

Offline Tsotumo

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
Matriz C#
« Responder #3 em: Dezembro 10, 2009, 07:26:27 pm »
Defini a matriz da seguinte forma:

        const int x = 3;
        const int y = 3;


        //Matriz para armazenamento dos valores
        static int[,] Valores = new int[x, y];



Tenho este código mas só o primeiro if é que funciona



 static void escrita()
        {
            int linha, coluna;
            int maxLinhas = x;
            int maxColunas = y;

            for (linha = 0; linha < x; linha++)
            {
                for (coluna = 0; coluna < y; coluna++)
                {

                    if (linha == 0 && coluna==0)
                    {
                        if (Valores[linha, coluna] > Valores[linha, coluna + 1])
                        {
                            if (Valores[linha, coluna] > Valores[linha + 1, coluna])
                            {
                                if (Valores[linha, coluna] > Valores[linha + 1, coluna + 1])
                                {

                                    Console.WriteLine("Coordenadas X{0} Y{1}", linha, coluna);
                                   
                                }

                            }

                        }
                    }

                    if (linha == 0 && coluna == y)
                    {

                        Console.WriteLine("Coordenadas X{0} Y{1}", linha, coluna);
                   
                   
                    }

                    if (linha == x && coluna == 0)
                    {
                        Console.WriteLine("Coordenadas X{0} Y{1}", linha, coluna);

                    }

                    if(linha==x && coluna==y)
                    {
                        Console.WriteLine("Coordenadas X{0} Y{1}", linha, coluna);
                    }





                }
            }
        }

Nos if's seguintes ao   if (linha == 0 && coluna==0) pus a escrever para ver se entrava neles mas nada.
Abraços

Offline Teotónio Ricardo

  • Administrator
  • Newbie
  • *****
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
    • http://www.teotonio.pt
Matriz C#
« Responder #4 em: Dezembro 10, 2009, 07:28:33 pm »
Vais ter que verificar no mínimo 3 números (exemplo: [1,4]) e no máximo 8 números (exemplo: [2,3]).

Offline Tsotumo

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
Matriz C#
« Responder #5 em: Dezembro 10, 2009, 07:36:19 pm »
Certo, mas o meu problema é como? Como é que eu sei que ao fazer if Valores[linha,coluna]>Valores[linha-1,coluna] não dá erro? É que se eu estiver na primeira posição da matriz não posso executar esse if pq vou estar a comparar com um valor que não existe.

Não sabes onde posso encontrar um exemplo semelhante? É que não estou mesmo a perceber isto.

Abraços

Offline icuz

  • Newbie
  • *
  • Mensagens: 0
  • Karma: +0/-0
    • Ver Perfil
Matriz C#
« Responder #6 em: Dezembro 22, 2009, 10:48:32 am »
Talvez te devesses explicar melhor, mas talvez eu esteja errado, devido a forma como exposte o problema, mas visto como o interpretei, deixo aqui um codigozito que talvez possa ajudar...
Código: [Seleccione]
#include <iostream>

using namespace std;

void main(){

int max =-999;
int min =9999;
int arrayBd[4][4];
int valor;

/* correr o arraybidimensional e inserir valores em cada posição */
for(int i=0; i<=3;i++){ /* linhas */
for(int k=0; k<=3;k++){ /* colunas */
cout << "[+] Indique o valor a inserir?\n";
cin >> valor;
arrayBd[i][k] = valor;
}
}

/* correr o arraybidimensional e verifcar qual o maior valor e qual o menor */
for(int x=0; x<=3; x++)
for(int g=0; g<=3;g++){
if(arrayBd[x][g] >= max)
max = arrayBd[x][g];

if(arrayBd[x][g] <= min)
min = arrayBd[x][g];

}
cout << "[*] - maior : " << max << "\n" << "[*] - menor : " << min << endl;
}
« Última modificação: Dezembro 22, 2009, 10:51:56 am por icuz »
"Hack The Planet"

 

Sitemap 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