Alguns problemas do spoj especificam o final da entrada da seguinte maneira:
A entrada é terminada por fim de arquivo (EOF). EOF é End Of File (Fim de Arquivo).
Como detectar o fim de arquivo em um programa C?
Na linguagem C, a maneira utilizada para indicar condições excepcionais durante a execução do programa é funções que retornam um "funny values" ou um status code.
Mais sobre exceções em C :
http://marathoncode.blogspot.com.br/2012/11/excecoes-em-c.html
Sobre outros "problemas" da linguagem C:
http://marathoncode.blogspot.com.br/2012/07/porque-c-nao-e-minha-linguagem-de.html
Todo bug lo suficientemente avanzado es indistinguible de una feature.
– Rich Kulawiec
Em caso de sucesso, a função scanf retorna o número de itens da lista de argumentos lidos com sucesso. Esta contagem pode igualar o número esperado de itens ou ser menos (mesmo zero) devido a uma falha de correspondência, um erro de leitura, ou o alcance do fim de arquivo.
Se um erro de leitura acontece ou o fim-de-arquivo é atingido durante a leitura, um indicador adequado é sinalizado. E, se acontece alguma coisa antes de um dado pode ser lido com sucesso, EOF é retornado.
Geralmente, EOF é uma definição de macro do tipo int que se expande em uma constante inteira negativa (geralmente, -1).
http://www.cplusplus.com/reference/cstdio/scanf/
Tratamento do fim de arquivo em C
while( scanf("%d",&t) != EOF ){ } ou while( scanf("%d",t) > 0 ){ }Tratamento do fim de arquivo em C++
while( cin >> t){ } ou cin >> t; while( !cin.eof() ){ }http://www.cplusplus.com/reference/ios/ios/eof/
Existem vários exemplos na diferença do tratamento de erros entre C e C++.
Tratamento de falha de alocação em C
#include <stdlib.h> #include <stdio.h> int main(){ int size = 1000000000; int *p; p = (int*)malloc(size*sizeof(int)); if(p==NULL){ printf("Memoria insuficiente"); system("PAUSE"); exit(1); } system("PAUSE"); return 0; }Tratamento de falha de alocação em C++
#include <iostream> #include <new> using namespace std; int main(){ int size = 1000000000; int *p; try{ p = new int[size]; }catch( bad_alloc& ba){ cerr << "bad_alloc caught: " << ba.what() << endl; } system("PAUSE"); return 0; }
#include <iostream> #include < new > using namespace std; int main(){ int size = 1000000000; int *p; p = new (nothrow) int[size]; if(p==0){ cerr << "bad_alloc caught" << endl; system("PAUSE"); } return 0; }http://www.cplusplus.com/reference/new/bad_alloc/
Checagem de índice fora da faixa
#include#include #include using namespace std; int main(){ int v1[10]; v1[11] = 5;//C não tem tratamento para índice fora da faixa //C++ verifica os indices fora da faixa do vector com a função at vector v2(10); try{ v2.at(11) = 6; }catch (out_of_range& oor) { cerr << "Out of Range error: " << oor.what() << endl; } system("PAUSE"); }
http://www.cplusplus.com/reference/vector/vector/at/
http://www.cplusplus.com/reference/stdexcept/out_of_range/
Um comentário:
Amigo, gostaria de saber como ler até o fim do arquivo de uma linha inteira em c++
Postar um comentário