Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - daz08

#1
Programación C/C++ / Ayuda con este programa
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.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
float por,pg;
int f,s,i,o,l,x,y,z,may,p,t,v,tv,sup[10],m,ng,mv1,mv2;
void impr(int **dc);
void cal(int **dc);
void gana(int **dc);
main()
{
   int **dc;
   
   printf("\n\tCuantos distritos son? ");
   scanf("%d",&f);
   printf("\n\tCuantos votantes son? ");
   scanf("%d",&v);
   printf("\n\tCuantos candidatos son? ");
   scanf("%d",&s);
   int sup[s];
   char ca[s][50];
   dc=(int **) malloc(f *sizeof(int *));
   for(i=0;i<f;i++)
      {
                   *(dc+i)=(int *) malloc(s *sizeof(int));
                   
      }
      for(i=0;i<s;i++)
      {
                      printf("\n\tIngrese el nombre del candidato %d: ",i+1);
                      scanf("%s",&ca[i]);
      }
     
     for(l=0;l<s;l++)
          {          
                     printf("\n\n");
                     for(o=0;o<f;o++)
                        {
                                     printf("\n\tCuantos votos tuvo el candidato %s en el distrito %d: ",*(ca+l),(o+1));
                                     scanf("%d",(*(dc+o)+l));
                        }
               
          }
      clrscr();
      printf("\n\n");
      gotoxy(30,3);printf("Candidatos");
     gotoxy(3,3);printf("Distrito");  
      x=15;
      for(i=0;i<s;i++)
         {
                   gotoxy(x,5);printf("%s",ca[i]);
                   x=x+15;
                 
         }
      impr(dc);
      cal(dc);
      printf("\n\n\n\n");
      printf("\tEl candidato mas votado es: %s con %d",ca[p],t);
      gana(dc);
      printf("\n\n\n\n");
      printf("\tEl Candidato ganador es: %s",ca[m]);
      printf("\n\n\n\n");
      system("pause");
}
void impr(int **dc)
{
   
    x=15;
    y=7;
    z=7;
    for(o=0;o<f;o++)
          {          
                     printf("\n");
                     gotoxy(5,z);printf("%d",o+1);
                     z=z+2;
                     for(l=0;l<s;l++)
                        {  
                                    gotoxy(x,y); printf("%d",*(*(dc+o)+l));
                                    x=x+15;
                        }
                        y=y+2;
                        x=15;
           }
}
void cal(int **dc)
{  
    for(l=0;l<s;l++)
                        {  
                                    sup[l]=0;
                        }
    for(o=0;o<s;o++)
          {    
                     for(l=0;l<f;l++)
                        {  
                                    sup[o]+=(*(*(dc+l)+o));
                        }
                         tv+=sup[o];
           }
    gotoxy(3,z);printf("Total");
    for(i=0;i<s;i++)
           {  
               gotoxy(x,y);printf("%d",sup[i]);
               x=x+15;
           }
    may=sup[0]; p=0;
    for(i=1;i<s;i++)
           {  
               if(sup[i]>may)
               {
                  may=sup[i];
                  p=i;
               }
           }
  t=sup[p];
  //printf("%d %d ",tv,v);
  por=(tv/v)*100; //aquí esta el problema
  printf("\n\n\n\n\tEl porcentaje de las personas que votaron: %.2f %",por);

}
void gana(int **dc)
{
    for(i=0;i<f;i++)
    {
            pg=(sup[i]/tv)*100;
            if(pg>50)
            {
                      m=i;
                      ng=1;
            }
    }
    if(ng==0)
    {   may=sup[0];
        mv1=0;
        for(l=1;l<f;l++)
        {
             if(sup[l]>may)
             {
                 may=sup[l];
                 mv1=l;
             }
         }        
    }
}
#2
Buenos días, tengo este programa de estructuras con arreglos en C hecho en dev-c++. No me salen errores, pero al ejecutarlo no corre después de un punto y se cierra:
#include <stdio.h>
#include <string.h>
#include<conio.h>
struct fecha
{
      int dia, mes, anyo;
};
typedef struct
{
      char nombre[30], sexo[5];
      fecha nacimiento;
      float sueldo;
     
}empleados;
int i,p,d,m,a;
float may, men;
char nbr[30], sx[5];
void laf ();
main()
{
     printf("Cuantos empleados son? ");
     scanf("%d", p);
     empleados n[p];
     
   
   for(i=1;i<=p;i++)
     {
          printf("\nEcriba el nombre del empleado %d :",i);
          scanf("%s",&n.nombre);
          printf("\nEscriba su fecha de nacimiento:");
          printf("\nDia: ");
          scanf("%d",&n.nacimiento.dia);
          printf("\nMes: ");
          scanf("%d",&n.nacimiento.mes);
          printf("\nAnyo: ");
          scanf("%d",&n.nacimiento.anyo);
          printf("\nEscriba su sexo (f/m): ");
          scanf("%s",&n.sexo);
          printf("\nEscriba su sueldo: ");
          scanf("%f",&n.sueldo);
     }
laf ();
getch();
}
void  laf ()
{    empleados n[p];
    may=n[1].sueldo;
    for(i=1;i<=p;i++)
    {
         if(n.sueldo>may)
           {
                            may=n.sueldo;
                            strcpy(nbr,n.nombre);
                            d=n.nacimiento.dia;
                            m=n.nacimiento.mes;
                            a=n.nacimiento.anyo;
                            strcpy(sx,n.sexo);
           }
    }
    printf("\nEmpleado con mayor sueldo:\n\n ");
    printf("\nNombre: %s ",nbr);
    printf("\nFecha de nacimiento: ");
    printf("\nDia: %d ",d);
    printf("\nMes: %d ",m);
    printf("\nAnyo: %d ",a);
    printf("\nSexo: %s",sx);
    printf("\nSueldo: %f",may);
   
   
    men=n[1].sueldo;
    for(i=1;i<=p;i++)
    {
         if(n.sueldo<men)
           {
                            men=n.sueldo;
                            strcpy(nbr,n.nombre);
                            d=n.nacimiento.dia;
                            m=n.nacimiento.mes;
                            a=n.nacimiento.anyo;
                            strcpy(sx,n.sexo);
           }
    }
     printf("\nEmpleado con menor sueldo:\n\n ");
    printf("\nNombre: %s ",nbr);
    printf("\nFecha de nacimiento: ");
    printf("\nDia: %d ",d);
    printf("\nMes: %d ",m);
    printf("\nAnyo: %d ",a);
    printf("\nSexo: %s",sx);
}
El problema está en que se pare después de ingresar la cantidad de empleados.
Agradecería cualquier sugerencia...