Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Schubert M.

C Ex. UVA Prêmio Ecológico (10300)

Recommended Posts

Postado (editado)

Boa tarde/noite, gostaria de saber em o que meu código, num dos problemas do UVA Online Judge, estaria dando de errado:

#include <stdio.h>
#include <math.h>

int main() {
	
	int n, f, a, b, c;
	int i, j;
	float c1, c2, premio, tot;
	int I; //charme para o ultimo printf
	
	{ //valores resetados
	c1 = 0;
	c2 = 0;
	premio = 0; 
	tot = 0; }
	
	printf("Casos de teste >> ");
	scanf("%d", &n);
	
	for (i=0;i<n;i++) {
		printf("Numero de fazendeiros >> ");
		scanf("%d", &f);
		printf("\nTamanho da Fazendo | N. Animais | Benef. ao Ambiente\n");
		for (j=0;j<f;j++) {
			scanf("%d %d %d", &a, &b, &c);
			c1 = b / a;		//Espaço que cada animal ocupa
			c2 = c1 * c;		//Espaço animal X benef. ao ambiente
			premio = c2 * b;	//Benef * animal = premio final de um agricultor
			tot += premio;		//Soma total do premio para aquele caso de teste
			I = i + 1;		//charme
	}
	printf("Premio para o caso %d: %.0f\n", I, tot);
}
	return 0;
}

Não há erros na compilação, somente os valores de saída mostrados no UVA não saem iguais, imagino que seja erro matemático.

Agradecido caso haja resposta.  :wiggle:

Editado por Schubert M.
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Schubert M. Cara!

Não existe pedido no exercício dessas mensagens na Entrada/Saída:


	printf("Casos de teste >> ");


		printf("Numero de fazendeiros >> ");


	printf("Premio para o caso %d: %.0f\n", I, tot);

 

No Final do arquivo p10300.pdf tem exemplos de entrada (Sample Input) e de saída (Sample Output), você deve de fazer da maneira que indicam os exemplos.

Editado por AnsiC
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Considerar ele aqui traduzido então >>> Prêmio Ecológico (10300).pdf <<<

 

Na entrada ele menciona essas 3 coisas:

 

"A primeira linha da entrada contém um único inteiro positivo n (<20), indicando o número de casos de teste"

11 horas atrás, Schubert M. disse:

        printf("Casos de teste >> ");

        scanf("%d", &n);

 

"Cada caso de teste começa com uma linha que contém um único inteiro f (0 <f <20), o número de agricultores, no caso de teste."

11 horas atrás, Schubert M. disse:

          for (i=0;i<n;i++) {

                   printf("Numero de fazendeiros >> ");

                   scanf("%d", &f);

 

"Esta linha é seguida por três números inteiros positivos para cada agricultor: o tamanho da fazenda em metros quadrados, o número de animais que possui e o valor inteiro que expressa o benefício do agricultor ao ambiente."

11 horas atrás, Schubert M. disse:

          printf("\nTamanho da Fazendo | N. Animais | Benef. ao Ambiente\n");

         for (j=0;j<f;j++) {

                    scanf("%d %d %d", &a, &b, &c);

 

                    c1 = b / a; //Espaço que cada animal ocupa

                    c2 = c1 * c; //Espaço animal X benef. ao ambiente

                    premio = c2 * b; //Benef * animal = premio final de um agricultor

 

                    tot += premio; //Soma total do premio para aquele caso de teste

 

E logo após essas 3 partes, imprimido o que, ao meu ver, deveria sair como um dos 3 ou 4 saídas diferente:

11 horas atrás, Schubert M. disse:

         printf("Premio para o caso %d: %.0f\n", I, tot);

Considerando que o I é somente estética, não influência no código em geral (eu acho).

 

Então @AnsiC e @devair1010 estas 3 partes do código estão erradas? ou não deveria mencionar estas linhas sendo que no problema menciona? ou somente uma interpretação mal feita minha do problema?

Editado por Schubert M.
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu somente verifiquei as mensagens.

11 horas atrás, Schubert M. disse:

printf("Casos de teste >> ");

 

11 horas atrás, Schubert M. disse:

printf("Numero de fazendeiros >> ");

 

11 horas atrás, Schubert M. disse:

printf("\nTamanho da Fazendo | N. Animais | Benef. ao Ambiente\n");

 

11 horas atrás, Schubert M. disse:

printf("Premio para o caso

Todas essas mensagens de texto vão aparecer no aquivo de saída, isso não deve acontecer, a saída deve ser apenas os resultados, sem texto extra.

adicionado 3 minutos depois

conforme Sample Output 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC Aaaah simsim agora eu lhe entendi, botei elas como estética apenas pra visualizar melhor no console de comandos, no caso dando um // nelas na hora já não aparecem se for esse o problema, que no caso não é.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
2 minutos atrás, Schubert M. disse:

botei elas como estética apenas pra visualizar melhor no console de comandos

Você por acaso considera certo?

adicionado 3 minutos depois

Esta é a tradução do Google Tradutor para Output:

Saída
Para cada caso de teste, imprima uma linha contendo um único inteiro que represente o ônus
orçamento de muitos, que será sempre um número inteiro. Não imprima linhas em branco.

Output
For each test case output one line containing a single integer that holds the summed burden for Ger-
many's budget, which will always be a whole number. Do not output any blank lines.

 

Editado por AnsiC
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC Nem errado, nem certo, somente para eu melhor visualizar. Assim está melhor?

#include <stdio.h>
#include <math.h>

int main() {
	
	int n, f, a, b, c;
	int i, j;
	float c1, c2, premio, tot;
	
	{ //valores resetados
	c1 = 0;
	c2 = 0;
	premio = 0; 
	tot = 0; }
	
	scanf("%d", &n);
	
	for (i=0;i<n;i++) {
		scanf("%d", &f);
		for (j=0;j<f;j++) {
			scanf("%d %d %d", &a, &b, &c);
			c1 = b / a;			//Espaço que cada animal ocupa
			c2 = c1 * c;		//Espaço animal X benef. ao ambiente
			premio = c2 * b;	//Benef * animal = premio final de um agricultor
			tot += premio;		//Soma total do premio para aquele caso de teste
	}
	printf("%.0f", tot);
}
	return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é o erro mais obvio conforme a tradução para o português, se existe outro erro eu não sei.

 

1 minuto atrás, Schubert M. disse:

Nem errado, nem certo,

Conforme a tradução esse é um dos erros.

 

O outro erro se exite e onde existe eu não estou vendo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Já havia posto ele traduzido aqui >>> Prêmio Ecológico (10300).pdf

6 minutos atrás, AnsiC disse:

O outro erro se exite e onde existe eu não estou vendo.

@AnsiC O outro erro seria que o exemplo de entrada:

Citação

4
5
1 1 1
2 2 2
3 3 3
2 3 4
8 9 2
3
9 1 8
6 12 1
8 1 1
3
10 30 40
9 8 5
100 1000 70

4
5 6 7
7 6 5
8 9 3
3 10 5

Não resulta no de saída:

Citação

38
86
7445

109

 

Editado por Schubert M.
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de um bom tempo, consegui resolver o problema:

#include <stdio.h>

int main() {
	
	int n, f, a, b, c;
	int i, j;
	int total; 
		
	scanf("%d", &n);
	for (i=0; i<n; i++) {
		scanf("%d", &f);
		total = 0;
		for (j=0; j<f; j++) {
			scanf("%d %d %d", &a, &b, &c);
			total += a * c;
		}
		printf("%d\n\n", total);
	}
	return 0;
}

O calculo estava errado, pois seria mais ou menos algo assim:

( ( A / B ) x C ) x B 

Porém no código ele executaria de uma forma errado, sendo que o calculo na realidade, executaria por ordem de prescindência matemática, fazendo com que os dois B se anulassem, ficando somente:

A x C   :aplausos:

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×