Ir ao conteúdo

Aislan_R

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

0
  1. @arfneto Estou lendo sobre essa função , achei muito boa, até entendendo ela em alguns exemplos além do que você colocou, para inserir ela no programa, porém ainda está meio complicado.
  2. @arfneto Muito obrigado, porém a função qsort() não é o que eu preciso, pois tenho que implementar o MERGESORT. Mas no teu ultimo comentário entendi melhor.
  3. @arfneto Olá, obrigado pela explicação, o strtok() foi o único jeito que eu achei na hora de fazer e armazenar os valores. Mas eu não tenho muita noção de como implementar isso que você falou da struct, e meu problema é ordenar a struct pela primeira coluna que seria o dado int ideTipoEmpreendimentoOperacao; da struct.
  4. @herbertbahia O arquivo CSV é o primeiro arquivo...
  5. Estou muito perdido na hora de passar a struct para a ordenação do MERGE e imprimir os dados da struct de forma cresente da variavel ( int ideTipoEmpreendimentoOperacao ). Gostaria de imprimir na tela o arquivo ordenado (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)... Arquivo lido... DESORD_10POS_11LIN.csv ideTipoEmpreendimentoOperacao,nomTipoEmpreendimento,sigEmpreendimento,qtdEmpreendimento,mdaPotenciaInstaladakW,mesReferencia,anoReferencia,dthProcessamento 10,Central Geradora Hidrelétrica,CGH,0,0.00,12,2001,13/09/2017 00:00:00 9,Central Geradora Hidrelétrica,CGH,144,78400.00,12,2002,13/09/2017 00:00:00 8,Central Geradora Hidrelétrica,CGH,159,86510.00,12,2003,13/09/2017 00:00:00 7,Central Geradora Hidrelétrica,CGH,171,90050.00,12,2004,13/09/2017 00:00:00 6,Central Geradora Hidrelétrica,CGH,188,99300.00,12,2005,13/09/2017 00:00:00 5,Central Geradora Hidrelétrica,CGH,202,106772.00,12,2006,13/09/2017 00:00:00 4,Central Geradora Hidrelétrica,CGH,215,112258.00,12,2007,13/09/2017 00:00:00 3,Central Geradora Hidrelétrica,CGH,276,153400.00,12,2008,13/09/2017 00:00:00 2,Central Geradora Hidrelétrica,CGH,307,173400.00,12,2009,13/09/2017 00:00:00 1,Central Geradora Hidrelétrica,CGH,327,186120.00,12,2010,13/09/2017 00:00:00 Meu código... #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> typedef struct TipoEmpreendimentoOperacao { int ideTipoEmpreendimentoOperacao; char nomTipoEmpreendimento[100]; char sigEmpreendimento[10]; int qtdEmpreendimento; float mdaPotenciaInstaladakW; int mesReferencia; int anoReferencia; char dthProcessamento[30]; }; struct TipoEmpreendimentoOperacao usinas[11]; int main(){ setlocale(LC_ALL, "Portuguese"); printf("Arqivo original\n"); imprimir(usinas, tam); merge(usinas,0,tam-1); imprimir(usinas, tam);*/ int tam = 11; FILE *arquivo = fopen("DESORD_10POS_11LIN.csv", "r"); if (!arquivo) { printf("Não é possível abrir o arquivo\n"); return 0; } char buf[1024]; int cont_linhas = 0; int contador = 0, it = 0; char trans_arq[1024]; while (fgets(buf, 1024, arquivo)) { contador = 0; cont_linhas++; if (cont_linhas == 1) { continue; } char *campo = strtok(buf, ","); while (campo) { if (contador == 0) {//int strcpy(trans_arq, campo); usinas[contador].ideTipoEmpreendimentoOperacao = atoi(trans_arq); } if (contador == 1) {//char strcpy(trans_arq, campo); strcpy(usinas[contador].nomTipoEmpreendimento, trans_arq); } if (contador == 2) {//char strcpy(trans_arq, campo); strcpy(usinas[contador].sigEmpreendimento, trans_arq); } if (contador == 3) {//int strcpy(trans_arq, campo); usinas[contador].qtdEmpreendimento = atoi(trans_arq); } if (contador == 4) {//float strcpy(trans_arq, campo); usinas[contador].mdaPotenciaInstaladakW = atof(trans_arq); } if (contador == 5) {//int strcpy(trans_arq, campo); usinas[contador].mesReferencia = atoi(trans_arq); } if (contador == 6) {//int strcpy(trans_arq, campo); usinas[contador].anoReferencia = atoi(trans_arq); } if (contador == 7) {//char strcpy(trans_arq, campo); strcpy(usinas[contador].dthProcessamento, trans_arq); } printf("Arqivo original\n"); imprimir(usinas[contador].ideTipoEmpreendimentoOperacao, tam); merge(usinas[contador].ideTipoEmpreendimentoOperacao,0,tam-1); imprimir(usinas[contador].ideTipoEmpreendimentoOperacao, tam); campo = strtok(NULL, ",");//separa o texto a cada virgula contador++; } } fclose(arquivo); return 0; } void intercala(int *x, int inicio, int fim, int meio){ int poslivre, inicio_v1, inicio_v2, i; int aux[fim]; inicio_v1 = inicio; inicio_v2 = meio+1; poslivre = inicio; while (inicio_v1 <= meio && inicio_v2 <= fim){ if (x[inicio_v1] <= x[inicio_v2]){ aux[poslivre] = x[inicio_v1]; inicio_v1 += 1; }else{ aux[poslivre] = x[inicio_v2]; inicio_v2 += 1; } poslivre++; } for (i = inicio_v1; i <= meio; i++){ aux[poslivre] = x[i]; poslivre++; } for (i = inicio_v2; i <= fim; i++){ aux[poslivre] = x[i]; poslivre++; } for (i = inicio; i <= fim; i++) x[i] = aux[i]; } void merge(int *x, int inicio, int fim){ int meio; if (inicio < fim){ meio = (inicio+fim)/2; merge(x,inicio,meio); merge(x,meio+1, fim); intercala(x,inicio, fim, meio); } } void imprimir(int *x , int n){ int i; for (i = 0; i < n; i++){ printf("%d ", x[i]); } printf("\n"); }

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!