• Viernes 29 de Marzo de 2024, 08:20

Autor Tema:  falla programa!!!  (Leído 718 veces)

tomario

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
falla programa!!!
« en: Martes 9 de Noviembre de 2010, 20:12 »
0
hola hice un programa normal que calcula escanos y lo quiero simplificar usando funciones, punteros,etc, pero no se hacerlo he intentado lo siguiente, es la primera vez que uso funciones, espero q m puedan ayudar, gracias

codigo original, sin funciones:

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