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
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
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.
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
Vais ter que verificar no mÃÂnimo 3 números (exemplo: [1,4]) e no máximo 8 números (exemplo: [2,3]).
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
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...
#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;
}