Ir para conteúdo
Fórum Script Brasil
  • 0

josericardoc

Pergunta

Olá, estou estudando c++ e me desafiei a criar um código que recebesse nomes e depois apresentasse eles na tela sendo que para parar de digitar os nomes você entraria com um código definido no inicio do programa.
Mas estou tendo problemas em nomes que levem espaço entre eles, está acontecendo que se eu entro com "josé ricardo" ele imprime josé numa linha e ricardo na outra, como faço para que ele coloque junto em uma unica linha? (obs : precisei entrar com x ali e depois tirei 1 do x pois quando ia imprimir ele tava imprimindo também o código de saída definido no inicio). Agradeço a ajuda.



#include <iostream>
#include <stdlib.h>
#include <vector>
#include <string.h>
using namespace std;

void nome ()
{
int i,x;
int LINHA1=50;
int COLUNA1=60;
char saida [4];
char nomes [LINHA1][COLUNA1];
cout << "digite um codigo para a sua saida\nquando desejar sair basta digitar seu codigo novamente \n(seu codigo pode ter 1 character)"<<endl; 
cin >> saida; 
for (i = 0,x = 0; i < LINHA1;i++)
{

cout << "digite nomes, para sair use o seu codigo"<<endl;
cin >> nomes;
x++;

if (strcmp (nomes, saida) == 0){
break;
}


}


system ("cls");
cout << "Os nomes digitados foram "<<endl;
for(int i = 0; i < x - 1; i++)
{

cout <<endl<< nomes<<endl;

}


}





int main(int argc, char** argv)
{



nome();
return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Use o cin.getline() pra isso.

(Para não deixar as informações tão razas, se não der pra entender eu respondo melhor depois, boa sorte)

char name[50];

cin.getline(name, 50); //Argumentos usados name = variavel que vai receber a entrada, 50 = Quantidade maxima de caracteres que serão armazenadas por este método

http://www.cplusplus.com/reference/istream/istream/getline/

--------------------------------------------------------------------------------------------------------------------

Tambem gostaria de comentar sobre a declaração do int i na primeira parte do codigo, se ele for uma variavel usada no loop o melhor é declarar ela dentro do loop pra ela ser desalocada assim que o loop sair de escopo.

Editado por Nando_xd
Link para o comentário
Compartilhar em outros sites

  • 0

Aparte do que já comentou Nando_xd, eu recomendaria você usar logo depois do cin.getline(name, 50); a sentença cin.sync() ficando da seguinte forma:

char name[10][50];

for(int i = 0; i<10;i++...
cin.getline(name, 50);
cin.sync();
...
Por que usar isso? Fácil! Se não por o cin.sync() o buffer vai conter lixo trás pulsar a tecla enter, certamente vai saltar as seguintes leituras posteriores a essa primeira leitura, a função membro sync da classe cin elimina esse resíduo do buffer de entrada(stdin) sincronizando o conteúdo da string com o que você realmente entrou por teclado, fazendo com que seu programa funcione corretamente seu programa, chame sin.sync logo depois de fazer uma leitura, ou incluso antes si tiver problemas, normalmente quando quiser trabalhar com chars ou strings.

Sorte.

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...