Ir ao conteúdo
  • Cadastre-se

C ordenar meu programa usando um arquivo


n0v1sk

Posts recomendados

Boa tarde,

Estou com duvida no meu código, no qual estou lendo um arquivo .csv no meu programa e quero ordenar as colunas em ordem decrescente, em caso de empate da primeira coluna a segunda coluna terá que desempatar. Segue as imagens do meu código. (tentei usar o bubble sort para ordenar os vetores que está dentro da struct, mas não estou conseguindo).

 

#Aqui é a funçao de ordenaçao que criei.

void ordenaVetorDescrescentePetrobras(acaoPetr* vetorPetrobras[], int n)
{
      int i, j;
      acaoPetr aux;
      for(i = 0; i < n; i++)
      {
          for(j = 0; j < n-1-i; j++)
          {
             if( vetorPetrobras.tri1 < vetorPetrobras[j].tri1)
             {
                 //bloco aux recebe bloco i
                 strcpy(aux.nome, vetorPetrobras.nome);
                 aux.tri1 = vetorPetrobras.tri1;
                 aux.tri2 = vetorPetrobras.tri2;
                 
                 //bloco i recebe bloco j
                 strcpy(vetorPetrobras.nome, vetorPetrobras[j].nome);
                 vetorPetrobras.tri1 =  vetorPetrobras[j].tri1;
                 vetorPetrobras.tri2 = vetorPetrobras[j].tri2;
                 
                 //bloco j recebe bloco aux
                 strcpy((vetorPetrobras+ j)->nome, aux.nome);
                 vetorPetrobras[j].tri1 =  aux.tri1;
                 vetorPetrobras[j].tri2 = aux.tri2;
                 
             }else if( vetorPetrobras.tri1 == vetorPetrobras[j].tri1)
             {
                 if( vetorPetrobras.tri2 < vetorPetrobras[j].tri2)
                 {
                     //bloco aux recebe bloco i
                     strcpy(aux.nome, vetorPetrobras.nome;
                     aux.tri1 = vetorPetrobras.tri1;
                     aux.tri2 = vetorPetrobras.tri2;
                     
                     //bloco i recebe bloco j
                     strcpy(vetorPetrobras.nome, vetorPetrobras[j].nome);
                     vetorPetrobras.tri1 =  vetorPetrobras[j].tri1;
                     vetorPetrobras.tri2 = vetorPetrobras[j].tri2;
                     
                     //bloco j recebe bloco aux
                     strcpy(vetorPetrobras[j].nome, aux.nome);
                     vetorPetrobras[j].tri1 =  aux.tri1;
                     vetorPetrobras[j].tri2 = aux.tri2;
                 }
             }
          }    
      }    
}

#Aqui é o switch, no qual se o usuario digitar 1, ele optará por ordenar os campos.nome

int main(int argc, char *argv[]) {
    acaoPetr vetorPetrobras[LINHAS];
    acaoAbev vetorAmbev[LINHAS];
    acaoVale vetorVale[LINHAS];
    acaoBanco vetorBanco[LINHAS];
    int opcao;
    int opcaoTri;
    int codigoBalanco;
    int codigoTri;
    int triMin, triMax, campo1, campo2, i, ordem;
    int n;
    n = LINHAS;
    
    do{
        printf("\nBALANCO PATRIMONIAL -> PETROBRAS(PETR3) - AMBEV(ABEV3) - VALE(VALE3) - BANCO DO BRASIL(BBAS3)\n");
        printf("\nDigite suas opções:\n1 - Visualizar todos os balancos\n2 - Visualizar balanco unico\n3 - Visualizar balanco por trimestre\n4 - Sair\n->");
        scanf("%d", &opcao);
        
        if( opcao == 1)
        {
        printf("BALANCO PATRIMONIAL PETROBRAS\n");
        imprimeBalancoPetrobras(vetorPetrobras);
        printf("\n");
        printf("\nBALANCO PATRIMONIAL AMBEV\n");
        imprimeBalancoAmbev(vetorAmbev);
        printf("\n");
        printf("\nBALANCO PATRIMONIAL VALE\n");
        imprimeBalancoVale(vetorVale);
        printf("\n");
        printf("\nBALANCO PATRIMONIAL BANCO DO BRASIL\n");
        imprimeBalancoBanco(vetorBanco);
        }else if( opcao == 2)
        {
            printf("\n Escolha o codigo da empresa desejada, para visualizacao de seu balanco: ");
            printf("\n1 - PETR3\n2 - ABEV3\n3 - VALE3\n4 - BBAS3\n->");
            scanf("%d", &codigoBalanco);
            printf("\n Deseja visualiza-lo em ordem ?\n1 - SIM\n2 - NAO");
            scanf("%d", &ordem);
            switch(codigoBalanco)
            {
                case 1:    printf("BALANCO PATRIMONIAL PETROBRAS\n");
                        imprimeBalancoPetrobras(vetorPetrobras);
                        printf("\n\n");
                        if( ordem == 1)
                        {
                            ordenaVetorDescrescentePetrobras(vetorPetrobras[],n);
                            imprimeBalancoPetrobras(vetorPetrobras);
                        }
                        break;            
                
                case 2: printf("\nBALANCO PATRIMONIAL AMBEV\n");    
                        imprimeBalancoAmbev(vetorAmbev);
                        break;
                                
                case 3: printf("\nBALANCO PATRIMONIAL VALE\n");
                        imprimeBalancoVale(vetorVale);
                        break;
                                
                case 4: printf("\nBALANCO PATRIMONIAL BANCO DO BRASIL\n");    
                        imprimeBalancoBanco(vetorBanco);
                        break;
                                
                default:    
                        printf("\n Codigo inexistente, favor redigita-lo corretamente.");
            }
        }

 

#Aqui é a execução, no qual aparece meu balanço de ações, no qual quero ordenar do campo de maior valor para o de menor valor em todas as colunas.

2w1v3h4.jpg

 

 

#Aqui está a struct que eu criei para o arquivo

11h53sz

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!