Ir ao conteúdo
  • Cadastre-se

willian gersanti

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Boa noite arfneto. Muito obrigado por ter respondido, como te disse conheço muito pouco de C, entendi o que disse, porém me desculpe mas não sei como fazer, vou ver se uso sua sugestão e encontro algo. Muito obrigado mesmo.
  2. Boa noite. Conheço bem pouco sobre linguagem C e estou precisando de ajuda, preciso de um programa escrito em c e usando o método InsertionSort que lê a exiba os dados ordenados pela primeira coluna. Já tentei quase tudo que encontrei na internet e não consegui. se puderem me ajudar ficarei muito grato. #include <stdio.h> #include <string.h> #include <locale.h> #define DELIMITADOR "," typedef struct { int Codigo ; char Fid[50]; char Empreendimento[150]; char Subeixo[10]; char Tipo[30]; char OrgaoResponsavel[50]; char Executar[150]; char UnidadeFederal[30]; char Municipio[300]; char Investimento[50]; char Observacao[50]; char Estagio[15]; char DataReferencia[10]; char Geometria[50]; } campos; int main() { setlocale(LC_ALL, ""); campos z[14]; campos *b[14]; char *campo; int i, j ,lin ,cont,row_count; char linha[600]; char *titulo[1500]; //Ler Arquivo FILE *arquivo; arquivo = fopen("geracao_energia.csv", "r"); if (arquivo == NULL){ printf("Não é possivel abrir o arquivo %s",arquivo); exit(1); } cont =0; row_count =0; while(fgets(linha, sizeof linha, arquivo) != NULL) { row_count++; // separa texto tabulados campo = strtok(linha, DELIMITADOR); while( campo != NULL ) { //Adiciona cada palavra no vetor titulo[i] = strdup(campo); campo = strtok(NULL, DELIMITADOR); i++; } i=0; // Incrementa a lista z[cont].Codigo, titulo[i],i++; strcpy(z[cont].Fid, titulo[i]),i++ ; strcpy(z[cont].Empreendimento, titulo[i] ),i++ ; strcpy(z[cont].Subeixo, titulo[i] ),i++ ; strcpy(z[cont].Tipo, titulo[i] ),i++ ; campo = strtok(NULL, DELIMITADOR),i++; } cont++; } /* Ordena os endereços nos ponteiros usando um simples algoritmo de ordenação por inserção (Insertion Sort): */ b[0] = &z[0]; for(i=1; i<3; i++){ for (j = i; j>0 && z[i].Codigo < (*b[j-1]).Codigo; j--){ b[j] = b[j-1]; } b[j] = &z[i]; } /*Então basta acessar os valores em sequência usando os ponteiros, mas observe que z não sofreu nenhuma alteração.*/ for(i=0; i<3; i++){ printf("%d ---> %s\n", (*b[i]).Codigo, (*b[i]).Fid); printf("%d ---> %s\n", (*b[i]).Codigo, (*b[i]).Empreendimento); printf("%d ---> %s\n", (*b[i]).Codigo, (*b[i]).Subeixo); printf("%d ---> %s\n", (*b[i]).Codigo, (*b[i]).Tipo); } return 0; } geracao_energia.csv

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