Soma de sequência

5 respostas
java
V

Olá galera, tô com uma dúvida em um programa que lê dois inteiros: X e Z (Z deve ser lido tantas vezes quantas forem necessárias, até que um número maior do que X é lido). Contar quantos números inteiros devem ser somados em sequência (a partir de e incluindo a X), de modo que a soma excede Z o mínimo possível e escrever este número. A entrada pode ter, por exemplo, os números 21, 21, 15, 30. Neste caso, o número 21, é assumido para o X, Os números 21 e 15 devem ser ignorados, porque eles são menores ou iguais a X. O número 30 está dentro da especificação (superior a X) e é válido. Assim, o resultado final deve ser de 2 para este caso de teste, porque a soma (21 + 22) é maior do que 30.

Eu desenvolvi o código e consigo encontrar o z só não tô conseguindo contar quantos números devem ser somados em sequência.

import java.util.Scanner;
public class exe02 {

public static void main(String[] args) {
	Scanner entrada = new Scanner(System.in);

	int x,numero2 = 0,z;

	z = -9999;

	x = entrada.nextInt();
	while (x>=z){
	z= entrada.nextInt();
	
	if (z>x)
	{
	numero2=z;
	}
	else
	{
	
	}
	}
	// impressão do z

	System.out.println(numero2);

}

}

5 Respostas

E

opa blz v7136:
Cara não ficou claro seu enunciado na parte “…este caso de teste, porque a soma (21 + 22) é maior do que 30…” ( de onde saiu este 22:???) e não sei que tipo de objetos e operações você pode e sabe usar neste exercício,mas elaborei um trecho de código rápido em cima do que entendi. é isso?

import java.util.ArrayList; import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    // COLOQUE MENSAGENS PRA VOCE ENTENDER E VISUALIZAR O QUE SEU CODIGO FAZ

    Scanner ler = new Scanner(System.in);

    System.out.printf("Informe um Número Inteiro para \"X\": ");
    // aqui leio o x fora do loop , pois é um valor fixo

    // crio as variaveis
    int x = ler.nextInt();
    int z;

    // crio uma lista onde vou armazenar os valores de "Z"
    ArrayList<Integer> lista_de_z = new ArrayList<Integer>();

    // adiciono X de cara pois na soma total ele deve ser incluido
    lista_de_z.add(x);

    // aqui usei o "Do While" pois o do testa os valores depois do primeiro
    // loop.

    do {
        // mensagem para saber o que esta acontecendo
        System.out.printf("Informe um Número Inteiro para \"Z\": \n");

        // "Z" recebe o valor lido
        z = ler.nextInt();

        // comparo se "Z" é maior que "X"

        if (z > x) {
            // se z for maior coloco ele na minha lista para somar
            lista_de_z.add(z);
        }
        System.out.println("x vale:" + x);
        System.out.println("z vale:" + z);
        System.out.println("tenho " + lista_de_z + " valores para x e z na lista");
        System.out.println("Resultado esperado: " + lista_de_z.size());

    } while (x >= z);
    System.out.println("Saiu do while pois z é maior que x");
}

}

D

Olá,

Acho q vc interpretou errado o exercicio (ou seria eu)

  1. Fazer a leitura de X e Z

    x = entrada.nextInt();
    
    do {
    
    z = entrada.nextInt();
    
    } while(z <= x);
    
    System.out.println("x = "+ x + " z = " + z);
    
  2. "Contar quantos números inteiros devem ser somados em sequência"
    Para o mesmo exemplo seria
    21 + 22 + 23 + 24 + 25 + …
    Entretanto, pára no 22 pois 21 + 22 = 43, portanto o resultado é 2

Aqui é necessário um segundo loop, uma variável contador e uma soma para “contar quantos números inteiros devem ser somados em sequência” até que soma > z

int contador = 1;
int soma = x;
while (soma < z) {
    // atualiza soma
    // atualiza contador
}
System.out.println(contador);
V

Peço perdão pelo enunciado, mas o Diego entendeu a lógica.

Cara não ficou claro seu enunciado na parte “…este caso de teste, porque a soma (21 + 22) é maior do que 30…” ( de onde saiu este 22:???)

R= Tenho que ler vários números (z) até encontrar um maior que x (que é o primeiro número lido). Na sequência de números recebidos: 21 21 15 30 . O primeiro número lido é o x e vou ler os outros até encontrar um maior que x no caso seria o 30 e armazeno no z. Agora tenho que contar quantos números somados ao x (21) e incluindo-o chegaria em um número maior que z (30). Esse número tbm tem que ser o mais próximo possível de 30. Os números em sequência seriam o x (21) + o próximo número inteiro depois de x (22) = 43 (maior que z (30) ). Só que eu quero saber quantos números foram somados para chegar em 43. O que seria 2 números. Entendeu? Qualquer dúvida me fala.

D

É o contador

// atualiza soma
soma = soma + x + contador;

// atualiza contador
contador = contador + 1;
V

Perfeito cara, muito obrigado! Valeu! boa tarde pra vcs!

Criado 4 de abril de 2016
Ultima resposta 4 de abr. de 2016
Respostas 5
Participantes 3