1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvida em Java

Discussão em 'Programação' iniciada por sky312, 5 de Fevereiro de 2009. (Respostas: 10; Visualizações: 760)

  1. sky312

    sky312 Power Member

    boas, eu tenho uma duvida neste exercicio,"Calcule a soma de todos os números de 1 até um valor inserido pelo o utilizador"
    Código:
    int i, n, soma=0, count=1;
            System.out.println("Introduza um valor inteiro para o limite:");
            n=Keyboard.readInt();
            
            do{
            i=(int)(Math.random()*n);
            System.out.println(+i);
            soma=soma+i;
            count++;
            }while(count<=n);
            System.out.println("Soma="+soma);
    
    Este é um exemplo de uma maneira mas com um resultado aleotorio, ñ fui eu que escrevi, eu queria saber como é que faco por exemplo definir o limite em 4, logo a soma seria 1+2+3+4=10
     
    Última edição: 5 de Fevereiro de 2009
  2. guilherme

    guilherme Power Member

    Lógico que é aleatório então se tens ali um random no i.
    Não percebi porque tens ali um random e depois perguntas porque razão está a dar valores aleatórios, não foste tu que escreveste o código certo?
    Assim sem muita coisa eu faria um ciclo for de 1 até n e depois ia somando o i à soma, só isso.
    Com o while também dá, com a diferença que tens de incrementar o i manualmente (ou count no teu caso).
     
  3. Algo como:

    int resultado = 0;

    for(int i = 0; i<= numPretendido; i++)
    resultado = resultado + i;

    return resultado;
     
  4. sky312

    sky312 Power Member

    boas, eu ñ consigo fazer com um ciclo for continua a aparecer apenas o valor que eu digito, sera que alguem pode dizer como é o codigo? obg
     
  5. nasic

    nasic Power Member

    Qual é o problema que tens? Posta aqui o teu código.

    Código:
    int soma = 0;
    for (int i = valor; i > 0; i--) {
    soma = soma + i;
    }
    System.out.println("Resultado: " + soma);
    Ou então como disse o cdgoncalves.
     
  6. E não consegues porquê?
    A "complicação" desse exercício, passa pelo for, just it.
    Depois é só fazer um system.out.println a pedir o número, ler, e depois no fim, imprimir o resultado.

    Coloca o código e ajudamos-te nas dúvidas.
     
  7. sky312

    sky312 Power Member

    Código:
    int soma = 0;
    for (int i = valor; i > 0; i--) {
    soma = soma + i;
    }
    System.out.println("Resultado: " + soma);
    obg pelo o codigo , eu ñ estva a conseguir criar um codigo que permitisse somar tudo, ou seja eu punha o valor 4, o que o meu programa fazia era so 3+4, so conseguia fazer a soma do numero anterior ao que digitava, a questao era mesmo eu ñ conseguir escrever bem o programa pk estava na duvida do que por na condicao do for(), ja agora podem.me explicar como é que este codigo funciona(o codigo permite fazer o factorial de um número)? ñ estou a conseguir analisar o codigo :x
    Código:
    int x,fact=1;
            System.out.println("Insira um número:");
                x=Keyboard.readInt();
            
            do{
                --x;
                fact=fact*(1+x);
                
            }
            while(x>0);
            System.out.println(fact);
     
  8. rj.rodrigues

    rj.rodrigues Power Member

    Ora bem isso faz o factorial de x

    Como deves saber o factorial de um número natural n é o produto de todos os inteiros positivos menores ou iguais a n.

    O programa percorre todos os numeros multiplicando-os pelo resultado anterior. Importante: a variavel fact tem que ser inicializada a 1 poeque caso fosse 0 o resultado seria 0, já que 0 "vezes" qualquer numero é 0.

    Exemplo:
    para x = 5
    ele faz

    (x=5 -> x=4): fact = fact * 5 -> fact = 1*5 -> fact = 5
    (x=4 -> x=3): fact = fact * 4 -> fact = 5*4 -> fact = 20
    (x=3 -> x=2): fact = fact * 3 -> fact = 20*3 -> fact = 60
    (x=2 -> x=1): fact = fact * 2 -> fact = 60*2 -> fact = 120
    (x=1 -> x=0): fact = fact * 1 -> fact = 360*1 -> fact = 120
    sai fora do ciclo.

    Esse codigo ficava mais correcto assim:
    Código:
    int x,fact=1;
            System.out.println("Insira um número:");
            x=Keyboard.readInt();
            
            do{
                fact=fact*(x);
                x--;            
            }
            while(x>1);
            System.out.println(fact);
     
    Última edição: 7 de Fevereiro de 2009
  9. sky312

    sky312 Power Member

    Obrigado pela a explicação agora ja entendi perfeitamente o que faz muito obrigado mais uma vez rj123 :D.Cumps
     
    Última edição: 7 de Fevereiro de 2009
  10. sky312

    sky312 Power Member

    Boas pessoal, tenho mais uma duvida(como é habitual xD), eu quero construir um vector com nomes, e quero mostrar o nome com maior comprimento ao utilizador, so que ñ sei como é que faco isso aqui tem o codigo
    Código:
    int q;
            
            System.out.println("Quantos nomes quer inserir?");
            q=Keyboard.readInt();
            
            String[] nomes = new String[q];
            
            for(int i=0;i<q;i++){
                System.out.println("O "+(i+1)+"º nome é:");
                nomes[i]=Keyboard.readString();
            }
            System.out.print("\nOs nomes são: ");
            for(int i=0;i<q;i++){
                System.out.print("\n"+nomes[i]);
            }
            System.out.println("\nOs comprimentos dos nomes são:");
            for(int i=0;i<q;i++){
                if(nomes[i].length()>nomes[i].length())
                    System.out.println("\n"+nomes[i].length());
            
            
            }
    este if é uma tentativa frustada de tentar selecionar o maior mas ñ funciona
     
  11. nasic

    nasic Power Member

    Estás a fazer comparações com os mesmos valores.

    Código:
    public String nomeMaior (String[] array) {
            String nome = "";
            for (int i = 0; i < array.length; i++) {
                if (nome.length() < array[i].length())
                    nome = array[i];
            }
            return nome;
        }
    
    Esta função calcula o nome com maior comprimento dado o array
     

Partilhar esta Página