Imprimir a soma de 1 até 1000 [RESOLVIDO]

[quote=rafaelaalves]Vixii, acho que vou ser péssima.
Tive um raciocinio quase parecido com o ultimo, mas nem lembrei da pg!
Aff Odeio matématica!
Estou perdida sem saber como pensar :S :cry:[/quote]

Nao se preocupe, se vc não é tão boa em matematica, visto q, o importante é conhecer um pouco de tudo, lógica matemática q o caso, mas tb, logica computacional e logica de negocio… Programação muito pelo ao contrário não é só matemática como muitos “iniciantes” pensam.

[quote=Guts00][b][color=green]Bom dia pessoal.

Putz, tentei os códigos por aqui e no meu pc tb aparece 500500.
tentei usar o laço for : for (int x = 1; x <=1000; x++) e tb nao rolou, será q é problema do meu NotePad++ ou algum vacilo no código?
Estou com a apostila da Caelum e estudando sozinho, algum help?
Vlw[/color][/b][/quote]

Por favor, poste seu código inteiro… O processo não está acontecendo apenas nesta linha de código.

O código esta igual de um colega aqui do tópico

public class Exercicio22 {

public static void main (String [] args) {

                   int min = 1;
		int max =1000;
		int soma = (min+max) * ((max-min+1) /2);
		System.out.println(soma);
	}

}
esse código apenas aparece 500500

estou usando esse código

public class Exercicio22 {

public static void main (String [] args) {
		
		
		int resultado = 0;
		int ultimoValor;
		for (int x = 0; x <= 1000; x++) {
			ultimoValor = resultado;
			resultado += x;
			System.out.printf("%d = %d + %d\n", resultado, ultimoValor, x);
		}
       }

}

e aparece assim

246753 = 247456 + 703
247456 = 248160 + 704
e por aí em diante, mas nao começa do 0

Esse esta rolando certo até as contas, porem esta tudo embolado

[quote=Guts00]O código esta igual de um colega aqui do tópico

[code]
public class Exercicio22 {

public static void main (String [] args) {

                   int min = 1;
		int max =1000;
		int soma = (min+max) * ((max-min+1) /2);
		System.out.println(soma);
	}

}
/code]
esse código apenas aparece 500500
[/quote]

A soma de 1 até N é igual a N(N+1)/2 ( com N > 1)

A soma de 1 a 100 é 100101/2 = 5050.
A soma de 1 a 1000 é 1000
1001/2 = 500500

Se aparece 500500 está certo, porque vc está somando até mil

[quote=sergiotaborda][quote=Guts00]O código esta igual de um colega aqui do tópico

[code]
public class Exercicio22 {

public static void main (String [] args) {

                   int min = 1;
		int max =1000;
		int soma = (min+max) * ((max-min+1) /2);
		System.out.println(soma);
	}

}
/code]
esse código apenas aparece 500500
[/quote]

A soma de 1 até N é igual a N(N+1)/2 ( com N > 1)

A soma de 1 a 100 é 100101/2 = 5050.
A soma de 1 a 1000 é 1000
1001/2 = 500500

Se aparece 500500 está certo, porque vc está somando até mil[/quote]

Sérgio, é que eu não entendi bem o enunciado do exercicio da apostila, que diz: Imprima a soma de 1 até 1000

Usando a PA, é possível linha após linha imprimir a soma e o resultado?
tipo
1+1 = 2
1+2 = 3
1+3 = 4

Eu tentei por aqui e nao consegui, em vista que sou bem iniciante, p mim é algo um pouco complicado.
Obrigado

[quote=Guts00][quote=sergiotaborda][quote=Guts00]O código esta igual de um colega aqui do tópico

[code]
public class Exercicio22 {

public static void main (String [] args) {

                   int min = 1;
		int max =1000;
		int soma = (min+max) * ((max-min+1) /2);
		System.out.println(soma);
	}

}
/code]
esse código apenas aparece 500500
[/quote]

A soma de 1 até N é igual a N(N+1)/2 ( com N > 1)

A soma de 1 a 100 é 100101/2 = 5050.
A soma de 1 a 1000 é 1000
1001/2 = 500500

Se aparece 500500 está certo, porque vc está somando até mil[/quote]

Sérgio, é que eu não entendi bem o enunciado do exercicio da apostila, que diz: Imprima a soma de 1 até 1000

Usando a PA, é possível linha após linha imprimir a soma e o resultado?
tipo
1+1 = 2
1+2 = 3
1+3 = 4

Eu tentei por aqui e nao consegui, em vista que sou bem iniciante, p mim é algo um pouco complicado.
Obrigado[/quote]

O enunciado “Imprima a soma de 1 até 1000” significa “imprima o resultado de somar todos os números entre 1 e mil”.
“soma” é o nome do resultado de uma operação de adição

Pense “Imprima o quociente de 40 e 50” , vc pensaria em imprimir todos os passos da conta de dividir ? Não , né. O enunciado só lhe pede o resultado de uma conta de dividir de 40 por 50.

Se fosse necessários mostrar os passos, isso estaria escrito explicitamente , por exemplo, “Imprima todos os passos do calculo da soma de 1 a mil”

O truque é que para saber a soma não é preciso fazer um laço. Por isso, pedir que se imprima os passos, seria ridiculo. O cara simplesmente faz um conta e pronto. Tal como se fosse uma divisão ou um produto.
Claro que o programador junior vai usar um laço e 99% das respostas serão um laço. Mas sempre tem alguém que prestou atenção nas aulas de matemática e vai lembrar de usar uma formula. O que é muito bom, porque laços devem ser evitados tanto quanto possivel.

Então, sem medo, não viagemos nos enunciados que não é preciso. Se o cara que escreveu aquele enunciado espera o passo a passo, então ele não sabe se expressar em português escrito. Problema dele. Não seu.

Esse é o famoso problema que Gauss resolveu quando era criança e estudava naquelas salas onde um só professor tomava conta de um monte de crianças de séries misturadas.

Para que eles não ficassem enchendo o saco, pediu-lhes para somarem os números de 1 até 100. Isso iria ocupá-los por um bom tempo.

Só que o Gauss percebeu que 1 + 100 = 2 + 99 = 3 + 98 = … = 50 + 51, que é igual a 101, e viu que há 50 dessas somas, Portanto, o valor certo é 50 x 101 = 5050.

http://galileu.globo.com/edic/112/eureca.htm

O enunciado do problema é de 1 até 1000, mas o princípio é exatamente o mesmo.

[color=green]Vlw pessoal, pela ajuda, é que as vezes queremos resolver as coisas, pensando que o problema é algo mirabolante, mas é algo muito simples.
Obrigado. Pelo menos agora tenho uma bagagem maior p resolver essas coisas e nao sabia q sempre devemos evitar os laços.
[/color]

int soma = 0;
for(int cont = 1; cont < 1001; cont ++){
soma += cont;
}
JOptionPane.showMessageDialog(null, "Soma = " + soma);

Prezados, aprendi com meu orientador (Thiago Segato) a não entregar a resposta de bandeja, mas tenho visto que tão complicando mais ainda o problema… o problema é simples e tinha resolvido com o código abaixo:

[class SomaumAteMil {
public static void main (String args[]) {
int a = 0;
int b = 1;
for (a=1; a<=1000; a+=b) {
System.out.println("A soma imprime o seguinte: "+a);
}
}
}]
A questão toda é que o prompt do DOS só exibia do 703 pra frente devido a uma limitação do total de linhas do cmd.exe. este código foi analisado por dois analistas e ambos concordam que, dentro do que a questão 2 do Cap 3 da apostila Caelum solicita, atende perfeitamente. Espero ter ajudado. :slight_smile: [color=darkred] [/color]

[quote=jhonnys oliveira]Prezados, aprendi com meu orientador (Thiago Segato) a não entregar a resposta de bandeja, mas tenho visto que tão complicando mais ainda o problema… o problema é simples e tinha resolvido com o código abaixo:

[class SomaumAteMil {
public static void main (String args[]) {
int a = 0;
int b = 1;
for (a=1; a<=1000; a+=b) {
System.out.println("A soma imprime o seguinte: "+a);
}
}
}]
A questão toda é que o prompt do DOS só exibia do 703 pra frente devido a uma limitação do total de linhas do cmd.exe. este código foi analisado por dois analistas e ambos concordam que, dentro do que a questão 2 do Cap 3 da apostila Caelum solicita, atende perfeitamente. Espero ter ajudado. :slight_smile: [color=darkred] [/color][/quote]

Para vizualizar mais linhas é só clicar, com o botão direito, no icone do canto superior esquerdo da janela e selecionar proriedades. Em proriedades, selecione a aba layout. Em layout, do lado direito, vai aparecer a caixa tamanho do buffer de tela. Para este exercico, basta alterar a caixa altura. 1002 deve ser suficiente.
Espero ter ajudado.
VLW!

Verifiquei esta propriedade da janela DOS após meu post. Valeu pelo comentário add :thumbup:

Não tinha visto como funcionava o +=
Então fiz um teste da seguinte forma:

for (int i = 0, x = i; i <= 1000; i++) {
System.out.println(x += i);
}

Deu um resultado como eu queria.

1 curtida