Erro de compilação ? (SPOJ)

16 respostas
denisspitfire

Galera, para quem nao conhece o site SPOJ é um site com uma serie de problemas a se resolver.
A ID do problema é 840 - Cofrinhos da Vó Vitória

Texto
Vó Vitória mantém, desde o nascimento dos netos Joãozinho e Zezinho, um ritual que faz a alegria dos meninos. Ela guarda todas as moedas recebidas como troco em dois pequenos cofrinhos, um para cada neto. Quando um dos cofrinhos fica cheio, ela chama os dois netos para um alegre almoço, ao final do qual entrega aos garotos as moedas guardadas nos cofrinhos de cada um.

Ela sempre foi muito zelosa quanto à distribuição igualitária do troco arrecadado. Quando, por força do valor das moedas, ela não consegue depositar a mesma quantia nos dois cofrinhos, ela memoriza a diferença de forma a compensá-la no próximo depósito.

Tarefa
Vó Vitória está ficando velha e tem medo que deslizes de memória a façam cometer injustiças com os netos, deixando de compensar as diferenças entre os cofrinhos. Sua tarefa é ajudar Vó Vitória, escrevendo um programa de computador que indique as diferenças entre os depósitos, de forma que ela não tenha que preocupar-se em memorizá-las.

Entrada
A entrada é composta de vários conjuntos de teste. A primeira linha de um conjunto de teste contém um número inteiro N, que indica o número de depósitos nos cofrinhos. As N linhas seguintes descrevem cada uma um depósito nos cofrinhos; o depósito é indicado por dois valores inteiros J e Z, separados por um espaço em branco, representando respectivamente os valores, em centavos, depositados nos cofres de Joãozinho e Zezinho. O final da entrada é indicado por N = 0.

Saída
Para cada conjunto de teste da entrada seu programa deve produzir um conjunto de linhas na saída. A primeira linha deve conter um identificador do conjunto de teste, no formato ?Teste n?, onde n é numerado seqüencialmente a partir de 1. A seguir seu programa deve escrever uma linha para cada depósito do conjunto de testes. Cada linha deve conter um inteiro que representa a diferença (em centavos) entre o valor depositado nos cofrinhos do Joãozinho e do Zezinho. Deixe uma linha em branco ao final de cada conjunto de teste. A grafia mostrada no Exemplo de Saída, abaixo, deve ser seguida rigorosamente.

Exemplo
Entrada:
3
20 25
10 5
10 10
4
0 5
12 0
0 20
17 1
0

Saída:

Teste 1
-5
0
0

Teste 2
-5
7
-13
3

Restrições
0 <= N <= 100 (N = 0 apenas para indicar o fim da entrada)
0 <= J <= 100 (valor de cada depósito no cofre de Joãozinho)
0 <= Z <= 100 (valor de cada depósito no cofre de Zezinho)

Esta dando erro de compilação, nem de tempo é… acho estranho porque os resultados batem com a saida desejada…

import java.util.*; public class deposito { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int depositos=1,neto1=0,neto2=0,cont=0,roda=0,n=0; int vet[]=new int [100]; while((roda=depositos=scan.nextInt())!=0){ n++; cont=0; while(depositos>0){ neto1=neto1+scan.nextInt(); neto2=neto2+scan.nextInt(); vet[cont]=neto1-neto2; depositos--; cont++; } cont=neto1=neto2=0; System.out.println("Teste "+n); while(roda!=0){ System.out.println(vet[cont]); vet[cont]=0; cont++; roda--; } }System.out.println(""); } } Alguem sabe me responder???
Agradeço desde já.

16 Respostas

Loiane

Olá,

O nome da sua classe está errado.
Quando submeter qualquer problema no SPOJ ou UVA, o nome da classe dever ser Main.

Tente o seguinte código:

import java.util.*; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int depositos=1,neto1=0,neto2=0,cont=0,roda=0,n=0; int vet[]=new int [100]; while((roda=depositos=scan.nextInt())!=0){ n++; cont=0; while(depositos>0){ neto1=neto1+scan.nextInt(); neto2=neto2+scan.nextInt(); vet[cont]=neto1-neto2; depositos--; cont++; } cont=neto1=neto2=0; System.out.println("Teste "+n); while(roda!=0){ System.out.println(vet[cont]); vet[cont]=0; cont++; roda--; } }System.out.println(""); } }

lucasportela

Aqui não deu nenhum erro. Verifique se seu Build Path está com alguma referência ou biblioteca errada, se os imports estão corretos.

Loiane

Aproveitando o tópico, uma sugestão:

BufferedReader é um pouco mais rápido que Scanner nesses problemas.
Dá um pouco mais de trabalho para codificar, mas vai ser executado mais rápido, caso vc tome um TLE. :slight_smile:

JoatanGuj

Loiane:
Aproveitando o tópico, uma sugestão:

BufferedReader é um pouco mais rápido que Scanner nesses problemas.
Dá um pouco mais de trabalho para codificar, mas vai ser executado mais rápido, caso vc tome um TLE. :slight_smile:

concordo

denisspitfire

Consegui \o/

import java.util.*;
class deposito {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int depositos=1,neto1=0,neto2=0,cont=0,roda=0,n=0;
		int vet[]=new int [100];
		while((roda=depositos=scan.nextInt())!=0){
			n++;
			cont=0;
			while(depositos>0){
				neto1=neto1+scan.nextInt();
				neto2=neto2+scan.nextInt();
				vet[cont]=neto1-neto2;
				depositos--;
				cont++;
			}
			cont=neto1=neto2=0;
			System.out.println("Teste "+n);
			while(roda!=0){
				System.out.println(vet[cont]);
				vet[cont]=0;
				cont++;
				roda--;
			}
		}System.out.println("");
	}
}

Tinha um public antes do class deposito… O.o… agora uma pergunta. Qual a diferença?
Testei em um site chamado Ideone.com \o/, Bom… foi aceito e ja era… bora pro próximo. Mas fiquei pensando nisso…

denisspitfire

Alguem pode me dar um exemplo com buffer?

JoatanGuj

denisspitfire:
Consegui \o/

import java.util.*;
class deposito {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int depositos=1,neto1=0,neto2=0,cont=0,roda=0,n=0;
		int vet[]=new int [100];
		while((roda=depositos=scan.nextInt())!=0){
			n++;
			cont=0;
			while(depositos>0){
				neto1=neto1+scan.nextInt();
				neto2=neto2+scan.nextInt();
				vet[cont]=neto1-neto2;
				depositos--;
				cont++;
			}
			cont=neto1=neto2=0;
			System.out.println("Teste "+n);
			while(roda!=0){
				System.out.println(vet[cont]);
				vet[cont]=0;
				cont++;
				roda--;
			}
		}System.out.println("");
	}
}

Tinha um public antes do class deposito… O.o… agora uma pergunta. Qual a diferença?
Testei em um site chamado Ideone.com \o/, Bom… foi aceito e ja era… bora pro próximo. Mas fiquei pensando nisso…

a unica coisa que muda é que sua classe agora não é publica para outras classes, LOL aki o codigo rodou normal com public ou sem LOL muito estranho , vou visitar esse SPOJ os problemas são bem legais ^^

denisspitfire

cara é viciante… depois desse ja resolvi mais 1 rs…
o 8697 agora estou tentando o 8701. O problema é essas frescurites… que eu nao consigo entender porque raios… nao funciona, mas blz…

denisspitfire

Só para acrescentar… (como se quando resolvemos algum problema com programação seu chefe vai la ver se o seu código tah bonitinho… kkkk) só se der pau ai sim voce vai lembrar daquele código… e seu chefe também!

JoatanGuj

resolvi o confrinho da vovo com inputstream xD
5.54 o tempo lol

denisspitfire

vamos trocar os códigos? rs manda esse código pra mim, voce sabe resolver com buffered?

JoatanGuj

acho que sim , mano tem uns problema muito foda LOLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
viciei XD
com buffered seria muito mais rapido ^^. depois vou tentar com ele. to procurando uns de C tbm ^^

denisspitfire

piro neh? acabaram de me chamar de loco aqui porque eu to falando sozinho ¬¬

JoatanGuj

uehueheh >_>

Loiane

Listei alguns problemas do UVA - bem parecido com o SPOJ no meu blog. Pra quem tá começando a resolver esses problemas e tiver curiosidade:
http://www.loiane.com/projetos/uva-online-judge/

É um ótimo passatempo! :slight_smile:

denisspitfire

como posso usar input para um problema como este que vai lendo um por vez os dados que vao armazenando?

Criado 8 de setembro de 2011
Ultima resposta 9 de set. de 2011
Respostas 16
Participantes 4