elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con este programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con este programa  (Leído 1,949 veces)
daz08

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Ayuda con este programa
« en: 4 Diciembre 2014, 16:01 pm »

Hola, tengo el problema que la variable por me arroja cero siempre, les dejo el código, podría ser una tontería, pero estoy en semestrales y entre tanto no veo el problema.

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<conio.h>
  5. float por,pg;
  6. int f,s,i,o,l,x,y,z,may,p,t,v,tv,sup[10],m,ng,mv1,mv2;
  7. void impr(int **dc);
  8. void cal(int **dc);
  9. void gana(int **dc);
  10. main()
  11. {
  12.    int **dc;
  13.  
  14.    printf("\n\tCuantos distritos son? ");
  15.    scanf("%d",&f);
  16.    printf("\n\tCuantos votantes son? ");
  17.    scanf("%d",&v);
  18.    printf("\n\tCuantos candidatos son? ");
  19.    scanf("%d",&s);
  20.    int sup[s];
  21.    char ca[s][50];
  22.    dc=(int **) malloc(f *sizeof(int *));
  23.    for(i=0;i<f;i++)
  24.       {
  25.                    *(dc+i)=(int *) malloc(s *sizeof(int));
  26.  
  27.       }
  28.       for(i=0;i<s;i++)
  29.       {
  30.                       printf("\n\tIngrese el nombre del candidato %d: ",i+1);
  31.                       scanf("%s",&ca[i]);
  32.       }
  33.  
  34.      for(l=0;l<s;l++)
  35.           {          
  36.                      printf("\n\n");
  37.                      for(o=0;o<f;o++)
  38.                         {
  39.                                      printf("\n\tCuantos votos tuvo el candidato %s en el distrito %d: ",*(ca+l),(o+1));
  40.                                      scanf("%d",(*(dc+o)+l));
  41.                         }
  42.  
  43.           }
  44.       clrscr();
  45.       printf("\n\n");
  46.       gotoxy(30,3);printf("Candidatos");
  47.      gotoxy(3,3);printf("Distrito");  
  48.       x=15;
  49.       for(i=0;i<s;i++)
  50.          {
  51.                    gotoxy(x,5);printf("%s",ca[i]);
  52.                    x=x+15;
  53.  
  54.          }
  55.       impr(dc);
  56.       cal(dc);
  57.       printf("\n\n\n\n");
  58.       printf("\tEl candidato mas votado es: %s con %d",ca[p],t);
  59.       gana(dc);
  60.       printf("\n\n\n\n");
  61.       printf("\tEl Candidato ganador es: %s",ca[m]);
  62.       printf("\n\n\n\n");
  63.       system("pause");
  64. }
  65. void impr(int **dc)
  66. {
  67.  
  68.     x=15;
  69.     y=7;
  70.     z=7;
  71.     for(o=0;o<f;o++)
  72.           {          
  73.                      printf("\n");
  74.                      gotoxy(5,z);printf("%d",o+1);
  75.                      z=z+2;
  76.                      for(l=0;l<s;l++)
  77.                         {  
  78.                                     gotoxy(x,y); printf("%d",*(*(dc+o)+l));
  79.                                     x=x+15;
  80.                         }
  81.                         y=y+2;
  82.                         x=15;
  83.            }
  84. }
  85. void cal(int **dc)
  86. {  
  87.     for(l=0;l<s;l++)
  88.                         {  
  89.                                     sup[l]=0;
  90.                         }
  91.     for(o=0;o<s;o++)
  92.           {    
  93.                      for(l=0;l<f;l++)
  94.                         {  
  95.                                     sup[o]+=(*(*(dc+l)+o));
  96.                         }
  97.                          tv+=sup[o];
  98.            }
  99.     gotoxy(3,z);printf("Total");
  100.     for(i=0;i<s;i++)
  101.            {  
  102.                gotoxy(x,y);printf("%d",sup[i]);
  103.                x=x+15;
  104.            }
  105.     may=sup[0]; p=0;
  106.     for(i=1;i<s;i++)
  107.            {  
  108.                if(sup[i]>may)
  109.                {
  110.                   may=sup[i];
  111.                   p=i;
  112.                }
  113.            }
  114.   t=sup[p];
  115.   //printf("%d %d ",tv,v);
  116.   por=(tv/v)*100; //aquí esta el problema
  117.   printf("\n\n\n\n\tEl porcentaje de las personas que votaron: %.2f %",por);
  118.  
  119. }
  120. void gana(int **dc)
  121. {
  122.     for(i=0;i<f;i++)
  123.     {
  124.             pg=(sup[i]/tv)*100;
  125.             if(pg>50)
  126.             {
  127.                       m=i;
  128.                       ng=1;
  129.             }
  130.     }
  131.     if(ng==0)
  132.     {   may=sup[0];
  133.         mv1=0;
  134.         for(l=1;l<f;l++)
  135.         {
  136.              if(sup[l]>may)
  137.              {
  138.                  may=sup[l];
  139.                  mv1=l;
  140.              }
  141.          }        
  142.     }
  143. }


« Última modificación: 4 Diciembre 2014, 16:09 pm por Eternal Idol » En línea

Kherom

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: Ayuda con este programa
« Respuesta #1 en: 5 Diciembre 2014, 00:21 am »

1: Tu código es una chapuza ilegible.

2: No deberías usar variables globales, y menos con nombres de *****.

3: Da la información del fallo en el texto, no en un comentario que he visto de pura casualidad. Y explica antes qué has hecho para intentar solucionarlo, etc.

4: Estás usando C: tv/v, siendo tv y v de tipo int, es una división entera y produce valores enteros. Tienes que hacer un casting a float de alguna de las dos variables (preferiblemente ambas) para realizar una división con decimales. Tal que así:

Citar
por = (float)( tv ) / (float)( v );


« Última modificación: 5 Diciembre 2014, 00:23 am por Kherom » En línea

daz08

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Ayuda con este programa
« Respuesta #2 en: 5 Diciembre 2014, 01:14 am »

1: Tu código es una chapuza ilegible.

2: No deberías usar variables globales, y menos con nombres de *****.

3: Da la información del fallo en el texto, no en un comentario que he visto de pura casualidad. Y explica antes qué has hecho para intentar solucionarlo, etc.

4: Estás usando C: tv/v, siendo tv y v de tipo int, es una división entera y produce valores enteros. Tienes que hacer un casting a float de alguna de las dos variables (preferiblemente ambas) para realizar una división con decimales. Tal que así:

Gracias por la ayuda, en comparación a ti, no te contestaré con aires de grandeza ni nada. Solo diré gracias: Gracias, Bill Gates.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda con este programa
« Respuesta #3 en: 5 Diciembre 2014, 03:06 am »

Hola, tengo el problema que la variable por me arroja cero siempre, les dejo el código, podría ser una tontería, pero estoy en semestrales y entre tanto no veo el problema.

Código
  1.   por=(tv/v)*100; //aquí esta el problema
  2.   printf("\n\n\n\n\tEl porcentaje de las personas que votaron: %.2f %",por);
  3.  

O en vez del explícito cast sencillamente multiplica uno de los enteros por 1. :


 
Citar
  (
    (1.*
tv/v)*100; //ya no esta aquí esta el problema
    printf("\n\n\n\n\tEl porcentaje de las personas que votaron: %.2f %",por);



¡¡¡¡ Saluditos! ..... !!!!


« Última modificación: 5 Diciembre 2014, 03:08 am por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con este programa
Programación C/C++
daxelmejor 1 2,390 Último mensaje 13 Mayo 2010, 16:00 pm
por Akai
Ayuda con este programa en C++
Programación C/C++
miguelb18 1 2,204 Último mensaje 25 Agosto 2010, 17:23 pm
por Littlehorse
Ayuda con este programa
Programación C/C++
nosotros12 1 2,094 Último mensaje 18 Noviembre 2011, 09:06 am
por s00rk
ayuda con este programa
Dudas Generales
ZXILER 1 2,634 Último mensaje 16 Marzo 2012, 23:16 pm
por Aprendiz-Oscuro
ayuda con este programa
Java
hairam 2 2,164 Último mensaje 9 Julio 2012, 20:56 pm
por rommel89
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines