Ir ao conteúdo
  • Cadastre-se

Jardel Nunes

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Reputação

0
  1. CiroboyBR e olliver.soul: quero ler palavras (strings) e, quando eu quiser, finalizar o fluxo de entrada. cin >> temp é verdadeiro se um valor foi lido corretamente e falso em caso contrário. O laço while irá ler todos os strings (logo, todos os caracteres) que fornecemos. Então eu vou inserindo strings, como, por exemplo, 'banana pera manga', etc. O que quero é saber um comando específico que termine com o laço while (que termine com o fluxo de entrada). Se a variável que eu armazenasse a leitura fosse um double, em vez de uma string, terminar o fluxo de entrada (finalizar o while, nesse caso) seria fácil, pois para cin >> temp ser falso bastaria eu digitar um valor incorreto (que não fosse ponto flutuante), como 'k' por exemplo. O problema é que na string, '2', 'k' ou qualquer caractere que seja é aceito. Ou seja, deve haver uma comando específico para finalizar o fluxo de entrada. Mas não sei qual é. Isso que eu queria saber. Sei que posso colocar para finalizar o fluxo quando eu digitar um caractere específico (dentro de um if), como '|', por exemplo. Mas não quero isso, senão o usuário não iria poder digitar esse caractere. Sei que deve haver esse comando específico pois li a respeito. O livro 'princípios e prática de programação com c++'', do bjarne stroustrup, diz que é o control + z. Tentei, mas não funciona. Segue o resto do código do programa que eu coloquei acima: //Este programa lê palavras, as ordena e emite uma saída para palavras que não gosta (previamente definidas) #include <iostream> #include <string> #include <vector> #include <algorithm> #include <cmath> #include <locale.h> using namespace std; inline void keep_window_open() {char ch; cin>>ch;} int main (){ setlocale(LC_ALL, "Portuguese"); string desgosta= "renga"; string desgosta2= "olaa"; vector <string> palavras; string temp; while (cin >> temp) palavras.push_back(temp); sort (palavras.begin(), palavras.end()); for (int i= 0; i < palavras.size(); ++i){ if (palavras== desgosta || palavras == desgosta2){ cout << "\nRUÍDO"; }else if (i== 0 || palavras [i-1] != palavras){ cout << "\n"<< palavras; } } } Claro, esse é só um exemplo de programa, há vários outros que preciso saber como finalizar o fluxo de entrada.
  2. Tentei Ctrl + C, mas não dá certo também. Quando faço isso, fecha a execução do programa.
  3. Pegando esse pedaço de código como exemplo: #include <iostream> #include <string> #include <vector> #include <algorithm> #include <cmath> #include <locale.h> using namespace std; inline void keep_window_open() {char ch; cin>>ch;} int main (){ setlocale(LC_ALL, "Portuguese"); vector <string> palavras; string temp; while (cin >> temp) palavras.push_back(temp); ... Como faço para interromper o fluxo de entrada (cin >> temp)? Li que deve-se pressionar Control + z. Fiz isso, mas não deu certo. Só tenho conseguido de um jeito: pressionando control + z + enter, um atrás do outro, repetidas vezes. O problema disso é que às vezes consigo interromper o fluxo de entrada na primeira vez que digito essa sequência, mas às vezes não. Quando não consigo na primeira vez (maioria das vezes) acaba acontecendo que os caracteres '^Z' são digitados, mudando o resultado final do programa. Alguém sabe um jeito eficaz de interromper o fluxo de entrada? OBS: meu sistema operacional é o Windows 8 OBS-2: uso o Dev-C++ 5.11 Desde já agradeço ;D
  4. Olá pessoal. Estou iniciando em C++ pelo livro "princípios e práticas de programação com C++". Me deparei com o seguinte código durante a minha leitura: #include <iostream> #include <string> #include <vector> #include <algorithm> #include <cmath> #include <locale.h> using namespace std; inline void keep_window_open() {char ch; cin>>ch;} int main (){ setlocale(LC_ALL, "Portuguese"); string anterior= " "; string atual; while (cin>>atual){ if(anterior == atual) cout << "palavra repetida: " << atual << '\n'; anterior = atual; } } Ao eu escrever uma frase como "O gato gato pulou pulou muito" o programa emite como saída, depois de eu clicar 'enter', o seguinte: palavra repetida: gato palavra repetida: pulou Não estou entendendo por que ocorre dessa maneira: primeiro escrevo a frase completa, depois clico enter, e depois mostra quais são as palavras repetidas. Onde é armazenado o conjunto das palavras repetidas? E ''while (cin>>atual)'', o que isso significa? Porque não ocorre dessa maneira: ao repetir uma palavra, já mostra qual a palavra repetida logo após? Porque e como isso ocorre apenas no final (após eu clicar 'enter')? Porque o comando if e os seus resultados é executado só no final, depois do anterior = atual, sendo que o if está antes do anterior = atual? OBS: estou usando o Dev-C++ 5.11 Desde já agradeço ;D!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!