Ir ao conteúdo

Posts recomendados

Postado

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. 

Postado

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.

Postado

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

Postado

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?

Postado

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

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