Tarefa 1

Tarefa 1

por José Corsini -
Número de respostas: 16

Não entendi uma coisa. Vou programar em Java, mas ainda não entendi como faria pra ler a entrada de dados. Alguém entendeu?

Obrigado.

Em resposta à José Corsini

Re: Tarefa 1

por Gregory De Bonis -
Os dados deverão ser lidos da entrada padrão. =]
Em resposta à Gregory De Bonis

Re: Tarefa 1

por Luciano Kenji Sugiura -
"Os dados deverão ser lidos da entrada padrão" mesmo???
Eu tive essa dúvida, e como no enunciado isto não está especificado, além de ter um comentário "A entrada termina com final de arquivo", acabei fazendo com leitura de arquivo (não passei pelo online judge ainda). Tudo bem que ele pode se referir ao uso "ep1 < entrada", mas acho que nesse caso o comentário do fim de arquivo seria inútil... Mas se não me engano os problemas tipo desafios de programação lêem dados de entrada padrão...

Enfim... E aí???
Quem já passou pelo judge, como fez?
Em resposta à Luciano Kenji Sugiura

Re: Tarefa 1

por Lucas Piva Rocha Corrêa -
Os dados devem ser lidos da entrada padrão mesmo. Todos os problemas do SPOJ (e da maioria dos online judges) leem da entrada padrão.

A entrada padrão na verdade é um arquivo. A palavra chave "stdin", em C, é um FILE * (assim como stderr e stdout). Pense que o final de arquivo, para a entrada padrão, é um EOF, ou um ctrl + D no terminal.

De fato, é como se o seu programa fosse executado com "./a.out < entrada", onde entrada é um arquivo terminado por EOF. Se você executá-lo dessa maneira, ele deve dar as respostas e encerrar o programa (não pode ficar esperando mais entrada).
Em resposta à Lucas Piva Rocha Corrêa

Re: Tarefa 1

por Luciano Kenji Sugiura -
Hummm beleza, foi só usar a implementação de leitura de arquivo usando stdin mesmo! Agora foi!
Eu tava tentando fazer por scanf, mas eu percebi que executando ep1 < entrada, o último número de entrada é lido infinitas vezes, não sendo encontrado nenhum EOF. Dá para fazer por scanf sem usar a abordagem de arquivo (só por curiosidade)?
Em resposta à Luciano Kenji Sugiura

Re: Tarefa 1

por Lucas Piva Rocha Corrêa -
Do manual do scanf:

int scanf(const char *format, ...);

RETURN VALUE
These functions return the number of input items successfully matched
and assigned, which can be fewer than provided for, or even zero in the
event of an early matching failure.

Em outras palavras, se o scanf devolver um número menor do que o número de argumentos que você pediu para ler (no nosso caso, se ele devolver 0), quer dizer que acabou a entrada.
Em resposta à José Corsini

Re: Tarefa 1

por José Coelho de Pina -
Zé, os programas devem ser feitos em C.

Como diz o enunciado vocês "devem utilizar as
estruturas de dados das notas de aula",
que são em C.

A linguagem oficial de MAC0328 é C.
Todos as funções que escreveremos durante as aulas, nas provas, nas tarefas ... serão em C.
Como nas notas de aula do prof. Paulo Feofiloff.
Em resposta à José Coelho de Pina

Re: Tarefa 1

por Vinícius Daros -
Olá,

Também gostaria de saber se a implementação deve ser exatamente igual à passada em aula.

Nas notas, um vértice é apenas um int, mas eu estou usando como uma estrutura. Assim, em alguns trechos, apesar da idéia se manter fiel à original, a implementação não é exatamente a mesma.

Esse tipo de liberdade é permitida ou devemos usar os códigos estritamente como foram apresentados?

Obrigado,

Vinícius
Em resposta à Vinícius Daros

Re: Tarefa 1

por José Coelho de Pina -
Não tenho uma resposta absoluta para essa perguntas...

Sugiro que vocês se habituem com as estruturas de dados e implementações, já que vocês terão usá-las
nas aulas e provas(!). É como o pseudocódigo do CLRS que vocês utilizarão em MAC0338.

Pelo menos por enquanto, vocês não são obrigados a utilizarem textualmente as implementações das notas
de aula. Vamos ver no que vai dar.