Ir ao conteúdo

Principiante Em C++


Baleado

Posts recomendados

Postado

oi pessoal começei a aprender a programar em C++ ah pouco tempo e estou com algumas confusões.

Pois sei programar em C e a forma de programar muda um pouco e gostava de perceber o funcionamento do cin por exemplo neste programita :

void main(){

   int i;

   cout << "Escreva uma linha de texto" << endl;

   while(cin.get() != '\n'){

    ++i;

   }

   cout << "A linha tem " << i << " caracteres" << endl;

}

É assim quando carrego numa tecla o ciclo while executa? ou só executa quando clicar no enter percorrendo a frase que escrevi ?

É que quando carrego no backspace não me conta como caracter o que me leva a pensar que o ciclo só executa quando confirmo a frase, percorrendo esta ate ao fim mas depois surge outra duvida onde é que a frase vai estar guardada para que o cin.get() a vá buscar?

Gostava de perceber como funciona aquele cin.get().

Postado

Simples! Faça o teste de mesa.

Ou entâo monte o fluxograma e simule o funcionamento do seu algoritmo.

Postado
Postado Originalmente por carmagedon666@06 jul 2004, 16:10

Simples! Faça o teste de mesa.

Ou entâo monte o fluxograma e simule o funcionamento do seu algoritmo.

Que bom se fosse tão simples. (Mas o teste de mesa é certo)

Olha, se não me engano o cin.get() retorna um caracter digitado, então para cada caracter vai ter um ciclo do laço.

O mais comum é fazer

char texto[100];

cin >> texto;

Daí em texto vai estar o texto digitado (mas só depois de teclar o enter)

Postado

O cin.get() lê um caractere digitado pelo usuário.

No caso, o seu programa ele executa esta leitura até que seja pressionada a tecla <enter>.

Enquanto digita, ele executa o conteúdo do while, que é o incremento de um contador de caracteres.

Assim, enquanto for digitandoalgo diferente de enter, ele vai somar +1 a cada caractere inserido.

No final, ele exibe o número de caracteres digitados.

No C++, a biblioteca iostream.h possibilitou uma melhor leitura de caracteres...

include <iostream.h>

void main() {

char[100] texto;

cin << texto; // lê uma string

cout >> texto; // exibe o conteúdo da variável texto

}

Espero ter ajudado...

[]s,

Postado

A duvida continua porque imaginemos que em vez de '\n' temos um 'a' se executarem o programa vêm que ao escreverem por exemplo "baleado", ele não pára no primeiro 'a' , pois só executa o ciclo depois de pressionar enter

EXEMPLO:

void main(){

   int i;

   cout << "Escreva uma linha de texto" << endl;

   while(cin.get() != 'a'){

      ++i;

      cout << "Teste" << endl;

   }

   cout << "A linha tem " << i << " caracteres" << endl;

}

while(cin.get() != 'a') -> o programa quando chega aqui espera que insiramos qualquer coisa (por exemplo "Baleado") depois de clicar enter a palavra deve estar guardada em qualquer lado porque depois de pressionar enter ele corre o ciclo while contando só até ao primeiro 'a'.

E é isto que não percebo pois parece que cin.get() executa duas operações: 1º recolhe a frase e depois corre a frase caracter a caracter, será isso?? :muro::muro:

Se virmos o mesmo exemplo em C reparamos que o cin.get() parece fazer o trabalho do gets() e depois no ciclo faz o incremento sozinho, pois no C temos que ter a frase guardada numa variavel para que depois a possamos percorrer e em C++ parece que não necessitamos guardala em variaveis daí não perceber muito bem o cin.get()

void main(){

   int i = 0;

   char frase[50];

   printf("Escreva uma linha de texto\n");

   gets(frase);

   while(frase != 'a'){

      ++i;

      printf("Teste\n");

   }

   printf("A linha tem %d caracteres\n", i);

}

Será quem resume-se em duas partes? Recolhe e Pesquisa?

Postado

 
#include<iostream>

using namespace std;

int main() {
cout << "Escreva uma linha de texto" << endl;
 while(cin.get() != 'a'){
     cout << "Diferente de a!" << endl;
 }
 char c;
 while( (c = cin.get()) != 'w' ){
  cout<<c;//Diferente de w
 }
 cout<<endl;

 return 0;
}

Se digitar "baleado w"

no buffer vai ficar "baleado w"

e depois do enter, cin.get() vai ler 1 caractere de cada vez

b => diferente de a

a => não é diferente de a, então pára!

l => diferente de w

e => diferente de w

a => diferente de w

d => diferente de w

o => diferente de w

' ' => diferente de w

w => não é diferente de w

Entendeu?

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!