mesmalinha.c 2.28 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <stdio.h>
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;
}