Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema Funciones

Estas en el tema de Problema Funciones en el foro de C/C++ en Foros del Web. Primero que nada me presento, soy estudiante de Ing. en Sistemas en primer año. Estamos viendo C con Dev C++. Recien aprendo esto en la ...
  #1 (permalink)  
Antiguo 04/06/2012, 17:26
 
Fecha de Ingreso: junio-2012
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
Problema Funciones

Primero que nada me presento, soy estudiante de Ing. en Sistemas en primer año. Estamos viendo C con Dev C++.

Recien aprendo esto en la facultad y logre todo exepto pasar los maximos y minimos. Lo hize en una función todo junto (maximo) pero me tira error.
Dejo el codigo aver si me pueden ayudar:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4.  
  5. //Void
  6. void Cantavend (int, int, int);
  7. void sucmax (int, float);
  8. void sucrecmenos (int, float);
  9. void gansuc(float, float, float, float, float);
  10. void porrec(float, float, float, float);
  11. void tickme(int, float);
  12. void Imprimir (int);
  13. void procav (float, float, float, float, float);
  14. void Suma (int*, int);
  15. void Suma2(float*, float);
  16. void maximo(int, float*, float, int*, float, float*, float, int*, int, int*, int, float*);
  17.  
  18. //Float
  19. float descuento (float a);
  20. float gsuca (float);
  21. float promedio (float, float);
  22. float promediotot (float, float);
  23.  
  24. int main ()
  25. {
  26.     int tick,ca,npel,nsuc,turno,catm,catn,catt,cont,tots1,tots2,tots3,tots4,tots5,pg,aux,aux2,aux3; //Variables Enteras
  27.     float pr,recp1,recp2,recp3,recp4,recs1,recs2,recs3,recs4,recs5,tickmin,gsuc1,gsuc2,gsuc3,gsuc4,gsuc5,totrecp,totfinal,prom1,prom2,prom3,prom4,proms1,proms2,proms3,proms4,proms5,pmaxr,sucminr; //Variables Flotantes
  28.     tick=ca=npel=nsuc=turno=catm=catn=catt=cont=tots1=tots2=tots3=tots4=tots5=pg=aux=aux2=aux3=0;
  29.     pr=recp1=recp2=recp3=recp4=recs1=recs2=recs3=recs4=recs5=tickmin=gsuc1=gsuc2=gsuc3=gsuc4=gsuc5=totrecp=totfinal=prom1=prom2=prom3=prom4=proms1=proms2=proms3=proms4=proms5=pmaxr=sucminr=0;
  30.     printf("Ingrese numero de ticket ");
  31.     scanf("%d",&tick);
  32.     while (tick!=0) //Comienzo del ciclo
  33.     {
  34.           printf("\nIngrese numero de sucursal ");
  35.           scanf("%d",&nsuc);
  36.           printf("\nIngrese cantidad de asientos ");
  37.           scanf("%d",&ca);
  38.           printf("\n1=Belleza americana \n2=El informante \n3=La hija del general \n4=Al filo de la muerte \n\nIngrese numero de pelicula ");
  39.           scanf("%d",&npel);
  40.           printf("\n1=Turno Mañana \n2=Turno Tarde \n3=Turno Noche \n\nIngrese numero de turno  ");
  41.           scanf("%d",&turno);
  42.          
  43.           if (ca > 8) //Verificar descuento
  44.           {
  45.                    pr=descuento(ca);
  46.           }
  47.           if (ca<=8)
  48.           {
  49.               pr=ca*7;
  50.           }
  51.          
  52.           switch (turno) //Categoría Turno
  53.           {
  54.                  case 1:Suma(&catm,ca);
  55.                  break;
  56.                  case 2:Suma(&catt, ca);
  57.                  break;
  58.                  case 3:Suma(&catn,ca);
  59.                  break;  
  60.           }
  61.          
  62.           switch (npel) //Categoría pelicula
  63.           {
  64.                  case 1:Suma2(&recp1,pr);
  65.                  break;
  66.                  case 2:Suma2(&recp2,pr);
  67.                  break;
  68.                  case 3:Suma2(&recp3,pr);
  69.                  break;
  70.                  case 4:Suma2(&recp4,pr);
  71.                  break;
  72.           }
  73.          
  74.           switch (nsuc) //Categoría numero de sucursal
  75.           {
  76.                  case 1:Suma2(&recs1,pr);
  77.                  Suma(&tots1,ca);
  78.                  break;  
  79.                  case 2:Suma2(&recs2,pr);
  80.                  Suma(&tots2,ca);
  81.                  break;
  82.                  case 3:Suma2(&recs3,pr);
  83.                  Suma(&tots3,ca);
  84.                  break;
  85.                  case 4:Suma2(&recs4,pr);
  86.                  Suma(&tots4,ca);
  87.                  break;
  88.                  case 5:Suma2(&recs5,pr);
  89.                  Suma(&tots5,ca);
  90.                  break;
  91.           }
  92.          
  93.           cont=cont+1;
  94.           maximo(cont, &pmaxr, recp1, &aux, npel, &tickmin, pr, &aux2, tick, &aux3, nsuc, &sucminr);
  95.          
  96.           if (turno == 2 && nsuc == 3 && npel == 2) //Pelicula 2, Sucursal 3, Turno Tarde
  97.           {
  98.                     Suma(&pg,ca);
  99.           }
  100.  
  101.           printf("\nIngrese numero de ticket ");
  102.           scanf("%d",&tick);
  103.     }
  104.    
  105.     // Fin del ciclo
  106.    
  107.     //Operaciones
  108.     gsuc1=gsuca(recs1);
  109.     gsuc2=gsuca(recs2);
  110.     gsuc3=gsuca(recs3);
  111.     gsuc4=gsuca(recs4);
  112.     gsuc5=gsuca(recs5);
  113.     totrecp=recp1+recp2+recp3+recp4;
  114.     prom1=promedio(recp1,totrecp);
  115.     prom2=promedio(recp2,totrecp);
  116.     prom3=promedio(recp3,totrecp);
  117.     prom4=promedio(recp4,totrecp);
  118.     totfinal=tots1+tots2+tots3+tots4+tots5;
  119.     proms1=promediotot(tots1,totfinal);
  120.     proms2=promediotot(tots2,totfinal);
  121.     proms3=promediotot(tots3,totfinal);
  122.     proms4=promediotot(tots4,totfinal);
  123.     proms5=promediotot(tots5,totfinal);
  124.    
  125.     //Resultados
  126.     Cantavend(catm,catt,catn);
  127.     sucmax(aux,pmaxr);
  128.     sucrecmenos(aux3,sucminr);
  129.     gansuc(gsuc1,gsuc2,gsuc3,gsuc4,gsuc5);
  130.     porrec(prom1,prom2,prom3,prom4);
  131.     tickme(aux2,tickmin);
  132.     Imprimir(pg);
  133.     procav(proms1,proms2,proms3,proms4,proms5);
  134.    
  135.    
  136.     getch();
  137.     return 0;
  138.    
  139. }
  140.  
  141. float descuento(float a)
  142. {
  143.       float b;
  144.       b=(a*7)*0.9;
  145.       return b;
  146. }
  147. float gsuca(float a)
  148. {
  149.       float b;
  150.       b=a*0.2;
  151.       return b;
  152. }
  153. float promedio(float a, float b)
  154. {
  155.       float c;
  156.       c=(a*100)/b;
  157.       return c;
  158. }
  159.      
  160. float promediotot (float a, float b)
  161. {
  162.       float c;
  163.       c=(a*100)/b;
  164.       return c;
  165. }
  166.      
  167.  
  168. void Cantavend (int a, int b, int c)
  169. {
  170.      printf("La cantidad de asientos vendidos en el turno mañana es %d,en el turno tarde %d, y en el noche %d \n\n",a,b,c);
  171. }
  172.  
  173. void sucmax (int a, float b)
  174. {
  175.      printf("La pelicula de mayor recaudacion es la nro %d, que recaudo %5.2f \n\n",a,b);
  176. }
  177.  
  178. void sucrecmenos (int a, float b)
  179. {
  180.      printf("La sucursal que recaudo menos fue la numero %d, con un total de %5.2f \n\n",a,b);
  181. }
  182.  
  183. void gansuc (float a, float b, float c, float d, float e)
  184. {
  185.      printf("Lo que gano cada sucursal es: \n1.%5.2f  \n2. %5.2f \n3.%5.2f \n4.%5.2f \n5.%5.2f \n\n",a,b,c,d,e);
  186. }
  187.  
  188. void porrec(float a, float b, float c, float d)
  189. {
  190.      printf("El porcentaje recaudado de cada pelicula sobre el total es: \n1. %5.2f \n2. %5.2f \n3. %5.2f \n4. %5.2f \n\n",a,b,c,d);
  191. }
  192.  
  193. void tickme (int a, float b)
  194. {
  195.      printf("El ticket de menor valor es el nro %d, con un valor de %5.2f \n\n",a,b);
  196. }
  197.  
  198. void Imprimir (int a)
  199. {
  200.      printf("La cantidad de asientos vendidos para la pelicula 2, la sucursal 3 y turno tarde es %d \n\n",a);
  201.  
  202. }
  203.  
  204. void procav (float a, float b, float c, float d, float e)
  205. {
  206.      printf("El promedio de asiento vendidos para cada sucursal es: \n1. %5.2f \n2. %5.2f \n3. %5.2f \n4. %5.2f \n5. %5.2f \n\n",a,b,c,d,e);
  207. }
  208.  
  209. void Suma (int*a, int b)
  210. {
  211.      *a=*a+b;
  212. }
  213.      
  214. void Suma2 (float*a, float b)
  215. {
  216.      *a=*a+b;
  217. }
  218.  
  219. void maximo(int cont, float *pmaxr, float recp1, int *aux, float npel, float *tickmin, float pr, int *aux2, int tick, int *aux3, int nsuc, float *sucminr)
  220. {
  221.          if (cont==1)
  222.           {
  223.                       *tickmin=pr;
  224.                       *aux2=tick;
  225.                       *aux3=nsuc;
  226.                       *pmaxr=0;
  227.                       *sucminr=pr;
  228.           }
  229.           if (recp1>pmaxr)
  230.           {
  231.                            *pmaxr=recp1;
  232.                            *aux=npel;
  233.           }
  234.           if (recp2>pmaxr)
  235.           {
  236.                            *pmaxr=recp2;
  237.                            *aux=npel;
  238.           }
  239.           if (recp3>pmaxr)
  240.           {
  241.                            *pmaxr=recp3;
  242.                            *aux=npel;
  243.           }
  244.           if (recp4>pmaxr)
  245.           {
  246.                            *pmaxr=recp4;
  247.                            *aux=npel;
  248.           }
  249.                            
  250.           if (pr < tickmin)
  251.           {
  252.                  *tickmin=pr;
  253.                  *aux2=tick;
  254.           }
  255.           if(recs1<sucminr&&recs1>0||recs1==sucminr+pr)
  256.           {
  257.                            *sucminr=recs1;
  258.                            *aux3=nsuc;
  259.           }
  260.           if(recs2<sucminr&&recs2>0||recs2==sucminr+pr)
  261.           {
  262.                            *sucminr=recs2;
  263.                            *aux3=nsuc;
  264.           }
  265.           if(recs3<sucminr&&recs3>0||recs3==sucminr+pr)
  266.           {
  267.                            *sucminr=recs3;
  268.                            *aux3=nsuc;
  269.           }
  270.           if(recs4<sucminr&&recs4>0||recs4==sucminr+pr)
  271.           {
  272.                            *sucminr=recs4;
  273.                            *aux3=nsuc;
  274.           }
  275.           if(recs5<sucminr&&recs5>0||recs5==sucminr+pr)
  276.           {
  277.                            *sucminr=recs5;
  278.                            *aux3=nsuc;
  279.           }
  280. }

Saludos.
  #2 (permalink)  
Antiguo 05/06/2012, 01:22
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Problema Funciones

Guaww cuantas variables!!! es dificil seguir el programa y no perderse, no se si alguien te va a responder. Tal vez si vieras lo que son los arreglos se simplifica un poco mas el codigo

Saludos
  #3 (permalink)  
Antiguo 05/06/2012, 11:25
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: Problema Funciones

a parte de haber muchas variable, los nombres difieren el algunas letras nomas, es facil confundirse de variable


se me ocurre que todas las variables que terminan en numeros las podes agrupar dentro de un struct y luego crear un arreglo del struct creado

Código C++:
Ver original
  1. struct{
  2.  
  3. float total; //anteriormente tots#
  4. float promedio; //proms#
  5. float ganancia; //gsuc#
  6. float recaudado; //recs#
  7.  
  8. //los # dicen que anteriormente habia un numero ahi
  9. }Sucursal[5]; //utilizamos un arreglo como dijo cesar_calsa


podemos modificar un poco el codigo asi:

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. //Void
  5. void Cantavend (int, int, int);
  6. void sucmax (int, float);
  7. void sucrecmenos (int, float);
  8. void gansuc(float, float, float, float, float);
  9. void porrec(float, float, float, float);
  10. void tickme(int, float);
  11. void Imprimir (int);
  12. void procav (float, float, float, float, float);
  13.  
  14. //podes declarar una misma funcion varias veces
  15. //todas las declaraciones de la misma funcion deben de diferir en al menos 1 parametro
  16. void Suma (int*, int);
  17. void Suma (float*, float);
  18. //cuando declares la implementacion de la funcion, vas a tener que hacerlo para
  19. //cada declaracion de la funcion
  20.  
  21. //lo anterior se llama POLIMORFISMO
  22.  
  23. void maximo(int, float*, float, int*, float, float*, float, int*, int, int*, int, float*);
  24. //Float
  25. float descuento (float a);
  26. float gsuca (float);
  27. float promedio (float, float);
  28.  
  29. /* elimine la funcion
  30. float promediotot (float, float);
  31. porque es identica a la anterior*/
  32.  
  33. //se declaran las variables globales
  34. struct{
  35.         float total;
  36.         float promedio;
  37.         float recaudado;
  38.         float ganancia;
  39.     }Sucursal[5];
  40.  
  41. float recp1, recp2, recp3, recp4;
  42. //se termina de declarar las variables globales
  43. int main ()
  44. {
  45.    
  46.    
  47.     /*
  48.     con el struct anterior se eliminaron las siguientes variables:
  49.    
  50.     tots1, tots2, tots3, tots4, tots5 se sustituyen por total.
  51.     recs1, recs2, recs3, recs4, recs5 se sustituyen por recaudado.
  52.     gsuc1, gsuc2, gsuc3, gsuc4, gsuc5 se sustituyen por ganancia.
  53.     proms1, proms2, proms3, proms4 se sustituyen por promedio.
  54.    
  55.     */
  56.    
  57.     /*las inicializaciones en 0 que hiciste a todas las variables que elimine,
  58.     ahora la poder realizar con un for*/
  59.    
  60.     for (int i=0; i<5; i++){
  61.         Sucursal[i].total=0;
  62.         Sucursal[i].promedio=0;
  63.         Sucursal[i].recaudado=0;
  64.         Sucursal[i].ganancia=0;
  65.     }
  66.    
  67.     /*con lo anterior se elimina:
  68.    
  69.     tots1?tots2=tots3=tots4=tots5=0;
  70.     recs1=recs2=recs3=recs4=recs5=gsuc1=gsuc2=gsuc3=gsuc4=gsuc5=0:
  71.     proms1=proms2=proms3=proms4=proms5=0;
  72.     */
  73.    
  74.    
  75.     int tick,ca,npel,nsuc,turno,catm,catn,catt,cont,pg,aux,aux2,aux3; //Variables Enteras
  76.     float pr,tickmin,totrecp,totfinal,pmaxr,sucminr,  prom1, prom2, prom3, prom4; //Variables Flotantes
  77.    
  78.     tick=ca=npel=nsuc=turno=catm=catn=catt=cont=pg=aux=aux2=aux3=recp1=recp2=recp3=recp4=0;
  79.     prom1=prom2=prom3=prom4=0;
  80.    
  81.     pr=tickmin=totrecp=totfinal=pmaxr=sucminr=0;
  82.  
  83.     printf("Ingrese numero de ticket ");
  84.     scanf("%d",&tick);
  85.     while (tick!=0) //Comienzo del ciclo
  86.     {
  87.         printf("\nIngrese numero de sucursal ");
  88.         scanf("%d",&nsuc);
  89.         printf("\nIngrese cantidad de asientos ");
  90.         scanf("%d",&ca);
  91.         printf("\n1=Belleza americana \n2=El informante \n3=La hija del general \n4=Al filo de la muerte \n\nIngrese numero de pelicula ");
  92.         scanf("%d",&npel);
  93.         printf("\n1=Turno Mañana \n2=Turno Tarde \n3=Turno Noche \n\nIngrese numero de turno  ");
  94.         scanf("%d",&turno);
  95.        
  96.         if (ca > 8) //Verificar descuento
  97.         {
  98.             pr=descuento(ca);
  99.         }
  100.         if (ca<=8)
  101.         {
  102.             pr=ca*7;           
  103.         }
  104.  
  105.         //el sguiente switch no lo entiendo
  106.         switch (turno) //Categoría Turno
  107.         {
  108.         case 1:Suma(&catm,ca);
  109.             break;
  110.         case 2:Suma(&catt, ca);
  111.             break;
  112.         case 3:Suma(&catn,ca);
  113.             break;  
  114.         }
  115.    
  116.         switch (npel) //Categoría pelicula
  117.         {
  118.         case 1:Suma(&recp1,pr);
  119.             break;
  120.         case 2:Suma(&recp2,pr);
  121.             break;
  122.         case 3:Suma(&recp3,pr);
  123.             break;
  124.         case 4:Suma(&recp4,pr);
  125.             break;
  126.         }
  127.        
  128.         /*switch (nsuc) //Categoría numero de sucursal
  129.         {
  130.         case 1:Suma(&recs1,pr);
  131.             Suma(&tots1,ca);
  132.             break;  
  133.         case 2:Suma(&recs2,pr);
  134.             Suma(&tots2,ca);
  135.             break;
  136.         case 3:Suma(&recs3,pr);
  137.             Suma(&tots3,ca);
  138.             break;
  139.         case 4:Suma(&recs4,pr);
  140.             Suma(&tots4,ca);
  141.             break;
  142.         case 5:Suma(&recs5,pr);
  143.             Suma(&tots5,ca);
  144.             break;
  145.         }*/
  146.        
  147.         //el switch que comente lo podes reemplazar por las siguiente
  148.         //2 lineas
  149.        
  150.         Suma(&Sucursal[nsuc].recaudado, pr);
  151.         Suma(&Sucursal[nsuc].total, ca);
  152.        
  153.        
  154.        
  155.         cont=cont+1;
  156.         maximo(cont, &pmaxr, recp1, &aux, npel, &tickmin, pr, &aux2, tick, &aux3, nsuc, &sucminr);
  157.        
  158.         if (turno == 2 && nsuc == 3 && npel == 2) //Pelicula 2, Sucursal 3, Turno Tarde
  159.         {
  160.             Suma(&pg,ca);
  161.         }
  162.         printf("\nIngrese numero de ticket ");
  163.         scanf("%d",&tick);
  164.     }// Fin del ciclo
  165.    
  166.     //Operaciones
  167.     for (int i=0; i<5; i++)
  168.     Sucursal[i].ganancia=gsuca(Sucursal[i].recaudado);
  169.     /*el for anterior reemplaza lo siguiente:
  170.    
  171.     gsuc1=gsuca(recs1);
  172.     gsuc2=gsuca(recs2);
  173.     gsuc3=gsuca(recs3);
  174.     gsuc4=gsuca(recs4);
  175.     gsuc5=gsuca(recs5);*/
  176.    
  177.     totrecp=recp1+recp2+recp3+recp4;
  178.    
  179.     prom1=promedio(recp1,totrecp);
  180.     prom2=promedio(recp2,totrecp);
  181.     prom3=promedio(recp3,totrecp);
  182.     prom4=promedio(recp4,totrecp);
  183.    
  184.     for (int i=0; i<5; i++)
  185.         totfinal= Sucursal[i].total;
  186.    
  187.     /*el for anterior reemplaza lo siguiente:
  188.    
  189.     totfinal= tots1+tots2+tots3+tots4+tots5;*/
  190.    
  191.     for (int i=0; i<5; i++)
  192.         Sucursal[i].promedio= promedio(Sucursal[i].total, totfinal);
  193.    
  194.     /*el for anterior reemplaza lo siguiente:
  195.    
  196.     proms1=promediotot(tots1,totfinal);
  197.     proms2=promediotot(tots2,totfinal);
  198.     proms3=promediotot(tots3,totfinal);
  199.     proms4=promediotot(tots4,totfinal);
  200.     proms5=promediotot(tots5,totfinal);
  201.     */
  202.    
  203.     //Resultados
  204.     Cantavend(catm,catt,catn);
  205.     sucmax(aux,pmaxr);
  206.     sucrecmenos(aux3,sucminr);
  207.    
  208.     //cambiamos los parametros de la funcion por los correspondientes
  209.     gansuc(Sucursal[0].ganancia,
  210.            Sucursal[1].ganancia,
  211.            Sucursal[2].ganancia,
  212.            Sucursal[3].ganancia,
  213.            Sucursal[4].ganancia);
  214.    
  215.     porrec(prom1,prom2,prom3,prom4);
  216.     tickme(aux2,tickmin);
  217.     Imprimir(pg);
  218.    
  219.     //cambiamos los parametros de la funcion por los correspondientes
  220.     procav(Sucursal[0].promedio,
  221.            Sucursal[1].promedio,
  222.            Sucursal[2].promedio,
  223.            Sucursal[3].promedio,
  224.            Sucursal[4].promedio);
  225.    
  226.     getch();
  227.     return 0;
  228. }
  229.  
  230. float descuento(float a)   
  231. {
  232.     float b;
  233.     b=(a*7)*0.9;
  234.     return b;
  235. }
  236.  
  237. float gsuca(float a)   
  238. {
  239.     float b;
  240.     b=a*0.2;
  241.     return b;  
  242. }
  243.  
  244. float promedio(float a, float b)   
  245. {
  246.     float c;
  247.     c=(a*100)/b;
  248.     return c;  
  249. }
  250.  
  251.  
  252. void Cantavend (int a, int b, int c)   
  253. {
  254.     printf("La cantidad de asientos vendidos en el turno mañana es %d,en el turno tarde %d, y en el noche %d \n\n",a,b,c); 
  255. }
  256.  
  257. void sucmax (int a, float b)   
  258. {
  259.     printf("La pelicula de mayor recaudacion es la nro %d, que recaudo %5.2f \n\n",a,b);   
  260. }
  261.  
  262. void sucrecmenos (int a, float b)  
  263. {
  264.     printf("La sucursal que recaudo menos fue la numero %d, con un total de %5.2f \n\n",a,b);  
  265. }
  266.  
  267. void gansuc (float a, float b, float c, float d, float e)  
  268. {
  269.     printf("Lo que gano cada sucursal es: \n1.%5.2f  \n2. %5.2f \n3.%5.2f \n4.%5.2f \n5.%5.2f \n\n",a,b,c,d,e);
  270. }
  271.  
  272. void porrec(float a, float b, float c, float d)
  273. {
  274.     printf("El porcentaje recaudado de cada pelicula sobre el total es: \n1. %5.2f \n2. %5.2f \n3. %5.2f \n4. %5.2f \n\n",a,b,c,d);
  275. }
  276.  
  277. void tickme (int a, float b)   
  278. {
  279.     printf("El ticket de menor valor es el nro %d, con un valor de %5.2f \n\n",a,b);   
  280. }
  281.  
  282. void Imprimir (int a)  
  283. {
  284.     printf("La cantidad de asientos vendidos para la pelicula 2, la sucursal 3 y turno tarde es %d \n\n",a);
  285. }
  286.  
  287. void procav (float a, float b, float c, float d, float e)  
  288. {
  289.     printf("El promedio de asiento vendidos para cada sucursal es: \n1. %5.2f \n2. %5.2f \n3. %5.2f \n4. %5.2f \n5. %5.2f \n\n",a,b,c,d,e);
  290. }
  291.  
  292. void Suma (int*a, int b)   
  293. {
  294.     *a=*a+b;
  295. }
  296.  
  297. //se le saca el 2 al nombre de la funcion
  298. void Suma (float*a, float b)   
  299. {
  300.     *a=*a+b;   
  301. }
  302.  
  303. void maximo(int cont, float *pmaxr, float recp1, int *aux, float npel, float *tickmin, float pr, int *aux2, int tick, int *aux3, int nsuc, float *sucminr) 
  304. {
  305.     if (cont==1)
  306.     {
  307.         *tickmin=pr;
  308.         *aux2=tick;
  309.         *aux3=nsuc;
  310.         *pmaxr=0;
  311.         *sucminr=pr;
  312.     }
  313.    
  314.     if (recp1>*pmaxr)
  315.     {
  316.         *pmaxr=recp1;
  317.         *aux=npel;     
  318.     }
  319.    
  320.     if (recp2>pmaxr)
  321.     {
  322.         *pmaxr=recp2;
  323.         *aux=npel;
  324.     }
  325.    
  326.     if (recp3>pmaxr)
  327.     {
  328.         *pmaxr=recp3;
  329.         *aux=npel;
  330.     }
  331.    
  332.     if (recp4>pmaxr)
  333.     {
  334.         *pmaxr=recp4;
  335.         *aux=npel;
  336.     }
  337.    
  338.     if (pr < tickmin)
  339.     {
  340.         *tickmin=pr;
  341.         *aux2=tick;
  342.     }
  343.    
  344.     if(Sucursal[1].recaudado<sucminr&&Sucursal[1].recaudado>0||Sucursal[1].recaudado==sucminr+pr)
  345.     {
  346.         *sucminr=Sucursañ[1].recaudado;
  347.         *aux3=nsuc;
  348.     }
  349.    
  350.     if(Sucursal[2].recaudado<sucminr&&Sucursal[2].recaudado>0||Sucursal[2].recaudado==sucminr+pr)
  351.     {
  352.         *sucminr=Sucursal[2].recaudado;
  353.         *aux3=nsuc;
  354.     }
  355.     if(Sucursal[3].recaudado<sucminr&&Sucursal[3].recaudado>0||Sucursal[3].recaudado==sucminr+pr)
  356.        
  357.     {
  358.         *sucminr=Sucursal[3].recaudado;
  359.         *aux3=nsuc;
  360.        
  361.     }
  362.    
  363.     if(Sucursal[4].recaudado<sucminr&&Sucursal[4].recaudado>0||Sucursal[4].recaudao==sucminr+pr)
  364.        
  365.     {  
  366.         *sucminr=Sucursal[4].recaudado;
  367.         *aux3=nsuc;
  368.     }
  369.    
  370.     if(Sucursal[5].recaudado<sucminr&&Sucursal[5].recaudado>0||Sucursal[5].recaudado==sucminr+pr)
  371.        
  372.     {
  373.         *sucminr=Sucursal[5].recaudado;
  374.         *aux3=nsuc;
  375.     }
  376. }

todo lo anterior lo hice para que el codigo sea un poco mas facil de enteder, por lo menos para mi lo es.... tambien se podria declarar un arreglo para las peliculas, y el arreglo sea de un struct donde almacene todas las caracteristicas que tengan en comun las peliculas
  #4 (permalink)  
Antiguo 05/06/2012, 11:27
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: Problema Funciones

el error que vi que tenes en la funcion maximo, es que usas variables que no estan declaradas en el ambito de la funcion, las variables que podes usar dentro de una funcion son:

- las declaradas de forma global
- las que se le pasan como parametros
- las declaradas internamente dentro de la funcion

encontes, la funcion maximo no puede utilizar las siguientes variables:

1- recp2, recp3, recp4
2- recs1, recs2, recs3, recs4, recs5

las primeras se pueden solucionar declarandolas como variables globales

las segundas no estan mas en el codigo que te pase, ahora se encuentran dentro del arreglo Sucursal y almacenadas en la variable recaudado. Para solucionar esta parte, declaramos el arreglo Sucursal como global



esta otra parte no la entiendo:

Código C++:
Ver original
  1. if(recs1<sucminr&&recs1>0||recs1==sucminr+pr)
  #5 (permalink)  
Antiguo 05/06/2012, 12:28
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: Problema Funciones

listo, ya encontre lo que faltaba:

Código C++:
Ver original
  1. void maximo(int cont, float *pmaxr, float recp1, int *aux, float npel, float *tickmin, float pr, int *aux2, int tick, int *aux3, int nsuc, float *sucminr)     
  2. {
  3.  
  4.     if (cont==1)   
  5.     {
  6.         *tickmin=pr;
  7.         *aux2=tick;
  8.         *aux3=nsuc;
  9.         *pmaxr=0;
  10.         *sucminr=pr;   
  11.     }
  12.    
  13.     if (recp1>*pmaxr)  
  14.     {
  15.         *pmaxr=recp1;
  16.         *aux=npel;         
  17.     }
  18.    
  19.     if (recp2>*pmaxr)  
  20.     {
  21.         *pmaxr=recp2;
  22.         *aux=npel; 
  23.     }  
  24.  
  25.     if (recp3>*pmaxr)  
  26.     {
  27.         *pmaxr=recp3;
  28.         *aux=npel; 
  29.     }
  30.    
  31.     if (recp4>*pmaxr)  
  32.     {
  33.         *pmaxr=recp4;
  34.         *aux=npel; 
  35.     }
  36.    
  37.     if (pr < *tickmin) 
  38.     {
  39.         *tickmin=pr;
  40.         *aux2=tick;
  41.     }
  42.    
  43.     if(((Sucursal[1].recaudado<*sucminr)&&(Sucursal[1].recaudado>0))||(Sucursal[1].recaudado==*sucminr+pr))    
  44.     {
  45.         *sucminr=Sucursal[1].recaudado;
  46.         *aux3=nsuc;
  47.     }
  48.    
  49.     if(((Sucursal[2].recaudado<*sucminr)&&(Sucursal[2].recaudado>0))||(Sucursal[2].recaudado==*sucminr+pr))
  50.     {
  51.         *sucminr=Sucursal[2].recaudado;
  52.         *aux3=nsuc;    
  53.     }
  54.  
  55.     if(((Sucursal[3].recaudado<*sucminr)&&(Sucursal[3].recaudado>0))||(Sucursal[3].recaudado==*sucminr+pr))
  56.     {
  57.         *sucminr=Sucursal[3].recaudado;
  58.         *aux3=nsuc;
  59.     }
  60.    
  61.     if(((Sucursal[4].recaudado<*sucminr&&Sucursal[4].recaudado>0))||(Sucursal[4].recaudado==*sucminr+pr))  
  62.     {  
  63.         *sucminr=Sucursal[4].recaudado;
  64.         *aux3=nsuc;    
  65.     }
  66.  
  67.     if(((Sucursal[5].recaudado<*sucminr)&&(Sucursal[5].recaudado>0))||(Sucursal[5].recaudado==*sucminr+pr))
  68.     {
  69.         *sucminr=Sucursal[5].recaudado;
  70.         *aux3=nsuc;
  71.     }

faltaban algunos parentesis en algunos if y algunos * para acceder a los valores que apuntaban los punteros...

ahora el programa compila, pero si lo probas te vas a dar cuenta de que hay errores

saludos
  #6 (permalink)  
Antiguo 05/06/2012, 13:21
 
Fecha de Ingreso: junio-2012
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Problema Funciones

Cita:
Iniciado por starfix Ver Mensaje
listo, ya encontre lo que faltaba:

Código C++:
Ver original
  1. void maximo(int cont, float *pmaxr, float recp1, int *aux, float npel, float *tickmin, float pr, int *aux2, int tick, int *aux3, int nsuc, float *sucminr)     
  2. {
  3.  
  4.     if (cont==1)   
  5.     {
  6.         *tickmin=pr;
  7.         *aux2=tick;
  8.         *aux3=nsuc;
  9.         *pmaxr=0;
  10.         *sucminr=pr;   
  11.     }
  12.    
  13.     if (recp1>*pmaxr)  
  14.     {
  15.         *pmaxr=recp1;
  16.         *aux=npel;         
  17.     }
  18.    
  19.     if (recp2>*pmaxr)  
  20.     {
  21.         *pmaxr=recp2;
  22.         *aux=npel; 
  23.     }  
  24.  
  25.     if (recp3>*pmaxr)  
  26.     {
  27.         *pmaxr=recp3;
  28.         *aux=npel; 
  29.     }
  30.    
  31.     if (recp4>*pmaxr)  
  32.     {
  33.         *pmaxr=recp4;
  34.         *aux=npel; 
  35.     }
  36.    
  37.     if (pr < *tickmin) 
  38.     {
  39.         *tickmin=pr;
  40.         *aux2=tick;
  41.     }
  42.    
  43.     if(((Sucursal[1].recaudado<*sucminr)&&(Sucursal[1].recaudado>0))||(Sucursal[1].recaudado==*sucminr+pr))    
  44.     {
  45.         *sucminr=Sucursal[1].recaudado;
  46.         *aux3=nsuc;
  47.     }
  48.    
  49.     if(((Sucursal[2].recaudado<*sucminr)&&(Sucursal[2].recaudado>0))||(Sucursal[2].recaudado==*sucminr+pr))
  50.     {
  51.         *sucminr=Sucursal[2].recaudado;
  52.         *aux3=nsuc;    
  53.     }
  54.  
  55.     if(((Sucursal[3].recaudado<*sucminr)&&(Sucursal[3].recaudado>0))||(Sucursal[3].recaudado==*sucminr+pr))
  56.     {
  57.         *sucminr=Sucursal[3].recaudado;
  58.         *aux3=nsuc;
  59.     }
  60.    
  61.     if(((Sucursal[4].recaudado<*sucminr&&Sucursal[4].recaudado>0))||(Sucursal[4].recaudado==*sucminr+pr))  
  62.     {  
  63.         *sucminr=Sucursal[4].recaudado;
  64.         *aux3=nsuc;    
  65.     }
  66.  
  67.     if(((Sucursal[5].recaudado<*sucminr)&&(Sucursal[5].recaudado>0))||(Sucursal[5].recaudado==*sucminr+pr))
  68.     {
  69.         *sucminr=Sucursal[5].recaudado;
  70.         *aux3=nsuc;
  71.     }

faltaban algunos parentesis en algunos if y algunos * para acceder a los valores que apuntaban los punteros...

ahora el programa compila, pero si lo probas te vas a dar cuenta de que hay errores

saludos

Muchas gracias. Recien empeze viendo C por eso esta tan mal el codigo, hoy vi vectores y me di cuenta de todas las lineas que se pueden simplificar en una o dos lineas.

Etiquetas: funciones, int, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:34.