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