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:  
marcoctis

C++ Programação faculdade linguagem C++

Recommended Posts

bom dia, estou com uma dificuldade no programa que estou fazendo pois  tenho que lista os nomes digitados em ordem alfabética e com a quantidade de letras correspondente, só que se eu colocar avila , ávila, beatriz, maria das graças. na exibição vai ficar assim : avila, beatriz, maria, das graça, ávila . maria das graças foca separada como se fosse dois nomes diferentes. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem ver o código só posso sugerir que seja um problema em como você está lendo os dados digitados pelo usuário, está guardando cada palavra separadamente ao invés de guardar a frase inteira incluindo os espaços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@marcoctis Prefiro não baixar arquivos anexados. Poste como texto aqui no fórum (leia minha assinatura abaixo para ver como).

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

int main()
{
    //Criacao das variaveis
    int qtdNomes;
    int i, j;
    
    /*
        Área que o usuário entra com os dados
        endl: comando que pula linha
        cout <<: exibe texto na tela
        cin >> armazena o dado informado pelo teclado em uma variavel específica
    */
    cout << "Entre com a quantidade de nomes que deverao ser exibidos(entre 5 e 10):" << endl;
    cin >> qtdNomes;
    
    cout << "\n\n";
    
    //criação dos vetores necessários, o tamanho do vetor de nomes é baseado na quantidade desejada digitada pelo usuário logo acima
    char vetorNomes[qtdNomes][100], copia[100];
    
    //laço de repeticao para armazenamento dos nomes no vetor, de acordo com a quantidade digitada pelo usuário
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Informe o " << i + 1 << "o nome: ";
        cin >> vetorNomes;
    }
    
    //algoritmo de ordenação em ordem alfabética
    for(i = 0; i < (qtdNomes - 1); i++)
    {
        for(j = i + 1; j < qtdNomes; j++)
        {
            if(strcmp(vetorNomes, vetorNomes[j]) > 0) 
            {
                strcpy(copia, vetorNomes);
                strcpy(vetorNomes, vetorNomes[j]);
                strcpy(vetorNomes[j], copia);
            }
        }
    }
    
    cout << "\n";
    cout << "###############################\n";
    cout << "##### EXIBICAO DOS NOMES ######\n";
    cout << "###############################\n\n";
    
    /*
        laço de repetição para "Varrer" o vetor para apresentar os nomes digitados
        strlen: função que retorna a quantidade de letras de uma string
    */
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Nome: " << vetorNomes << " - " << strlen(vetorNomes) << " letras" << "\n";
    }
    
    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para o fórum [ i ] sem espaços é a tag para deixar o texto em itálico, então todos os [ i ] do seu código sumiram e o texto está em itálico a partir do primeiro lugar onde deveria estar um [ i ]. Para evitar que este tipo de problema aconteça use o botão < > Code para postar códigos no fórum, como mencionado na minha assinatura.

 

E o problema está aqui:

    //laço de repeticao para armazenamento dos nomes no vetor, de acordo com a quantidade digitada pelo usuário
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Informe o " << i + 1 << "o nome: ";
        cin >> vetorNomes;
    }

 

Mude para:

    //laço de repeticao para armazenamento dos nomes no vetor, de acordo com a quantidade digitada pelo usuário
    for(i = 0; i < qtdNomes; i++)
    {
        cout << "Informe o " << i + 1 << "o nome: ";
        cin.getline(vetorNomes[i], sizeof(vetorNomes[0])); // sizeof(vetorNomes[0]) = 100
    }

 

Para ler a linha inteira ao invés de 1 única palavra.

 

 

E tem algum motivo pelo qual você está usando vetor/matriz de char ao invés de string?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao  mas resolve muito obrigado pela ajuda

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo usando string:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string frase[2];
    
    getline(cin, frase[0]);
    getline(cin, frase[1]);
    
    cout << "\n";
    cout << frase[0] << "\n";
    cout << frase[1] << "\n";
    
    //Usando string pode fazer atribuição:
    frase[0] = frase[1];
    
    cout << frase[0] << endl;
    
    return 0;
}

Assim não fica limitado o número de caracteres e também pode fazer atribuição para copiar a string.

 

 

Eu também recomendo não misturar colocando essas bibliotecas do C em programas em C++:

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

Use os recursos do C++ quando programa em C++.

  • Curtir 1

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

×