Ir ao conteúdo
  • Cadastre-se
dftaino

Vetores e Strings

Recommended Posts

Olá,

Tenho que receber uma quantidade de disciplinas e associar um código e um nome a cada uma


#include <iostream>
#include <string>

using namespace std;

int main()
{
int quantidade;
int i;
int j;

cout<<"Digite a quantidade \n";
cin>>quantidade;

string codigo[quantidade];
string nome[quantidade];

cout<<"Digite o codigo das disciplinas \n";
for(i=0;i<quantidade;i++){
cin>>codigo[i];
}
cout<<"Agora os nomes \n";
for(j=0;j<quantidade;j++){
getline(cin,nome[j]);
}

cout<<"Como sao "<<quantidade<<" disciplinas temos \n";
for(i=0;i<quantidade;i++){
for(j=0;j<quantidade;j++){
cout<<codigo[i]<<"-"<<nome[j]<<"\n";
}
}
return 0;
}

Mas quando eu compilo:

"Digite a quantidade

2

Digite o codigo das disciplinas

dgrfed

dvbfvdvfd

Agora os nomes // não sei por que ele recebe um único nome

Estrutura de Dados

Como sao 2 disciplinas temos

dgrfed-

dgrfed-Estruturas de Dados

dvbfvdvfd-

dvbfvdvfd-Estrutura de Dados"

Acredito que já mudei o código tantas vezes que nem consigo encontrar a falha...

Alguém pode apontar o error, por favor?

Obrigada

Process returned 0 (0x0) execution time : 5.728 s

Press any key to continue.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dftaino,

Uma sequência de leitura de dados pelo teclado realmente é algo que às vezes pode confundir um pouco. Por aqui, é bastante comum esse tipo de dúvida. A função cin.ignore() foi necessária limpar o buffer de entrada, descartando o '\n' (newline).

#include <iostream>
#include <string>

using namespace std;

int main()
{
int quantidade;
int i;

cout<<"Digite a quantidade de disciplinas: ";
cin>>quantidade;
cin.ignore();

string codigo[quantidade];
string nome[quantidade];

cout<<"\n\nAgora, digite o codigo e o nome das disciplinas:\n";
for(i = 0; i < quantidade; i++)
{
cout<<"\n\nCodigo da disciplina "<<i+1<<": ";
getline(cin, codigo[i]);

cout<<"\nNome da disciplina "<<i+1<<": ";
getline(cin, nome[i]);
}

cout<<"\n\nComo sao "<<quantidade<<" disciplinas, temos:\n\n";

for(i=0; i<quantidade; i++)
cout<<codigo[i]<<" - "<<nome[i]<<"\n";

return 0;
}

[]'s

LNW

Compartilhar este post


Link para o post
Compartilhar em outros sites


#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

int main()
{
int quantidade;
int i;
int j;[B][COLOR="blue"]//Esta variável não é necessária[/B][/COLOR]

cout<<"Digite a quantidade \n";
cin>>quantidade;

string codigo[quantidade];
string nome[quantidade];

cout<<"Digite o codigo das disciplinas \n";
for(i=0;i<quantidade;i++){
cin>>codigo[i];
}
cout<<"Agora os nomes \n";
for(i=0;i<quantidade;i++){
cin>>nome[i];[B][COLOR="blue"]//Usei a mesma lógica usada por você no "for" de cima[/B][/COLOR]
}

cout<<"Como sao "<<quantidade<<" disciplinas temos \n";
for(i=0;i<quantidade;i++)
[B][COLOR="Blue"] //sem usar a variável "j"[/COLOR][/B]
cout<<codigo[i]<<"-"<<nome[i]<<"\n";

system("pause");
return 0;
}


Se não for esse o problema é só me avisar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

int main()
{
int quantidade;
int i;
int j;[B][COLOR="blue"]//Esta variável não é necessária[/B][/COLOR]

cout<<"Digite a quantidade \n";
cin>>quantidade;

string codigo[quantidade];
string nome[quantidade];

cout<<"Digite o codigo das disciplinas \n";
for(i=0;i<quantidade;i++){
cin>>codigo[i];
}
cout<<"Agora os nomes \n";
for(i=0;i<quantidade;i++){
cin>>nome[i];[B][COLOR="blue"]//Usei a mesma lógica usada por você no "for" de cima[/B][/COLOR]
}

cout<<"Como sao "<<quantidade<<" disciplinas temos \n";
for(i=0;i<quantidade;i++)
[B][COLOR="Blue"] //sem usar a variável "j"[/COLOR][/B]
cout<<codigo[i]<<"-"<<nome[i]<<"\n";

system("pause");
return 0;
}


Se não for esse o problema é só me avisar.

O código funcionou, a única coisa que tive que trocar foi:

 cin>>codigo[i]; // "pega" uma unica palavra

 getline(cin,codigo[i]);  //"pega" a frase completa

Obrigada pela ajuda!

dftaino,

Uma sequência de leitura de dados pelo teclado realmente é algo que às vezes pode confundir um pouco. Por aqui, é bastante comum esse tipo de dúvida. A função cin.ignore() foi necessária limpar o buffer de entrada, descartando o '\n' (newline).

#include <iostream>
#include <string>

using namespace std;

int main()
{
int quantidade;
int i;

cout<<"Digite a quantidade de disciplinas: ";
cin>>quantidade;
cin.ignore();

string codigo[quantidade];
string nome[quantidade];

cout<<"\n\nAgora, digite o codigo e o nome das disciplinas:\n";
for(i = 0; i < quantidade; i++)
{
cout<<"\n\nCodigo da disciplina "<<i+1<<": ";
getline(cin, codigo[i]);

cout<<"\nNome da disciplina "<<i+1<<": ";
getline(cin, nome[i]);
}

cout<<"\n\nComo sao "<<quantidade<<" disciplinas, temos:\n\n";

for(i=0; i<quantidade; i++)
cout<<codigo[i]<<" - "<<nome[i]<<"\n";

return 0;
}

[]'s

LNW

Realmente não sabia que isso poderia acontecer...

Obrigada por ambos, a informação e a resposta!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×