Ir ao conteúdo

Posts recomendados

Postado

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

Postado

Esta é a sintaxe do for,

 

for(variável de inicialização; condição; incremento)

 

A variável de n será usada na parte de condição para determinar quando o loop termina. E durante o loop seu código vai pedir os nomes.

  • Curtir 1
Postado
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];
    

 }   

Postado

@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

Postado

@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

Postado

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
Postado
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;
}

 

 

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

@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

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