NMLZ Posted November 14, 2007 at 07:35 PM Report Share #147404 Posted November 14, 2007 at 07:35 PM Boas! Estou com uma pequena duvida. Queria ler várias linhas, mas para um inteiro, com o formato: 1 2 3 4 5 6 7 8 9 0 e acabava quando não digitasse nenhum número. Estou a usar um vector para guardar cada elemento de cada linha, e um vector de vectores para guardar cada linha: while (????) { while (cont < 9) { cin >> n; vec.push_back(n); cont++; } princ.push_back(vec); } já tentei o !cin.eof, mas não resulta. Alguem tem alguma ideia ? Abraços Link to comment Share on other sites More sharing options...
JD557 Posted November 14, 2007 at 08:03 PM Report Share #147414 Posted November 14, 2007 at 08:03 PM Tenta while (n!=NULL) Se calhar não vai dar, não estou muito a par da definição de NULL. MIEIC @ FEUP http://project557.blogspot.com/ --- Development Blog Proteja a sua pen: http://lastknight.pt.vu Link to comment Share on other sites More sharing options...
NMLZ Posted November 14, 2007 at 08:14 PM Author Report Share #147417 Posted November 14, 2007 at 08:14 PM também não funciona .. tks pela resposta Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 14, 2007 at 09:06 PM Report Share #147430 Posted November 14, 2007 at 09:06 PM Talvez o melhor seja ler uma string, e depois passar a string para inteiros. Assim quando a string de uma linha não contiver números, sais do ciclo. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Warrior Posted November 14, 2007 at 10:04 PM Report Share #147454 Posted November 14, 2007 at 10:04 PM De qualquer das formas vais ter que colocar um "enter" extra. O programa tem que ter uma forma de saber que acabou, senão pede sempre um número/string/whatever. o eof funciona mas para isso tens que simular o eof, se nao me engano em windows é ctrl+z Link to comment Share on other sites More sharing options...
TheDark Posted November 15, 2007 at 01:44 AM Report Share #147495 Posted November 15, 2007 at 01:44 AM Tenta while (n!=NULL) Se calhar não vai dar, não estou muito a par da definição de NULL. Importa esclarecer que em C/C++, NULL é simplesmente o valor 0. Voltando à pergunta, podes fazer while (!cin.fail()). Depois basta inserires um caracter que não seja um algarismo para saíres do ciclo. Desaparecido. Link to comment Share on other sites More sharing options...
nDray Posted November 15, 2007 at 08:19 AM Report Share #147497 Posted November 15, 2007 at 08:19 AM Se está à espera de 9 dígitos nem precisa disso... Já sabe quando termina..... Link to comment Share on other sites More sharing options...
TheDark Posted November 15, 2007 at 10:48 AM Report Share #147505 Posted November 15, 2007 at 10:48 AM Mesmo que saiba à partida quantos algarismos vão estar em cada vector, não sabe quantos vectores vai receber. Desaparecido. Link to comment Share on other sites More sharing options...
NMLZ Posted November 15, 2007 at 11:36 AM Author Report Share #147509 Posted November 15, 2007 at 11:36 AM exactamente TheDark, são n linhas com 9 digitos. Neste caso TEM mesmo que ser com um enter, tendo em conta que o programa é avaliado pelo input e output, e não pelo codigo (UVa). Tamos 2 à procura de resposta, quando souber posto aqui. abraço ps: tks pelas respostas Link to comment Share on other sites More sharing options...
shumy Posted November 15, 2007 at 11:50 AM Report Share #147514 Posted November 15, 2007 at 11:50 AM Primeiro que tudo acho melhor que todo o código seja colocado, porque o que lá está não funciona certamente. Não sei de que tipo é o n. Não estou a ver cont = 0; Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática! Link to comment Share on other sites More sharing options...
TheDark Posted November 15, 2007 at 01:07 PM Report Share #147528 Posted November 15, 2007 at 01:07 PM Não percebi, queres que quando deres um enter ele pare de receber algarismos? Assim sendo vou ali pela ideia do Rui, receber uma string e fazer parse... com sscanf era um instante. Desaparecido. Link to comment Share on other sites More sharing options...
Warrior Posted November 15, 2007 at 02:33 PM Report Share #147534 Posted November 15, 2007 at 02:33 PM exactamente TheDark, são n linhas com 9 digitos. Neste caso TEM mesmo que ser com um enter, tendo em conta que o programa é avaliado pelo input e output, e não pelo codigo (UVa). Tamos 2 à procura de resposta, quando souber posto aqui. abraço ps: tks pelas respostas Se é um corrector automático usa o cin.eof(). Costumo resolver problemas na UVA e é isso que faço. (ok, na prática uso o feof(stdin) de C, mas vai dar ao mesmo) EDIT: Bem me parecia. Tinhas que ser da FEUP para usar a UVA. 🙂 Link to comment Share on other sites More sharing options...
NMLZ Posted November 15, 2007 at 03:41 PM Author Report Share #147543 Posted November 15, 2007 at 03:41 PM Primeiro que tudo acho melhor que todo o código seja colocado, porque o que lá está não funciona certamente. Não sei de que tipo é o n. Não estou a ver cont = 0; se ignorares o 1º while e o push_back para o princ ele lê 9 inteiros e guarda cada 1 num vector vec. int n, cont = 0; vector<vector<int> > princ; vector<int> a unica coisa que falta realmente e' quebrar o ciclo. Warrior, tks, entao vou experimentar submeter com o !cin.eof, se der erro leio a string e separo/converto. abc Link to comment Share on other sites More sharing options...
nDray Posted November 15, 2007 at 04:26 PM Report Share #147548 Posted November 15, 2007 at 04:26 PM http://www.cplusplus.com/reference/iostream/istream/peek.html Link to comment Share on other sites More sharing options...
Warrior Posted November 15, 2007 at 04:54 PM Report Share #147551 Posted November 15, 2007 at 04:54 PM Primeiro que tudo acho melhor que todo o código seja colocado, porque o que lá está não funciona certamente. Não sei de que tipo é o n. Não estou a ver cont = 0; se ignorares o 1º while e o push_back para o princ ele lê 9 inteiros e guarda cada 1 num vector vec. int n, cont = 0; vector<vector<int> > princ; vector<int> a unica coisa que falta realmente e' quebrar o ciclo. Warrior, tks, entao vou experimentar submeter com o !cin.eof, se der erro leio a string e separo/converto. abc Tem que funcionar. Eu em C uso algo assim: (extraído de uma das soluções da UVA) scanf("%d %d",&a,&🙂 ; while (!feof(stdin)) { ...... scanf("%d %d",&a,&🙂 ; } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now