Muy buenas tardes a todos. Tengo entre manos una práctica de programación en C y estoy liado de cojones xD. No se ya ke meterle o kitarle pero nunca lo limpio de errores.
Se trata de un programa ke pide el número de escaños a repartir, el número votos del partido A y el de B, y despues reparte los escaños introducidos entre ambos segun la ley de Hont. Me dispongo a pegar el tocho:
#include <stdio.h>
#include <limits.h>
int votosA;
int votosB;
int escanostotal;
int esc1;
int esc2;
int escf;
int vofa;
int vofb;
int escanosmain;
int votosAmain;
int votosBmain;
int escanos;
int voA;
int voB;
int escanosA;
int escanosB;
int FuncionEscanos (int escf)
{
while (escf <= 0)
{
printf ("Numero de escanos introducidos incorrecto, vuelva a introducir escanos: ");
scanf ("%d" , &escf);
}
while (escf > INT_MAX)
{
printf ("Numero de escanos introducidos incorrecto, vuelva a introducir escanos: ");
scanf ("%d" , &escf);
}
return (escf);
}
int Funciona (int vofa)
{
while (vofa <= 0)
{
printf ("Numero de votos introducidos incorrecto, vuelva a introducir votos:");
scanf ("%d", &vofa);
}
while (vofa > INT_MAX)
{
printf ("Numero de votos introducidos incorrecto, vuelva a introducir votos:");
scanf ("%d", &vofa);
}
return (vofa);
}
int Funcionb (int vofb)
{
while (vofb <= 0)
{
printf ("Numero de votos introducidos incorrecto, vuelva a introducir votos:");
scanf ("%d", &vofb);
}
while (vofb > INT_MAX)
{
printf ("Numero de votos introducidos incorrecto, vuelva a introducir votos:");
scanf ("%d", &vofb);
}
return (vofb);
}
void Hont (int votosA, int votosB, int escanostotal, int &esc1, int &esc2)
{
int HontA;
int HontB;
int escHA;
int escHB;
escHA = 0;
escHB = 0;
[b]*esc1 = escHA;
*esc2 = escHB;[/b]
if ((votosA == 0) && (votosB > 0))
escHB = escanostotal;
else
if ((votosB == 0) && (votosA > 0))
escHA = escanostotal;
else
if ((votosA > 0) && (votosB > 0))
while ((escHA + escHB) > escanostotal)
{
HontA = ( (float)votosA ) / (escHA + 1);
HontB = ( (float)votosB ) / (escHB + 1);
if (HontA > HontB)
{
escHA++;
}
else
{
escHB++;
}
}
}
int main (void)
{
printf ("Introduzca el numero total de escanos:" );
scanf ("%d", &escanosmain);
escanos = FuncionEscanos (escf);
printf ("Introduzca el numero de votos del partido A:" );
scanf ("%d", &votosAmain);
voA = Funciona (vofa);
printf ("Introduzca el numero de votos del partido B:" );
scanf ("%d", &votosBmain);
voB = Funcionb (vofb);
Hont (voA, voB, escanos, &escanosA, &escanosB);
printf ("Los escanos pertenecientes al partido A son: %d", escanosA);
printf ("Los escanos pertenecientes al partido B son: %d", escanosB);
}[/i]
El compilador que uso es el GCC, y los errores y warnings de los ke me informa son los siguientes:
In Function 'FuncionEscanos':
warning: will never be executed
In Function 'Funciona':
warning: will never be executed
In Function 'Funcionb':
warning: will never be executed
At top level:
parse error before '&' token
In function Hont:
invalid type argument of 'unary *'
invalid type argument of 'unary *'
La linea de los errores marcados en la lista anterior en negrita están, asimismo, marcados en negrita en el código y en orden de aparición.
Ahora me tengo ke ir, volveré en una hora o así. A ver si podéis echarme un cable en lo ke veais erróneo ^. Muchas gracias