Ir ao conteúdo
  • Cadastre-se

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


marcoctis

Posts recomendados

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. 

Link para o comentário
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;
}

Link para o comentário
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?

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

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