-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmejoresjugadas.cpp
86 lines (70 loc) · 1.71 KB
/
mejoresjugadas.cpp
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
#include "mejoresJugadas.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdio.h>
#include "constants.h"
using namespace std;
// tomar información de un archivo y ordenarlo mediante listas
void mejoresJugadas()
{
nodo *lista = NULL;
FILE *f = fopen("JUGADAS.dat", "r+");
Info a;
while (fread(&a, sizeof(Info), 1, f))
{
insertarOrdenado(lista, a); // genera ranking total
}
fclose(f);
mostrarTop3(lista);
}
nodo *insertarOrdenado(nodo *&lista, Info info)
{
// armo el nodo con la info
nodo *p = new nodo();
p->dato = info;
p->sig = NULL;
// primeras dos situaciones
if (lista == NULL || info.puntaje > lista->dato.puntaje)
{
p->sig = lista;
lista = p;
}
// los otros dos casos
else
{
nodo *q = lista;
while (q->sig != NULL && q->sig->dato.puntaje > info.puntaje)
{
q = q->sig;
}
if (q->sig == NULL) // NO HAY OTRO ADELANTE
{
q->sig = p;
}
else if (q->sig->dato.puntaje >= info.puntaje) // MENOR O IGUAL
{
p->sig = q->sig;
q->sig = p;
}
else
{ // ES MAYOR
p->sig = q->sig;
q->sig = p;
}
}
}
void mostrarTop3(nodo *&lista)
{
nodo *actual = lista;
int i = 0;
while (actual != NULL && i < 3)
{
cout << "jugador con el puesto " << i + 1 << " historico es: " << endl;
cout << "Nombre: " << actual->dato.nombre_jugador << endl;
cout << "El dia: " << actual->dato.fecha << endl;
cout << "Con el puntaje: " << actual->dato.puntaje << endl;
i++;
actual = actual->sig;
}
}