Entrada e Saída Formatos de Entrada e Saída ● ● ● A entrada é constituída apenas por variáveis de entrada, ou seja, não pode haver enunciado como “Digite um numero:”, “Entre com seu nome:”, etc. Caso entre com essas frases, elas serão impresso no arquivo de saída e consequentemente a resposta estará errada Quando o código resolver o problema, mande imprimir apenas o resultado no formato que pedi no problema (cuidado com 'espaços' e 'quebra-de-linhas'); Não use comandos executáveis do windows, por exemplo 'system(“pause”);', ele irá imprimir 'Pressione qualquer tecla para continuar...'' no arquivo de saída e então a resposta estará errada. ● ● Não esqueça de importar as classes necessárias (#include <>), em algum momento seu código pode rodar sem ela no seu computador, porém não rodará na máquina do juiz. Preste bastante atenção nos limites de entrada, se seu programa não suportar o tamanho máximo de dados exigido, ocorrerá 'wrong answer ' resposta errada. Por exemplo: – int x = 1000000000000000; ← 'x' não suporta esse tamanho de numero, pois esse tipo suporta apenas 10 caracteres. – uint64_t x = 1000000000000000; ← 'x' suporta esse tamanho, pois o tipo 'uint64_t pode armazenar até 20 caracteres, mas não esqueça de importar a biblioteca #include<inttype.h> Linguagem C Código de entrada e saída de dados: Bliblioteca necessária: #include <stdio.h> Caracteres: getchar() Scanf(“%c”) putchar() printf(“%c”) Inteiros: scanf(“%d”) printf(“%d”) Exemplo: #include <stdio.h> int main() { char a,b[10]; float c; int x; Strings: gets() scanf(“%s”) puts() printf(“%s”) a = getchar(); putchar(a); scanf(“%c”,&a); printf(“%c”,a); Float: scanf(“%d”,&x); printf(“%d”,x); gets(b); puts(b); scanf(“%s”,&b); printf(“%s”,b); scanf(“%f”) printf(“%f”) scanf(“%f”,&c); printf(“%f”,c); return 0; } Linguagem C++ Bibliotecas necessária: #include <iostream> using namespace std; #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; int main() Caracteres, Strings, Inteiros e Floats usam o mesmo código de entrada. { cin>> char a,b[10]; int i; float x; cout<< cin>>a>>b>>i>>x; cout<<a<<b<<i<<x; return 0; } Exemplo de problema: Codigo em C: #include <stdio.h> #include <stdlib.h> int main() { int A,B,X; scanf(“%d%d”,&A,&B); Codigo em C++: #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; int main() { int A,B,X; X = A+B; cin>>A>>B; printf(“X = %d\n”,X); X = A+B; return 0; cout<<”X = “<<X<<endl; return 0; } } Limites de entrada de dados 1 - Casos de teste já determinado: O problema determina a quantidade de caso de testes que irá ter durante a execução. Geralmente informam: “ A primeira linha de entrada contém um inteiro N que indica o número de casos de teste” . Possível solução: for(i=0;i<n;i++) { .... } 2 - Casos de teste indeterminado: O problema não define quantos casos de teste será executado. Geralmente, pedem o fim da execução de duas formas: ● “O final da entrada é indicado por uma linha que contém apenas dois zeros, separados por um espaço em branco.” Possível solução: while(x != 0 || y != 0) { .... } ● “A entrada termina com EOF.” , o problema está querendo dizer que não tem um valor pra determinar a parada da execução, ou seja, a execução termina quando não tiver mais dados a ser lido. Possível solução: while(scanf(“%d”,&n)!=EOF) { .... } Tipos de erro ● ● Wrong answer (Resposta errada): – Verifique se o código contém system(“pause”) ou semelhante; – Verifique se o código está imprimindo caracteres maiúsculos se pede minúsculos ou o contrário; Compilation error (Erro de compilação): – ● Verifique se não está faltando importar alguma biblioteca; Runtime error (Erro em tempo de execução): – Verifique se o código não está acessando partes não existente no vetor. Por exemplo: ● – ● Int vet[10]; vet[11] = 12; Verifique se o tipo de entrada é o mesmo do tipo da variável que está lendo. Apresentation error (Erro de apresentação): – Verifique se não está sobrando ou faltando espaço e/ou quebra de linha no arquivo de saída. Gerando arquivo de saída ● Gera o executável do código no Desktop (por exemplo); ● Cria um arquivo entrada.txt no Desktop contendo todos os casos de teste; ● Digite no prompt cd Desktop pra entrar na pasta do desktop; ● Digite: executavel.exe<entrada.txt>saida.txt. Agora é só comparar se o arquivo de saída é exatamente a saída que se pede no problema. Bibliografia ● Art of Programming Contest, 2nd Edition – Arefin, Ahmed Shamsul. ● http://www.cplusplus.com/reference/ ● http://www.urionlinejudge.com.br/judge/