Ir ao conteúdo
  • Cadastre-se

C++ Entrar com numero e receber os "n" nomes. String C++


Posts recomendados

Salve galera, tô iniciando strings aqui, gostaria de saber se eu posso usar o for para receber n nomes do usuário? Vou anexar o exemplo de entrada pra mostrar melhor o que estou tentando.

No caso o usuário entra com um numero e depois ele entra com n nomes a partir da quantidade solicitada. Strings em C++.

 

Obrigado.

Screenshot_2.png

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Artivis Sob disse:

Salve galera, tô iniciando strings aqui, gostaria de saber se eu posso usar o for para receber n nomes do usuário? Vou anexar o exemplo de entrada pra mostrar melhor o que estou tentando.

No caso o usuário entra com um numero e depois ele entra com n nomes a partir da quantidade solicitada. Strings em C++.

 

Obrigado.

Screenshot_2.png

acho que faria um array de strings não? seria algo assim:

int main() {
 

     int qnt;
     string nomes[];           //(ou string[] nomes, não lembro bem)

 

     cout << "Informe a quantidade de nomes: " << endl;

     cin >> qnt;

 

    cout << "Digite os nomes: " << endl;

    cin >> nomes[qnt];
    

 }   

Link para o comentário
Compartilhar em outros sites

@Midori Ta, mas como faria pra receber os nomes igual em vetores com valores inteiros? Onde entro com um inteiro e recebo "n" inteiros tipo:

 

cin>>n;

for (int i = 0; i < n; i++){
	cin>.vet[i];
}

 

da pra eu fazer desse jeito com string nomes?Se sim, como?

 

*tentei fazer conforme anexo e deu isso*

Screenshot_1.png

Link para o comentário
Compartilhar em outros sites

@Augusto CesarC 

 

O  i  no espeço da loop for não é o  i  no espaço da função, são variáveis de identificação igual.

 

A falha é por causa da  i  no espaço da função, seu valor com certeza é fora da capacidade da matriz, nesta ocasião:

Screenshot_1.png

 

Experimentem p.ex.

i= 0;
cout <<nome [i];

 

e logo entenderão

Link para o comentário
Compartilhar em outros sites

Eu consegui fazer em C, serve?

image.png.9be11a09be95df408262ce6ff6de94ba.png

 

Para isso eu utilizei o conceito de Struct em C, não sei se você conhece, tem isso em C++?! Deve ter.

Eu apenas criei uma Struct simples só com o nome e pedi que o usuário me passasse um valor para criar um vetor dessa Struct, assim:

 

image.png.cf6c812b11d30c2db06791d865882d79.png

 

image.png.e58a88495eda5f8a3479cccc40c9f9f4.png

 

Depois disso eu só peguei os nome e printei na tela.

Se alguém quiser eu posto o código completo aqui.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Augusto CesarC disse:

Ta, mas como faria pra receber os nomes igual em vetores com valores inteiros? Onde entro com um inteiro e recebo "n" inteiros tipo:

 


cin>>n;

for (int i = 0; i < n; i++){
	cin>.vet[i];
}

 

da pra eu fazer desse jeito com string nomes? Se sim, como?

 

A resposta simples é

  • sim, dá pra fazer desse jeito
  • como? igualzinho

Só que você não mostrou a declaração de vet nesse trecho. E assim não dá pra saber se está certo :)

 

O simples: declare um vetor de strings:

 

	vector<string> 	usuario;

 

E lê o valor de n.

 

Para colocar no vetor não precisa de índice. Basta escrever

 

	usuario.push_back(valor_lido);

 

Um exemplo de 20 linhas direto de https://www.cplusplus.com/reference/vector/vector/push_back/

 

// vector::push_back
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector;
  int myint;

  std::cout << "Please enter some integers (enter 0 to end):\n";

  do {
    std::cin >> myint;
    myvector.push_back (myint);
  } while (myint);

  std::cout << "myvector stores " << int(myvector.size()) << " numbers.\n";

  return 0;
}

 

 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Augusto CesarC disse:

*tentei fazer conforme anexo e deu isso*

Para o vetor receber os nomes (sem espaço) é como você fez no loop, mas o erro no fim pode ser como o @mauro_b comentou sobre a capacidade do vetor. Como você não iniciou a variável i declarada no início ela deve estar com um valor indefinido e inválido para o índice do vetor. Se imprimir o valor da variável i depois do loop verá qual é o valor.

 

Para mostrar todos os nomes do vetor teria que fazer outro loop assim,

cout << "Nomes:\n";
for(int i = 0; i < n; i += 1){
    cout << nome[i] << endl;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Midori @Augusto CesarC

Eu penso que no interior do loop se define outra variável i.

int n, i;<--------------------+
cin >>n;                      |
string texto[n];              |
for( int i ; i < n ; ++i ){   |
                 ....         |
}                             |
                  +-----------+
                  |
cout <<     texto[i];
            ~~~~~~^~
                  |
                  +------> Essa pertence o escopo da funação
                           É definida com valor inicial (na ocasião) da memória
                           

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!