Skip to content

Commit 11e0bd6

Browse files
committed
Comparação quantidade de acessos 🚀
1 parent a0e04ac commit 11e0bd6

File tree

2 files changed

+14
-102
lines changed

2 files changed

+14
-102
lines changed

Diff for: dados.c

+13-101
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
FILE *fp;
88
int HashAcessos;
9-
int D[4817];
109

1110
void AbrirArquivo() {
1211
Dados Dado;
@@ -68,17 +67,17 @@ Dados Buscar(char Chave[]){
6867
int pos = id * sizeof(Dados);
6968
HashAcessos = 0;
7069
fseek(fp, pos, SEEK_SET);
71-
while(fread(&dados, sizeof(Dados), 1, fp) ) { // Lê o ponteiro da lista encadeada correspondente à posição hash
70+
while(fread(&dados, sizeof(Dados), 1, fp) ) {
7271
HashAcessos++;
7372
if (strncmp(dados.Title, Chave, strlen(Chave)) == 0) {
7473
return dados;
7574
}
76-
pos = dados.prox; // Avança para o próximo nó da lista
75+
pos = dados.prox;
7776
if(pos == 0) break;
7877
fseek(fp, pos, SEEK_SET);
7978
}
8079
strcpy(dados.Title, "");
81-
return dados; // Title vazio se não encontrou.
80+
return dados;
8281
}
8382

8483
int HashString(char str[]) {
@@ -97,7 +96,6 @@ void Imprimir(Dados D) {
9796
int ContOpcoes = 0, escolha = 0;
9897
do {
9998
Borda(0, 0, 118, 28, 1, 0);
100-
//Borda(15, 25, 90, 2, 0, 0);
10199
Borda(30, 1, 60, 2, 0, 0);
102100
Borda(18, 25, 25, 2, 0,0);
103101
Borda(75, 25, 25, 2, 0,0);
@@ -147,78 +145,32 @@ void TelaBBinaria(int chave) {
147145
Borda(12, 14, 25, 2, 0,0);
148146
Borda(82, 14, 25, 2, 0,0);
149147
GotoXY(20, 15); printf("%d Acessos", HashAcessos);
150-
GotoXY(90, 15); printf("%d Acessos", AcessoBinaria(4817, chave));
148+
GotoXY(90, 15); printf("%d Acessos", BuscaBinaria(4818, chave));
151149
GotoXY(20, 10);
152150
GotoXY(38, 26); system("PAUSE");
153151
}
154152

155-
/*int BuscaBinaria(int v[], int n, int x){
156-
int ini = 0, fim = n-1;
157-
while(ini <= fim){
158-
int meio = (ini + meio) / 2;
159-
if(x < v[meio]) fim = meio - 1;
160-
else if(x > v[meio]) ini = meio + 1;
161-
else return meio;
153+
int BuscaBinaria(int n, int x){
154+
int v[4818];
155+
for (int i = 0; i < 4818; i++){
156+
v[i] = i;
162157
}
163-
return -1;
164-
}*/
165-
166-
int AcessoBinaria(int n, int x){
167-
SalvarRank();
168-
int ini = 0, fim = n-1, cont = 1;
158+
int meio, ini = 0, fim = n-1, cont = 1;
169159
while(ini <= fim){
170-
int meio = (ini + meio) / 2;
171-
if(x < D[meio]){
160+
meio = (ini + fim) / 2;
161+
if(x < v[meio]){
172162
fim = meio - 1;
173163
cont++;
174164
}
175-
else if(x > D[meio]) {
165+
else if(x > v[meio]) {
176166
ini = meio + 1;
177167
cont++;
178168
}
179169
else return cont;
180170
}
171+
return -1;
181172
}
182173

183-
/*int BuscaBinaria(Dados D[], int n, char showId[])
184-
{
185-
int ini = 0, fim = n - 1, meio, acessos = 0;
186-
while (ini <= fim)
187-
{
188-
acessos++;
189-
meio = (ini + fim) / 2;
190-
191-
int comparacao = strcmp(showId, D[meio].Rank);
192-
193-
if (comparacao > 0)
194-
ini = meio + 1;
195-
else if (comparacao < 0)
196-
fim = meio - 1;
197-
else
198-
{
199-
printf("Acessos: %d\n", acessos);
200-
return meio;
201-
}
202-
}
203-
204-
//printf("Acessos: %d\n", acessos);
205-
return acessos;
206-
}*/
207-
208-
/*int AcessoBiQuant(int rank){
209-
Dados D;
210-
int v[4817], i = 0, cont = 0;
211-
FILE *fp = fopen("pldb.csv", "rb");
212-
fseek(fp, 0, SEEK_SET);
213-
while (fread(&D, sizeof(Dados), 1, fp)){
214-
v[i] = D.Rank;
215-
i++;
216-
}
217-
cont = AcessoBinaria(D, 4817, rank);
218-
fclose(fp);
219-
return cont;
220-
}*/
221-
222174
void LerArquivo() {
223175
char linha[100000], texto[100000];
224176
Dados LD;
@@ -289,44 +241,4 @@ void LerArquivo() {
289241
i++;
290242
}
291243
fclose (fporigin);
292-
}
293-
294-
void SalvarRank() {
295-
char linha[100000], texto[100000];
296-
int campo = 0, i = 0, j, tam, t, a, aspas;
297-
FILE *fporigin = fopen("pldb.csv", "r");
298-
if(fporigin == NULL) {
299-
printf("Nao abriu pldb.csv\n");
300-
exit(1);
301-
}
302-
fscanf (fporigin, " %[^\n]", linha);
303-
while (fscanf (fporigin, " %[^\n]", linha)!=EOF) {
304-
memset(&D, 0, sizeof(Dados));
305-
campo = 0;
306-
texto[0] = 0;
307-
tam = strlen(linha);
308-
for(t = 0; t < tam; t++) {
309-
a = 0;
310-
aspas = 0;
311-
while(linha[t] != ',' && t < tam) {
312-
texto[a++] = linha[t++];
313-
if(t > 0 && linha[t-1] == '\"') {
314-
a--;
315-
while(linha[t] != '\"' && t < tam) {
316-
texto[a++] = linha[t++];
317-
}
318-
t++;
319-
}
320-
}
321-
texto[a++] = 0;
322-
switch(campo) {
323-
case 4:
324-
D[i] = atoi (texto);
325-
break;
326-
}
327-
campo++;
328-
}
329-
i++;
330-
}
331-
fclose (fporigin);
332244
}

Diff for: dados.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ void FecharArquivo();
2222
void GravarArquivo(Dados D);
2323
int HashString(char str[]);
2424
Dados Buscar(char Chave[]);
25-
//Dados BuscaBinaria(int chave);
25+
int BuscaBinaria(int n, int chave);
2626
void TelaBBinaria();
2727
void Imprimir(Dados D);
2828
void LerArquivo();

0 commit comments

Comments
 (0)