Ir ao conteúdo
  • Cadastre-se

Java Um problema no codechef


Posts recomendados

import java.util.Scanner;

public class Main10 {
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int t = scan.nextInt();
		int min;
		
		while(t-- !=0) {
			int n = scan.nextInt();
			int[] r = new int[n];
			min = 10000;
			
			for(int i=0; i<r.length; i++) {
				r[i] = scan.nextInt();
			}
			
			for(int i=0; i<r.length; i++) {
				while(r[i]%min != 0) {
					min--;
				}
			}
			for(int i =0; i<n; i++) {
				r[i]= r[i]/min;
			}
		
			for(int i =0; i<n; i++) {
				System.out.print(r[i]+" ");
			}
		}
	}
}

Qual o problema desse código pra esse problema? Agradeço desde já o/

https://www.codechef.com/problems/RECIPE

Link para o comentário
Compartilhar em outros sites

Você não falou para quê serve esse programa, ou qual o erro que você encontrou nele.

Comentei o código todo, e acredito que o problema que você encontrou esteja na linha 21.

É sempre bom comentar o código e imprimir textos informando para o usuário o que diabos está acontecendo.

import java.util.Scanner;

public class Main10 {
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("Quantas vezes o programa deve repetir?");
		int t = scan.nextInt();// O valor de t define quantas vezes o loop continuará
		int min;
		
		while(t-- !=0) {
			
			//System.out.println("Quantos inteiros irão ser digitados?");
			//int n = scan.nextInt() - 1; //Essa é uma maneira de pedir essa informação para o usuário 
			System.out.println("Qual o comprimento do vetor?");
			int n = scan.nextInt();// O valor de n define quantos arrays o vetor r terá
			int[] r = new int[n];
			min = 10000;
			
			//Aqui o usuário insere o valor de cada array
			for(int i=0; i<r.length; i++) { // Dessa maneira o último array fica vazio, o certo seria 
				System.out.println("Digite um inteiro: ");//for(int i=0; i<=r.length; i++) 
				r[i] = scan.nextInt();
				
			}
			
			for(int i=0; i<r.length; i++) {// min é reduzido para um valor menor/igual que r[i]
				while(r[i]%min != 0) {
					min--;
				}
			}
			
			for(int i =0; i<n; i++) {// O valor de cada array é divido por min
				r[i]= r[i]/min;
				System.out.printf("O valor da posição %d foi alterado \n", i);
			}
		
			for(int i =0; i<n; i++) {//Aqui ele exibe o novo valor de cada array
				System.out.print(r[i]+" ");
			}
		}
	}
}

Qualquer coisa não hesite em perguntar.

Link para o comentário
Compartilhar em outros sites

6 horas atrás, Joanderson Pereira disse:

// Dessa maneira o último array fica vazio, o certo seria

Discordo. Essa é maneira certa para percorrer todos os índices de um vetor:

for (int i = 0; i < r.length; i++)

Se o tamanho do vetor é 3, com o for acima serão percorridos os índices 0, 1, e 2

Veja nesse pequeno exemplo:

double notas[] = { 7.5, 8.1, 9.3, 7.8 };
double soma = 0;

for (int i = 0; i < notas.length; i++) {

    System.out.printf("Nota %d: %.2f\n", (i + 1), notas[i]);

    soma += notas[i];
}

double media = soma / notas.length;

System.out.printf("Média: %.2f", media);

Já quanto a esse comentário:

6 horas atrás, Joanderson Pereira disse:

informando para o usuário o que diabos está acontecendo

Bastante original kkkkkk

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...