Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/11/2010, 12:56
tommylej
 
Fecha de Ingreso: noviembre-2010
Mensajes: 15
Antigüedad: 14 años, 2 meses
Puntos: 0
problema con funciones

hola hice este programa, y despues lo quise hacer con funciones, pero siempre me da fallos, soy nuevo manejando funciones, si alguien me puede ayudar, muchas gracias

codigo original:
Código C:
Ver original
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. main()
  6. {
  7.    
  8.     int partidos=0;
  9.        
  10.     printf("\n\n Bienvenido al sistema de calculo de escanos.\n por favor siga las instrucciones, gracias\n");
  11.  
  12.     while ( partidos <2 || partidos>16){
  13.         printf("\n eliga el numero de partidos politicos que desea (numero entre 2 y 16)\t");
  14.         scanf("%d",&partidos);
  15.     }
  16.     /*system('clear');*/
  17.     int mpartidos[17][50];
  18.    
  19.     float votos;
  20.    
  21.     int i;
  22.     int f;
  23.     int c;
  24.    
  25.     for (f=0;f<partidos;f++){
  26.         for (c=0;c<50;c++){
  27.  
  28.             mpartidos[f][c]=0;
  29.         }
  30.     }
  31.     int escanos=0;
  32.         while (escanos<7 || escanos>100){
  33.         printf("\n numero de escanos:(numero entre 7 y 100)\t");
  34.         scanf("%d",&escanos);
  35.     }
  36.     /*system('clear');*/
  37.     int a=0;
  38.     printf("\n A continuacion meta los votos recibidos por cada partido:\n");
  39.     for (i=0;i<partidos;i++){
  40.         a=i+1;
  41.         printf("\n partido(%d)=\t",a);
  42.         scanf("%f",&votos);
  43.         mpartidos[i][0]=votos;
  44.     }
  45.    
  46.     printf("\n\n Ahora el programa calculara los escanos segun este  metodo:\n \n D'HONT \n \n ");
  47.      
  48.      int TAM=100;
  49.    
  50.     /*METODO DHONT*/
  51.     float mdhont[17][1000];
  52.     float aq;
  53.     int fil;
  54.     int col;
  55.     float cl;
  56.     for (fil=0;fil<partidos;fil++){
  57.         cl=0;
  58.         for (col=0;col<TAM;col++){
  59.             aq=(mpartidos[fil][0])/(cl+1);
  60.             mdhont[fil][col]=(aq);
  61.             cl++;
  62.         }
  63.         printf("\n");
  64.     }
  65.     printf("\n");
  66.    
  67.    
  68.     float mx=0;
  69.     int aa,bb;
  70.     for(i=0;i<escanos;i++){
  71.         for (fil=0;fil<partidos;fil++){
  72.             for (col=0;col<TAM;col++){
  73.                 if (mdhont[fil][col]>mx){
  74.                     mx=mdhont[fil][col];
  75.                     aa=fil;
  76.                     bb=col;
  77.                 }
  78.             }
  79.         }
  80.         mdhont[aa][bb]=0;
  81.        
  82.         mx=0;
  83.         mpartidos[aa][1]=mpartidos[aa][1]+1;
  84.     }
  85.            
  86.     /*system("clear");*/
  87.    
  88.     /*fin metodo DHONT*/
  89.    
  90.     /*system("clear");*/
  91.     printf("\n\t\tDHONT \n");
  92.     int z;
  93.     for (i=0; i<partidos; i++) {
  94.                     z=i+1;
  95.                     printf("\n partido%d \t%d  n",z,mpartidos[i][1]);
  96.                 }
  97.    
  98.    
  99.     printf("\n");
  100. }
CODIGO CON FUNCIONES:----------------------------------------------------------------------------------------
Código C:
Ver original
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5.     void traspaso(float *metodo1,float aux,int p,int T){
  6.    
  7.         int fil;
  8.         int col;
  9.         float cl=0;
  10.         for (fil=0;fil<p;fil++){
  11.             cl=0;
  12.             for (col=0;col<T;col++){
  13.                 *metodo1=(aux);
  14.                 cl++;
  15.             }
  16.             printf("\n");
  17.         }
  18.     return ;
  19.     }
  20.    
  21.     void max_escans(float *metodo2,float mpart,int esca,int p,int T){
  22.         int fil;
  23.         int col;
  24.         int i;
  25.         float mx=0;
  26.         int aa,bb;
  27.         for(i=0;i<esca;i++){
  28.             for (fil=0;fil<p;fil++){
  29.                 for (col=0;col<T;col++){
  30.                     if (*metodo2>mx){
  31.                         mx=*metodo2;
  32.                         aa=fil;
  33.                         bb=col;
  34.                     }
  35.                 }
  36.             }
  37.             metodo2=0;
  38.        
  39.             mx=0;
  40.             mpart=mpart+1;
  41.         }
  42.    
  43.     }
  44.    
  45. main()
  46. {
  47.     int partidos=0;
  48.     printf("\n\n Bienvenido al sistema de calculo de escanos.\n por favor siga las instrucciones, gracias\n");
  49.  
  50.     while ( partidos <2 || partidos>16){
  51.         printf("\n eliga el numero de partidos politicos que desea (numero entre 2 y 16)\t");
  52.         scanf("%d",&partidos);
  53.     }
  54.     /*system('clear');*/
  55.     int mpartidos[17][50];
  56.     float votos;
  57.     int i;
  58.     int f;
  59.     int c;
  60.    
  61.     for (f=0;f<partidos;f++){
  62.         for (c=0;c<50;c++){
  63.             mpartidos[f][c]=0;
  64.         }
  65.     }
  66.     int escanos=0;
  67.         while (escanos<7 || escanos>100){
  68.         printf("\n numero de escanos:(numero entre 7 y 100)\t");
  69.         scanf("%d",&escanos);
  70.     }
  71.     /*system('clear');*/
  72.     int a=0;
  73.     printf("\n A continuacion meta los votos recibidos por cada partido:\n");
  74.     for (i=0;i<partidos;i++){
  75.         a=i+1;
  76.         printf("\n partido(%d)=\t",a);
  77.         scanf("%f",&votos);
  78.         mpartidos[i][0]=votos;
  79.     }
  80.     printf("\n\n Ahora el programa calculara los escanos segun este  metodo:\n \n  D'HONT \n \n ");
  81.      
  82.      int TAM=100;
  83.     /*METODO DHONT*/
  84.     float mdhont[17][1000];
  85.     float cl;
  86.     float aux1;
  87.     int fil;
  88.     int col;
  89.     int aa;
  90.     int cc;
  91.     cc=1;
  92.     aux1=(mpartidos[fil][0])/(cl+1);
  93.     traspaso(*mdhont,aux1,partidos,TAM);
  94.     printf("\n");
  95.     max_escans(*mdhont,mpartidos[aa][cc],escanos,partidos,TAM);
  96.    
  97.     /*system("clear");*/
  98.    
  99.     /*fin metodo DHONT*/
  100.     /*system("clear");*/
  101.    
  102.     int z;
  103.     for (i=0; i<partidos; i++) {
  104.                     z=i+1;
  105.                     printf("\n partido%d  %d",z,mpartidos[i][1]);
  106.                 }
  107.    
  108.    
  109.     printf("\n");
  110. }
GRACIAS!!!!

Última edición por tommylej; 10/11/2010 a las 08:04