Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MAN_ en 21 Abril 2015, 23:00 pm



Título: problemas con programa c
Publicado por: MAN_ en 21 Abril 2015, 23:00 pm
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;
}


Título: Re: problemas con programa c
Publicado por: DarK_FirefoX en 21 Abril 2015, 23:24 pm
El problema está que el ciclo for está asi:

Código
  1.   for (k = 1 ; k == numTables ; k++)
  2.    {
  3.      scanf("%d", &censusTable);
  4.      nCensus = nCensus + censusTable;
  5.      scanf("%d", &votersTable);  
  6.      nVotes = nVotes + votersTable;
  7.    }
  8.  

Si te das cuenta tienes la condición:

Código
  1. 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
  1. k <= numTables

Salu2s

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


Título: Re: problemas con programa c
Publicado por: MAN_ en 21 Abril 2015, 23:55 pm
Muchas gracias DarK!!!

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

Gracias otra vez!!!.