Anúncio

Collapse
No announcement yet.

Vectores||help [java]

Collapse

Ads nos topicos Mobile

Collapse

Ads Nos topicos Desktop

Collapse
X
Collapse
Primeira Anterior Próxima Última
 
  • Filtrar
  • Tempo
  • Show
Clear All
new posts

    Vectores||help [java]

    public static void main(String[] args) {
    String [] dados=new String[10];
    for(int i=0;i<10;i++){
    System.out.println("introduza os dados");
    dados[i]=Keyboard.readString();
    }
    for (int i=0;i<10;i++){
    System.out.print(dados[i]+" ");

    Como faço para imprimir esse vector por ordem inversa??

    EDIT: ja consegui
    Editado pela última vez por Lourenco; 20 July 2008, 18:16.

    #2
    Originalmente Colocado por lourenco Ver Post
    public static void main(String[] args) {
    String [] dados=new String[10];
    for(int i=0;i<10;i++){
    System.out.println("introduza os dados");
    dados[i]=Keyboard.readString();
    }
    for (int i=0;i<10;i++){
    System.out.print(dados[i]+" ");

    Como faço para imprimir esse vector por ordem inversa??

    EDIT: ja consegui
    for (int i=10;i<0;i--)

    or something like that.

    Comentário


      #3
      yap, e isso mesmo, tinha.me eskecido de substituir i++ por i--

      thnk

      Comentário


        #4
        Originalmente Colocado por freefall2900 Ver Post
        for (int i=10;i<0;i--)

        or something like that.
        julgo que deves quer eh algo tipo
        Código:
        for (int i=9;i>=0;i--)

        Comentário


          #5
          Originalmente Colocado por chambas Ver Post
          julgo que deves quer eh algo tipo
          Código:
          for (int i=9;i>=0;i--)
          Exacto.

          lourenco, o teu ciclo for vai de 0 a 9 (e não a 10).

          O inverso deve começar em 9 e terminar em 0.

          Comentário


            #6
            entao mas tipo, se for para correr o ciclo normalmente vai de 0 até 10, pk é k ao contrario vai so de 9 até 0????

            Comentário


              #7
              Boas
              Se tens um array de 10 elementos, vais ter uma gama de indexação de 0-9, incluindo o 0, o que perfaz os 10 elementos.
              Quando fazes o ciclo ao do ultimo para o primeiro elemento tens que ir ao ultimo index, o 9, e ir decrementando até à primeira posição do array, a posição 0 e não 1. Penso que a tua confusão esteja aqui.

              @braços

              EDIT: Tu no for(i = 0;i<10;++i) vais testar a gama de posições que falo 0-9, não testas a posição 10 porque para essa a condição i<10 já falha, o que seria idêntico a teres i<=9.
              Editado pela última vez por loucaojr; 14 July 2008, 08:52.

              Comentário


                #8
                Só uma nota:

                Isto é JAVA:

                public static void main(String[] args) {
                String [] dados=new String[10];
                for(int i=0;i<10;i++){
                System.out.println("introduza os dados");
                dados[i]=Keyboard.readString();
                }
                for (int i=0;i<10;i++){
                System.out.print(dados[i]+" ");
                }
                E isto é Groovy, ou seja, Java sem as tretas, fica bem mais simples assim:

                main(args) {
                def dados = new String[10]
                dados.eachWithIndex{dado, i ->
                println "Introduza os dados"
                dados[i] =
                System.in.readLines()
                }

                dados.reverse().each{it -> println it+" "}

                Groovy rula! E podia resumir o main só em 2, 3 linhas...

                Comentário


                  #9
                  Ok, primeira parte: ciclo for

                  for (int i = 0; i < 10; i++)
                  {
                  dysplay i;
                  }

                  Aqui inicializas a variável. Neste caso vais atribuir ao inteiro "i" o valor 0.

                  Aqui fica a condição de saída. Neste exemplo, enquanto "i" for menor que 10 (não confundas com menor ou igual: i<= 10) o ciclo continua. Quando chegar a 10, termina e sai deste loop.

                  Aqui colocas o que é feito no final de cada iteração. Neste exemplo vais incrementar 1 unidade à variável "i". Isto é a mesma coisa que teres i = i + 1.

                  Se executares este ciclo vais ter o seguinte output:
                  0
                  1
                  2
                  3
                  4
                  5
                  6
                  7
                  8
                  9



                  Segunda parte: arrays

                  A primeira posição do array tem o índice 0 e não 1.

                  Por exemplo, se na tua aplicação o utilizador inserisse os chars "h i p m p m q ç l z" ias ficar com o array preenchido da seguinte maneira (os números em baixo correspondem ao índice do char acima deles):


                  Com o teu ciclo for inicial, vais começar preencher um array (de tamanho 10) desde o índice 0 até ao índice 9 (i < 10). E como é fácil de ver, se o quiseres ler em ordem inversa é no índice 9 que deves começar.

                  Comentário


                    #10
                    Não podes usar o java 1.5 e o foreach?

                    De qualquer forma, uma maneira mais profissional de fazeres o ciclo é:

                    for(i=dados.lenght(); i>=0; i--){
                    //Fazer cenas
                    }

                    Comentário


                      #11
                      Originalmente Colocado por Grolubao Ver Post
                      Não podes usar o java 1.5 e o foreach?

                      De qualquer forma, uma maneira mais profissional de fazeres o ciclo é:

                      for(i=dados.lenght(); i>=0; i--){
                      //Fazer cenas
                      }
                      é dados.lenght pois não é um método

                      Comentário


                        #12
                        Originalmente Colocado por Grolubao Ver Post
                        Não podes usar o java 1.5 e o foreach?

                        De qualquer forma, uma maneira mais profissional de fazeres o ciclo é:

                        for(i=dados.lenght(); i>=0; i--){
                        //Fazer cenas
                        }
                        Mas mesmo que fosse terias o problema do comprimento (total), imagina no exemplo em cima terias de ter em atenção a terminação do ciclo e a posicao da leitura do mesmo.
                        Código:
                        for(i=dados.lenght(); i>0; i--){ //dados.length caso existisse iria dar 10 mas tu queres é a posição 9 e acabar na 0 portanto quando o i=1
                        System.out.print(dados[i-1]+" ");
                        }
                        else...
                        Código:
                        for(i=dados.lenght()-1; i>=0; i--){
                         System.out.print(dados[i]+" ");
                         }

                        Comentário


                          #13
                          Experimentem ruby

                          Comentário


                            #14
                            Originalmente Colocado por chambas Ver Post
                            Mas mesmo que fosse terias o problema do comprimento (total), imagina no exemplo em cima terias de ter em atenção a terminação do ciclo e a posicao da leitura do mesmo.
                            Código:
                            for(i=dados.lenght(); i>0; i--){ //dados.length caso existisse iria dar 10 mas tu queres é a posição 9 e acabar na 0 portanto quando o i=1
                            System.out.print(dados[i-1]+" ");
                            }
                            else...
                            Código:
                            for(i=dados.lenght()-1; i>=0; i--){
                             System.out.print(dados[i]+" ");
                             }
                            Gosto mais da abordagem:
                            for (int x = dados.length - 1; x >= 0; x--)
                            {
                            System.out.print(dados[x] + " ");
                            }

                            e assim funciona para qualquer vector independentemente do número de posições.

                            Comentário


                              #15
                              Originalmente Colocado por LCPI Ver Post
                              Gosto mais da abordagem:
                              for (int x = dados.length - 1; x >= 0; x--)
                              {
                              System.out.print(dados[x] + " ");
                              }

                              e assim funciona para qualquer vector independentemente do número de posições.
                              É o que dá escrever com pressa :D

                              Exactamente, para mim essa é a melhor abordagem.

                              Comentário


                                #16
                                obrigado pessoal
                                outra dúvida,estou a fazer um método para somar as duas primeiras linhas de uma matriz, mas o que me está a dar e tipo,imaginem a matriz:
                                2 2
                                2 2

                                o que me dá é :
                                4 4
                                4 4

                                [B] static void multiplicarMatriz(int [][]matriz,int a, int b){
                                for(int j=0;j<b;j++){
                                System.out.print(matriz [0][b]+matriz[1]);
                                }
                                }

                                Comentário


                                  #17
                                  Não sei se percebi.

                                  tu tens um método que recebe 3 parâmetros, a matriz, o a e o b. Para que é que queres o a e o b? é para somar da linha a, até a linha b?

                                  Para somar só as duas primeiras linhas é qualquer coisa deste género:

                                  public static void multiplicarMatriz(int [][]matriz){

                                  //for para correr as colunas e somar linhas diferentes com a mesma coluna
                                  for(int i=0; i<matriz[0].length; i++){
                                  matriz[0][i] = matriz[0][i] + matriz[1][i];
                                  matriz[1][i] = matriz[0][i];
                                  }
                                  }
                                  mas parece-me que queres algo mais complicado ali com os parâmetros a e b...

                                  Comentário


                                    #18
                                    aquilo é um método que recebe a matriz , e dpois o número de linhas e colunas, daí o A e o B
                                    eu prendo obter:
                                    "Caso o utilizador seleccione a opção C, deve devolver a soma dos
                                    elementos das duas primeiras linhas da matriz;"
                                    Editado pela última vez por Lourenco; 14 July 2008, 21:51.

                                    Comentário


                                      #19
                                      Originalmente Colocado por lourenco Ver Post
                                      aquilo é um método que recebe a matriz , e dpois o número de linhas e colunas, daí o A e o B
                                      eu prendo obter:
                                      "Caso o utilizador seleccione a opção C, deve devolver a soma dos
                                      elementos das duas primeiras linhas da matriz;"
                                      Se queres somar x linhas y linhas é fácil.
                                      Podes fazer com três for's, um para percorrer as linhas, outro para as colunas e outro para fazer o somatório. Ou então numa método recursivo.. mas não me parece que seja isso que queiras....

                                      Pensa um bocado, se precisares de ajuda diz .

                                      Se é só as duas primeiras linhas o código que pus em cima faz isso
                                      Editado pela última vez por Mysterious; 14 July 2008, 22:04.

                                      Comentário


                                        #20
                                        mandei.te uma pm

                                        Comentário


                                          #21
                                          Boas
                                          Outro algoritmo para a soma de linhas de uma matriz, este em c#

                                          int total = 0;
                                          for
                                          (int i = 0; i < a; ++i)//a = numero de linhas, deverá ser testado por forma a não exceder a dim do array
                                          {
                                          for (int j = 0; j < b; ++j)//b = numero de colunas, idem ""
                                          {
                                          total += matriz[i][j];
                                          }
                                          }
                                          Console.WriteLine("Total --> {0}", total.ToString());// console.writeline faz o mesmo que o system.out.print do java
                                          @braços

                                          Edit: especificando um a e um b podes calcular apenas a soma de uma sub-matriz.
                                          Editado pela última vez por loucaojr; 14 July 2008, 23:03.

                                          Comentário


                                            #22
                                            tenho dois vectores de 10 números A e B,quero fazer isto :
                                            calcular S=(A[1]*B[10]+A[2]*B[9]

                                            como faço isto??

                                            Comentário


                                              #23
                                              Originalmente Colocado por lourenco Ver Post
                                              tenho dois vectores de 10 números A e B,quero fazer isto :
                                              calcular S=(A[1]*B[10]+A[2]*B[9]

                                              como faço isto??
                                              Mas agora vens para aqui pedir que te façam todos os tpcs?

                                              Acho de muito mau tom que, com tanta explicação escarrapachada sobre o funcionamento de vectores, ainda tenhas a lata de pedir que te façam as coisas por ti.

                                              Comentário


                                                #24
                                                o que? caro amigo, ja tou de ferias portanto nao tenho tpc's
                                                pa próxima pensa bem antes de falares,se não queres ajudar nao ajudes
                                                Editado pela última vez por Lourenco; 20 July 2008, 19:36.

                                                Comentário


                                                  #25
                                                  mov r7, #10
                                                  introducao: call inputnumber ;vai-me buscar o numero ao teclado, transforma o numero de ascii para bcd, de bcd para um valor no byte... repete enquanto não carregar no enter...
                                                  push A
                                                  djnz r7, introducao

                                                  mov r7, #10
                                                  imprimir: pop A
                                                  call outputnumber
                                                  djnz r7, imprimir

                                                  fim: jmp fim

                                                  e o kilhões de código que ainda falta daqui....

                                                  O SO que trate disso

                                                  Saudades dos 8051... LOL!
                                                  Editado pela última vez por Vibri; 21 July 2008, 06:10.

                                                  Comentário


                                                    #26
                                                    Bom acho que podiam ter ajudado o rapaz...

                                                    Originalmente Colocado por lourenco Ver Post
                                                    tenho dois vectores de 10 números A e B,quero fazer isto :
                                                    calcular S=(A[1]*B[10]+A[2]*B[9]

                                                    como faço isto??
                                                    Só tens de colocar a ")" no sitio onde queres terminar a prioridade e em vez do 10 utilizares o 9 (os vectores por norma são numerados de 0 a x, como dizes que tens 10 números é de 0...9).

                                                    Comentário


                                                      #27
                                                      lourenco se percebeste os exercícios anteriores devias fazer bem este dos vectores. É só usares um for a percorrer o vector de frente para trás e multiplicar e somar.

                                                      Documentação : http://java.sun.com/j2se/1.5.0/docs/api/

                                                      Comentário


                                                        #28
                                                        eu tava a tentar fazer era, por um a andar para a frente e o outro ao contrario ao mesmo tempo, mas dava mal, depois fiz assim

                                                        for(int i=0;i<linhas;i++){
                                                        S=S+(A[i]*B[(linhas-1)-i]);
                                                        }

                                                        obrigado por ajudarem : )

                                                        Comentário


                                                          #29
                                                          Originalmente Colocado por lourenco Ver Post
                                                          eu tava a tentar fazer era, por um a andar para a frente e o outro ao contrario ao mesmo tempo, mas dava mal, depois fiz assim

                                                          for(int i=0;i<linhas;i++){
                                                          S=S+(A[i]*B[(linhas-1)-i]);
                                                          }

                                                          obrigado por ajudarem : )
                                                          Código:
                                                          for(int i=0,--linhas;i<linhas;i++){
                                                                      S=S+(A[i]*B[linhas-i]);
                                                                  }
                                                          Assim "poupas" uns ciclos.

                                                          Comentário


                                                            #30
                                                            Uma Ajuda Sff

                                                            char [][] tabuleiro = {

                                                            {
                                                            '*', '2', '2', '*', '1', '0', '0', '1', '*'},
                                                            {'2', '*', '3', '-', '0', '0', '1', '2', '-'},
                                                            {'0', '2', '*', '-', '1', '0', '1', '*', '-'},
                                                            {'0', '1', '-', '*', '2', '0', '1', '-', '-'},
                                                            {'1', '1', '-', '-', '*', '1', '1', '-', '-'},
                                                            {'*', '-', '-', '-', '-', '*', '-', '-', '-'},
                                                            {'-', '-', '-', '-', '-', '-', '*', '-', '-'},
                                                            {'-', '-', '-', '1', '1', '-', '-', '*', '-'},
                                                            {'-', '-', '-', '1', '*', '-', '-', '-', '*'}
                                                            };


                                                            Como faço pra fazer uma cópia desta variavel, para outra variavel char

                                                            Comentário

                                                            AD fim dos posts Desktop

                                                            Collapse

                                                            Ad Fim dos Posts Mobile

                                                            Collapse
                                                            Working...
                                                            X