|
|
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.
| |