Mudanças entre as edições de "Leitura e Escrita de Dados"

(Limpou toda a página)
 
Linha 1: Linha 1:
== Como resolver um problema no formato das maratonas ==
 
  
* Identificar o problema: enunciados contextualizados
 
* Projetar a solução algorítmica
 
* Desenvolver o código
 
* Testar
 
 
 
== Origem (leitura) dos dados ==
 
 
* Leitura na entrada padrão (scanf, fgets)
 
* Resolver cada caso de teste individualmente
 
* Identificar marcadores de início/término de cada caso de teste:
 
** Casos consecutivos na entrada terminados com uma linha contendo um 0:
 
<code>
 
scanf("%d",&n);
 
while (n != 0) {
 
    // Le a entrada para um caso de teste e a processa
 
    ...
 
    scanf("%d",&n);
 
}
 
</code>
 
 
*Concatenação de todas as instâncias terminada por um fim de arquivo (EOF):
 
(função scanf retorna o número de variáveis lidas e armazenadas com sucesso)
 
<code>
 
while (scanf("%d",&n) == 1) {
 
    // Lê a entrada para um caso de teste e a processa
 
    ...
 
}
 
</code>
 
 
 
== Saída (escrita) dos dados ==
 
 
* Escrita na saída padrão:
 
** Printf
 
** Inserir marcadores conforme especificação
 
** Retirar quebras desnecessárias
 
 
 
== Regras básicas ==
 
 
* Siga estritamente o formato de entrada e saída
 
* Confie no enunciado do problema: se o enunciado garante que N não ultrapassa 10000, não é necessário realizar esse tipo de teste
 
* Coloque apenas os comentários que ajudarão você e sua equipe a entender o código; nomes de variáveis adequados contribuem (e muito!)
 
* Não use alocação dinâmica de memória (as funções são lentas), use vetores estáticos com o tamanho máximo que você poderá precisar
 
 
 
== Teste em linha de comando ==
 
 
* As entradas e saídas de exemplo de um problema devem ser usadas para testar sua solução
 
* Edite os arquivos .in e .out para testar
 
* Execute seu programa, redirecionando o fluxo de entrada (<) e saída (>)
 
<code>
 
>meuprog < dados.in > dados.out
 
</code>
 
 
 
== Dica ==
 
 
"Lembre-se sempre que o seu programa será executado com uma entrada diferente, maior e mais difícil do que a entrada de exemplo. O fato de o seu programa funcionar para a entrada de exemplo não indica que o mesmo irá funcionar para a entrada dos juízes."
 
 
 
== Contribuintes ==
 
* Mauro Miazaki
 
 
 
== Referências ==
 
* [http://www.inf.ufpr.br/maratona/ Maratona de Programação na UFPR]
 
 
 
----
 
 
[[Ensino Extracurricular de Programação de Computadores | CLIQUE AQUI]] para voltar.
 

Edição atual tal como às 00h53min de 13 de maio de 2015