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

Tsotumo

  • Novato
  • *
  • Mensagens: 12
  • Karma: 0
    • Ver Perfil
Matriz C#
« em: Dezembro 10, 2009, 02:53:44 »
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


cenourinha

  • Administrador
  • Heroi da Nação
  • *****
  • Mensagens: 13032
  • Karma: 16
    • Ver Perfil
    • WebTuga
Re: Matriz C#
« Responder #1 em: Dezembro 10, 2009, 07:14:51 »
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
Always know if the juice is worth the squeeze

GetHost4You - Alojamento Gratuito PHP + MySql
WebTuga Hosting - Alojamento Profissional PHP + MySql

Tsotumo

  • Novato
  • *
  • Mensagens: 12
  • Karma: 0
    • Ver Perfil
Re: Matriz C#
« Responder #2 em: Dezembro 10, 2009, 07:24:03 »
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.

Tsotumo

  • Novato
  • *
  • Mensagens: 12
  • Karma: 0
    • Ver Perfil
Re: Matriz C#
« Responder #3 em: Dezembro 10, 2009, 07:26:27 »
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

cenourinha

  • Administrador
  • Heroi da Nação
  • *****
  • Mensagens: 13032
  • Karma: 16
    • Ver Perfil
    • WebTuga
Re: Matriz C#
« Responder #4 em: Dezembro 10, 2009, 07:28:33 »
Vais ter que verificar no mínimo 3 números (exemplo: [1,4]) e no máximo 8 números (exemplo: [2,3]).
Always know if the juice is worth the squeeze

GetHost4You - Alojamento Gratuito PHP + MySql
WebTuga Hosting - Alojamento Profissional PHP + MySql

Tsotumo

  • Novato
  • *
  • Mensagens: 12
  • Karma: 0
    • Ver Perfil
Re: Matriz C#
« Responder #5 em: Dezembro 10, 2009, 07:36:19 »
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

icuz

  • Hacker
  • Novato
  • *
  • Mensagens: 1
  • Karma: 0
    • Ver Perfil
Re: Matriz C#
« Responder #6 em: Dezembro 22, 2009, 10:48:32 »
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 por icuz »
"Hack The Planet"