Las funciones no deben terminar con ";"Esto sucede con la copia que has puesto de "LlenarVector", por ejemplo.
Estás programando en C++, no deberías usar los includes que acaben en ".h"Esas cabeceras son de C. Puedes cargar la cabecera propia de C++ poniendo el prefijo "C" y eliminando el ".h" ( #include <cmath> en vez de #include <math.h> )
Dado que estás programando en C++, sería más cómodo y seguro para tí usar la clase "string" en vez de "char*" para almacenar cadenas.int main( )
{
// Tu estás usando este tipo de variables
char* variable = "una prueba";
// Cuando puedes usar esta otra. Fíjate que no hace falta usar strncpy para copiar los valores.
std::string cadena = variable;
}
En C++ no hace falta usar "typedef" para declarar estructuras:struct Dato
{
int valor;
};
int main( )
{
Dato dato; // Funciona sin typedef
dato.valor = 10;
}
Los índices no los estás actualizando correctamente:void LlenarVector(Equipo vectorequipos[], int &i) { //usando la función dada "leerequipo" lleno el vector y devuelvo el tamaño.
FILE *archivo = fopen ("equipos.txt", "r");
char nombre[31];
int pA, pB;
while (leerEquipo(archivo, nombre, pA, pB))
{
vectorequipos[i].paramA = pA; //estos dos son parámetros usados para simular partidos, son enteros.
vectorequipos[i].paramB = pB;
strncpy(vectorequipos[i].nombre, nombre, 31);
i++;
vectorequipos[i].indice = i; // <<<< AQUI!!!
};
fclose (archivo);
}
Fíjate que en la línea anterior estás actualizando "i", luego la línea marcada está modificando el índice del siguiente registro.
Cuidado al inicializar los arreglos:void Aleatoriafecha(int l, int fechastotales, tipofixture *fixture){
srand(time(NULL));//Para que no repita en caso de fixture nuevo
int vec[fechastotales];
"fechastotales" es una variable. Esta forma de definir los arreglos no es estándar y puede darte problemas. Es más seguro crear un arreglo de tamaño fijo y más grande de lo necesario o recurrir a la memoria dinámica.
La función AleatoriaFecha no funcionaSi revisas el código, verás que "vec" únicamente va a contener un elemento SIEMPRE... en la función no hay ningún bucle.
La función "crearlista" no funcionavoid crearlista(tipofixture *fixture){ //creo listas
fixture=NULL;
};
En primer lugar, el nombre de la función no se corresponde con el funcionamiento teórico de la función, ya que no crea nada, en tal caso inicializa un puntero. En segundo lugar, esta función no hace ABSOLUTAMENTE NADA, "tipofixture", si bien es un puntero, es una variable local. Esto quiere decir que cualquier cambio que realices sobre el puntero en sí (ojo, no sobre la memoria "apuntada" ), es un cambio que va a desaparecer al salir el código de la función. Si tu idea es que el cambio del puntero se refleje fuera de la función tienes que usar un puntero doble:
void crearlista(tipofixture **fixture){ //creo listas
*fixture=NULL;
};
ResumenTu código tiene bastantes inconsistencias. Deberías revisarlo con más detenimiento.
Ah si, y sería de agradecer que, para la siguiente ocasión, el código que facilitas pueda ser compilado... no es demasiado agradable tener que deducir el funcionamiento de tu programa únicamente viendo líneas de código.
Un saludo