Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
  • Autor do tópico

  • #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






    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

    ×