problemas con programa c

Iniciado por MAN_, 21 Abril 2015, 23:00 PM

0 Miembros y 1 Visitante están viendo este tema.

MAN_

Ante todo muy buenas a todos,soy nuevo por aquí y tengo un problema con este código.
Si alguien me pudiera echar una mano le estaría muy agradecido.

La compilación me da correcta pero no consigo que me de el resultado correcto y después de darle mil vueltas no veo donde esta el problema, a ver si alguien sabe donde esta el problema.
Se trata de un programa que leyendo la información por pantalla del resultado electoral de diversas mesas electorales te dice si la mesa en cuestión ha superado un porcentaje de participación dado al principio.
El problema es que solo me da bien el resultado si solo hay una mesa electoral pero si es mas de una me da cero.
Yo creo que el problema esta en el bucle for que no se porque  no me reconoce la variable donde se lee el números de mesas electorales que hay.
Vamos que en una entrada tal que <50.0 1 2 100 50 100 50 0> me tendría que dar <1 50.0 0>.No se si me he explicado bien,o si lo he liado mas... aquí os dejo el codigo.
Perdon por la chapa y gracias por anticipado.

#include <stdio.h>

#define ENDSEQ 0


int main(int argc, char **argv)

{   
int idElectionHeadquarters;
int k, numTables;
int censusTable, votersTable;
float participation, result;
int nVotes;
int nCensus;

scanf("%f", &participation);
scanf("%d", &idElectionHeadquarters);

while (idElectionHeadquarters != ENDSEQ)
{
   nCensus = 0;
   nVotes = 0;

   scanf("%d", &numTables);

   for (k = 1 ; k == numTables ; k++)
    {
      scanf("%d", &censusTable);
      nCensus = nCensus + censusTable;
      scanf("%d", &votersTable);   
      nVotes = nVotes + votersTable;
    }
    if (nCensus > 0)
    {
      result = ((float) nVotes / (float) nCensus) * 100.0;
      if (result >= participation)
            {
              printf("%d ", idElectionHeadquarters);
              printf ("%2.1f " , result);
            }
    }

    scanf("%d", &idElectionHeadquarters);
}
printf("%d", ENDSEQ);
return 0;
}

DarK_FirefoX

El problema está que el ciclo for está asi:

Código (cpp) [Seleccionar]

   for (k = 1 ; k == numTables ; k++)
    {
      scanf("%d", &censusTable);
      nCensus = nCensus + censusTable;
      scanf("%d", &votersTable);   
      nVotes = nVotes + votersTable;
    }


Si te das cuenta tienes la condición:

Código (cpp) [Seleccionar]
k == numTables

Por lo tanto, ese ciclo solo ejecutará una sola vez, y será cuando numTables sea igual a 1.

Creo que debería ser:

Código (cpp) [Seleccionar]
k <= numTables

Salu2s

PD: Utiliza las etiquetas GeSHi si vas a publicar código

MAN_

Muchas gracias DarK!!!

Efectivamente el error estaba ahi.Ahora me da el resultado perfectamente.

Gracias otra vez!!!.