Necesito corrección de 2 funciones

secret
09 de Marzo del 2009
Buenas, he hecho un programa con el algoritmo de divide y venceras, pero al compilar me da errores en las funciones y nose como corregirlos. me podeis ayudar? Gracias

#include <iostream>
using namespace std;


void formarTabla(int tabla[][100], const int &primero, const int &ultimo);
void completarTabla(int tabla, int eqInf, int eqSup, int diaInf, int diaSup, int eqInic);

main (){

int ultimo=0, medio=0;

do{
cout<<"Introduzca el numero de jugadores"<<endl;
cin>>ultimo;

if (ultimo<=1)
cout<< "ERROR!! El número de jugadores debe ser mayor que 1"<<endl;

}while (ultimo<=1);

//dias=ultimo-1; fila=ultimo+1; colum=ultimo

//Declaracion de la tabla
int tabla[ultimo+1][ultimo];

//Dias
for (int i=0; i<=ultimo-1; i++)
tabla[0][i]=i;

//Jugadores
for (int j=1; j<=ultimo; j++)
tabla[j][0]=j;

//Inicializa la tabla a 0 para evitar errores
for (int f=1; f<ultimo+1; f++)
for (int c=1; c<ultimo; c++){
tabla[f][c]=0;
tabla[f][c]=0;
}



formarTabla(tabla,1,ultimo);


cout<<endl<<" Jugador t t Dia"<<endl<<endl;

//mostrar la tabla
for (int f1=0; f1<ultimo+1; f1++){
for (int c1=0; c1<ultimo; c1++)
cout<<"t "<<tabla[f1][c1];
cout<<endl<<endl;
}




cout<<ultimo<<endl;

system ("pause");
}



void formarTabla(int tabla[][100], const int &primero, const int & ultimo){

if (ultimo - primero ==1){ //caso base
cout<<"caso base"<<endl;

tabla[primero][1]= ultimo;
tabla[ultimo][1]= primero;
}
else { //caso recursivo

cout<<"caso recursivo"<<endl;
int medio=(primero+ultimo)/2;

/*primera subsolución: participantes de 1 a 2k-1*/
formarTabla(tabla,primero,medio);
/*segunda subsolución: participantes de 2k-1+1 a 2k*/
formarTabla(tabla,medio+1,ultimo);

/*completa la tabla de los participantes de la primera subsolución con los de la segunda*/
completarTabla(tabla, primero, medio, medio, ultimo-1, medio+1);
/*completa la tabla de los participantes de la segunda subsolución con los de la primera*/
completarTabla(tabla, medio+1, ultimo, medio, ultimo-1, primero);
}

}

void CompletarTabla(int tabla, int eqInf, int eqSup, int diaInf, int diaSup, int eqInic){

for (int j=diaInf; j <= diaSup; j++)
tabla[eqInf][j]= (eqInic + j - diaInf);


for (int i = eqInf + 1; i <= eqSup; i++) {
/*Intercambio de contrincante*/
tabla[i][diaInf] = tabla[i-1][diaSup]; //el último contrincante de i-1 es ahora el primer contrincante de i
for (int j = diaInf + 1; j <= diaSup; j++)
/*rotación de los contrincantes*/
tabla[i][j] = tabla[i-1][j-1]; //el contrincante de ayer de i-1, es el contrincante de hoy para i

}
}