Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida em C


Arte no sistema

Pergunta

:ninja:

Tenho um probleminha com essa continuação pois o problem deve comparar 5 func e retornar em ordem alfabetica;

cod;

for (x=1; x <= 5;x++)

{

cont=0

if(strcmp(funcinario[x].nome,funcionario[x+1].nome) < 0)

cont=cont++;

não cosigo continuar esse codigo voces pode ajudar? o que faço pra listar os 5 funcionarios por ordem alfabetica...

Editado por Arte no sistema
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Supondo que os nomes dos funcionários estariam armazenado em um vetor de string, eu faria assim:

string lista [5] = {"nome1","nome2","nome3","nome4","nome5"};
for (int i = 0; i < 4; i++)  {
   for (int j = i+1; j < 5; j++)  {
         if ( lista[i] > lista[j] )  {
              string x = lista [i];
              lista [i] = lista[j];
              lista [j] = x;
         }
    }
}

Depois é só imprimir o vetor.

Editado por Rommel
Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe a falta de tempo para comentar ela corretamente e detalhar, mas é que estou no trabalho e meio enrolado!

Qualquer coisa é só postar a duvida

#include <cstdlib>
#include <iostream>
#include <list>     //List da biblioteca da STL

using namespace std;

//Estrutura de Funcionario
struct Funcionario
{
    char szNome[50];
    int  iCodigo;
};

//Funcao usada para a ordenacao
bool CompareNome(const Funcionario* a, const Funcionario* b)
{
    for(int i = 0; i < strcmp(a->szNome, b->szNome)?strlen(b->szNome):strlen(a->szNome); i++)
    {
        if(a->szNome[i] < b->szNome[i])
            return true;
        if(a->szNome[i] > b->szNome[i])
            return false;
    }
}


int main(int argc, char *argv[])
{
    //Inicializacao da Lista
    list<Funcionario*> *liFunc = new list<Funcionario*>;
    
    //Insercao de nomes aleatorios
    for(int i = 0; i < 10; i++)
    {
        Funcionario *NovoFunc = (Funcionario*)malloc(sizeof(Funcionario));
        strcpy(NovoFunc->szNome, "");
        for(int j = 0; j < rand()%50+1; j++)
            sprintf(NovoFunc->szNome, "%s%c", NovoFunc->szNome, rand()%23+65);
        NovoFunc->iCodigo = i;
        liFunc->push_front(NovoFunc);
    }
    
    //Ordenacao
    liFunc->sort(CompareNome);
    
    //Exibicao da lista ordenada
    for(int i = 0; i < 10; i++)
    {
        cout << liFunc->front()->szNome << endl;
        liFunc->pop_front();
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Abrass

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...