Tiago Andrade Posted October 6, 2012 at 07:46 PM Report #478057 Posted October 6, 2012 at 07:46 PM Ola pessoal, Eu tenho uma matriz de largura x comprimento, e queria preenche-la só 15% dela. Como é que posso fazer isso? Não estou a conseguir visualizar como faço vejo a percentagem da dimensão total da matriz, nem como depois posso verificar se já preenchi essa percentagem. Obrigado
Baderous Posted October 6, 2012 at 08:01 PM Report #478060 Posted October 6, 2012 at 08:01 PM Uma matriz 3x4 tem 12 elementos. 15% de 12 é 1.8 (15*12/100). Agora tens de pensar como tratas os casos em que 15% é um decimal.
pmg Posted October 6, 2012 at 08:06 PM Report #478062 Posted October 6, 2012 at 08:06 PM (edited) Qual é o preenchimento da matriz identidade de tamanho 100? A matriz em causa tem 10000 elementos; 100 desses elementos tem o valor 1, outros 9900 tem o valor 0. :-) Edited October 6, 2012 at 08:08 PM by pmg What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Tiago Andrade Posted October 6, 2012 at 10:59 PM Author Report #478097 Posted October 6, 2012 at 10:59 PM Já compreendi, e esse problema já esta resolvido. Obrigado. Agora outro problema que me esta a surgir é: estou numa posição x,y dentro dessa matriz e quero preencher com 1's a volta dessa posição. Mas o que me pode acontecer é sair do tamanho da matriz (caso esteja no limite da matriz) Como posso proteger o código de ele não dar o erro "OutOfBoundsException"?
bcaceiro Posted October 7, 2012 at 10:12 AM Report #478110 Posted October 7, 2012 at 10:12 AM Vais ter de fazer ainda uns valentes if's para poder proteger de todas as possibilidades 🙂 Minesweeper a dar que pensar 🙂
Tiago Andrade Posted October 7, 2012 at 02:19 PM Author Report #478124 Posted October 7, 2012 at 02:19 PM true my friend, true! Eu estou a usar muitos if's, mas queria saber se não há uma maneira de otimizar isto. 😕 Ou outra maneira de pensar nisto.
SteveWorks Posted October 7, 2012 at 03:20 PM Report #478133 Posted October 7, 2012 at 03:20 PM (edited) Considerando que a posição na matriz é dada pelo par (x,y), aqui tens uma possível implementação: for(int i=x-1;i<=x+1&&i<matrix.length;++i) if(i>=0) for(int j=y-1;j<=y+1&&j<matrix[0].length;++j) if(j>=0) if(isABomb(i,j)) /* Increment counter */ Edited October 7, 2012 at 03:21 PM by SteveWorks
Tiago Andrade Posted October 7, 2012 at 03:47 PM Author Report #478135 Posted October 7, 2012 at 03:47 PM (edited) Só vou deixar aqui um gostinho das quantidades de if's que estou a usar. if(x==0) { if(y==0) { if(a[x][y+1]!=-1) a[x][y+1]++; if(a[x+1][y]!=-1) a[x+1][y]++; if(a[x+1][y+1]!=-1) a[x+1][y+1]++; } if(y==coluna-1) { if(a[x][y-1]!=-1) a[x][y-1]++; if(a[x+1][y]!=-1) a[x+1][y]++; if(a[x+1][y-1]!=-1) a[x+1][y-1]++; } else { if(a[x][y-1]!=-1) a[x][y-1]++; if(a[x][y+1]!=-1) a[x][y+1]++; if(a[x+1][y]!=-1) a[x+1][y]++; if(a[x+1][y-1]!=-1) a[x+1][y-1]++; if(a[x+1][y+1]!=-1) a[x+1][y+1]++; } } Edited October 7, 2012 at 03:49 PM by Tiago Andrade
SteveWorks Posted October 7, 2012 at 03:56 PM Report #478136 Posted October 7, 2012 at 03:56 PM É bom que te depares com estas situações, pois só assim irás aprender. Certamente já reparaste que tens aí ações repetidas e incrementos controlados. Isto resume-se a ciclos e é para isto que eles servem!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now