sábado, 11 de março de 2017

Array multidimensional de inteiros - preenchimento aleatório

Agora pouco preenchi um array multidimensional
com números inteiros, e fiquei satisfeito, porém,
me surgiram algumas indagações:
1ª E se eu quisesse fazer este preenchimento
em modo aleatório, escolhendo exatamente a posição
para inserir meu número?
2ª E se eu quisesse criar uma rotina para impedimento
de caracteres na entrada de dados?
3ª E se eu quisesse que meu programa me avisasse
que uma posição já foi ocupada, como faria isto?
4ª E se eu quisesse limitar estas posições dentro
dos parâmetros estabelecidos pelo meu array?
Todas estas perguntas que fiz a mim mesmo
resolvi com este eficiente programa.
Quando um caractere é inserido ou uma posição
ocupada é acionada, ou ainda quando escolhemos
uma posição acima dos limites do array,
Um beep semelhante a do aviso sonoro padrão
do windows é retornado ao usuário.
No lugar deste beep eu poderia usar um que eu tenho
dentro da classe J, más optei por usar
um nativo do próprio java.

Veja abaixo uma imagem do programa em execução:


Veja abaixo o código do programa:

//ARRAY MULTIDIMENSIONAL - PREENCHIMENTO ALEATÓRIO
import java.awt.Toolkit;
import java.util.Scanner;

class PROJETO {
     public static void Inform ( ) {
         J jht = new J ( );
         // ////////////////////////////////////////////////////
         // Parâmetros da função printfx
         // Coord x, Coord y, String, cor de frente, cor de fundo,
         // Comprimento, Tempo, frequência, duração.
         jht.printfx ( 17, 20, "Por: ", 12, 15, 5, 0, 1000, 200 );
         jht.printfx ( 22, 20, "Samuel Lima", 9, 15, 11, 0, 0, 0 );
         jht.printfx ( 17, 21, "sa_sp10@hotmail.com", 0, 15, 20, 1800, 0, 0 );
         jht.printfx ( 33, 23, "MUITO OBRIGADO", 12, 15, 15, 0, 0, 0 );
     }
     // Esta função não permite a entrada de caracteres
     public static int Aleatorios ( char c ) {
         int i;
         for ( i = 0; i < ( c ); i++ ) {
              if ( c < '0' || c > '9' )
                   return 0;
         }
         return 1;
     }
     public static void main ( String args [ ] ) {
         // Classe J é usada para a formatações das
         // cores e posicionamentos dos textos no vídeo
         J jht = new J ( );
         jht.Moldura ( 1, 24, 2, 78, 15 );
         int i, j = 0, x = 0;
         int tam = 3;
         int a = 0;
         int vet [ ][ ] = new int [ tam ] [ tam ];
         jht.poscolor ( 20, tam, 12, 15 );
         System.out.printf ( "ARRAY MULTIDIMENSIONAL - PREENCHIMENTO ALEATÓRIO" );
         // /////////////////////////////////////////////////////////////
         // Este bloco limpa o array
         for ( i = 0; i < tam; i++ ) {
              for ( j = 0; j < tam; j++ ) {
                   vet [ i ] [ j ] = ' ';
              }
         }
         // /////////////////////////////////////////////////////////////
         for ( a = 0; a < 9; a++ ) {
              jht.poscolor ( 20, 5, 9, 15 );
              System.out.printf ( "Escolha a " );
              jht.textcolor ( 12 );
              System.out.printf ( "%d°", a + 1 );
              jht.textcolor ( 9 );
              System.out.printf ( " posição : " );
              jht.textcolor ( 12 );
              Scanner sc = new Scanner ( System.in );
              String c = sc.next ( );
              // /////////////////////////////////////////////////////////////
              // temos abaixo uma conversão de String para char
              // dentro dos parâmetros da função Aleatorios
              if ( Aleatorios ( c.charAt ( 0 ) ) == 0 || ( c.charAt ( 0 ) ) > '2' ) {
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   a = a - 1;
                   jht.Apaga ( 5, 6, 42, 45, 15 );
                   continue;
              }
              // /////////////////////////////////////////////////////////////
              jht.Apaga ( 5, 6, 42, 45, 15 );
              jht.poscolor ( 43, 5, 12, 15 );
              String c_c = sc.next ( );
              // /////////////////////////////////////////////////////////////
              // temos abaixo uma conversão de String para char
              // dentro dos parâmetros da função Aleatorios
              if ( Aleatorios ( c_c.charAt ( 0 ) ) == 0
                        || ( c_c.charAt ( 0 ) ) > '2' ) {
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   a = a - 1;
                   jht.Apaga ( 5, 6, 42, 45, 15 );
                   continue;
              }
              // Conversão de String para inteiro
              i = Integer.parseInt ( c );
              j = Integer.parseInt ( c_c );
              // /////////////////////////////////////////////////////////////
              if ( vet [ i ] [ j ] != ' ' ) {
                   // Este bloco verifica se uma posição já foi preenchida
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   jht.Apaga ( 5, 6, 42, 45, 15 );
                   jht.poscolor ( 43, 5, 9, 15 );
                   a = a - 1;
                   continue;
              }
              // /////////////////////////////////////////////////////////////
              jht.Apaga ( 5, 6, 42, 45, 15 );
              do {
                   jht.Apaga ( 5, 6, 42, 45, 15 );
                   // /////////////////////////////////////////////////////////////
                   jht.poscolor ( 20, 7, 9, 15 );
                   System.out.printf ( "Escolha um número : " );
                   jht.textcolor ( 12 );
                   String st = sc.next ( );
                   // /////////////////////////////////////////////////////////////
                   // temos abaixo uma conversão de String para char
                   // dentro dos parâmetros da função Aleatorios
                   if ( Aleatorios ( st.charAt ( 0 ) ) == 0 ) {
                        Toolkit.getDefaultToolkit ( ).beep ( );
                        continue;
                   }
                   // O array recebe uma cópia de cada elemento
                   // Convertendo de String para inteiro
                   vet [ i ] [ j ] = Integer.parseInt ( st );
                   // /////////////////////////////////////////////////////////////
                   jht.textcolor ( 9 );
                   for ( i = 0; i < tam; i++ ) {
                        if ( i == 0 )
                            jht.poscolor ( 33, 11, 9, 15 );
                        if ( i == 1 )
                            jht.poscolor ( 33, 14, 9, 15 );
                        if ( i == 2 )
                            jht.poscolor ( 33, 17, 9, 15 );
                        for ( j = 0; j < tam; j++ ) {
                            // só imprime os números e não 32
                            if ( vet [ i ] [ j ] != ' ' )
                                 System.out.printf ( vet [ i ] [ j ] + "   " );
                        }
                   }
                   jht.Apaga ( 7, 8, 19, 44, 15 );
                   jht.Apaga ( 5, 6, 42, 45, 15 );
                   break;
              } while ( true );
              if ( a == 9 )
                   break;
              continue;
         }
         // /////////////////////////////////////////////////////////////
         jht.getche ( );
         Inform ( );
     }

}


Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.