#include double mesmalinhac(int len) { FILE* dados; double inicial[len]; double final[len]; int k1 = 8000; int k2 = 100; double linha[k1][k2][2]; double parametro = 0.00000000000002; int n=0; int check=0; int count_bif; int found; FILE *flog = fopen("log.txt", "w"); dados = fopen("data.txt", "r"); for (int i = 0; i < len; ++i) { fscanf(dados,"%lf %lf",&inicial[i],&final[i]); //armazena os dados na Matriz point } for (int loop = 0; loop < len; ++loop) { fprintf(flog,"começo %1.15f", inicial[loop]); if (0.04252306640625 == inicial[loop]) { fprintf(flog," OLHA ELEE"); } // LINHA NOVA found = 0; check = n; for (int c = 0; c < len; ++c) { if (inicial[loop] == final[c]) // if found == 0 nao tem inicial em finais { found ++; break; } } for (int i = 0; i < len; ++i) // nova linha { if (final[loop] == inicial[i] && found <1) { linha[n][0][0] = inicial[loop]; linha[n][0][1] = final[loop]; ++n; break; } } if (n> check) { fprintf(flog," Nova\n"); continue; } // BIFURCAÇÃO: count_bif = 0; for (int i = 0; i < k1; ++i) { for (int j = 0; j < k2; ++j) { if (inicial[loop] == linha[i][j][0]) count_bif ++; } } if (count_bif > 0) { fprintf(flog," bif %1.15f\n", inicial[loop]); linha[n][0][0] = inicial[loop]; linha[n][0][1] = final[loop]; ++n; continue; } // LINHA JÁ EXISTENTE int flag =0; for (int i = 0; i < k1; ++i) { for (int j = 0; j < k2; ++j) { if (inicial[loop] == linha[i][j][1]) { linha[i][j+1][0] = inicial[loop]; linha[i][j+1][1] = final[loop]; flag ++; fprintf(flog," ENTRO em %1.15f\n",linha[i][0][0]); break; } } if (flag>0) break; } } fclose(flog); //saida FILE *fp = fopen("dados_out.txt", "w"); fprintf(fp, "["); for (int i = 0; i < len; ++i) { if (linha[i][0][1] > parametro && linha[i][0][0] > parametro) fprintf(fp, "["); for (int j = 0; j < len; ++j) { if (linha[i][j][1] > parametro && linha[i][j][0] > parametro) fprintf(fp, "[%1.15f, %1.15f],", linha[i][j][0],linha[i][j][1]); } if (linha[i][0][1] > parametro && linha[i][0][0] > parametro) fprintf(fp, "],"); } fprintf(fp, "]"); fclose(fp); return 0; }