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

Duda sobre funciones

Estas en el tema de Duda sobre funciones en el foro de C/C++ en Foros del Web. Hola amigos e tratado de hacer una simple aplicaciones con funciones. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código 1: Ver original #include <iostream.h>  #include <conio.h>  #include <stdio.h>  #include <stdlib.h> ...
  #1 (permalink)  
Antiguo 31/05/2009, 14:37
 
Fecha de Ingreso: enero-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 1
Duda sobre funciones

Hola amigos e tratado de hacer una simple aplicaciones con funciones.
Código 1:
Ver original
  1. #include <iostream.h>
  2.  #include <conio.h>
  3.  #include <stdio.h>
  4.  #include <stdlib.h>
  5.  
  6.  
  7. void menu(int o1);
  8. void base(int o1,float bas);
  9.  
  10. int main()
  11. { int op1;
  12.   float ba;
  13.   menu(op1);
  14.   base(op1,ba);
  15.   system("PAUSE");
  16.  return 0;
  17. }
  18.  
  19.  
  20. void menu(int o1)
  21. {
  22. cout<<"[1]"<<endl;
  23. cout<<"[2]"<<endl;
  24. cout<<"[3]"<<endl;
  25. cout<<"[4]"<<endl;
  26. cout<<"[5]"<<endl;
  27. cout<<"[6]"<<endl;
  28. cout<<"Elige una opcion (1-6):";
  29. scanf("%d",&o1);
  30.  
  31. }
  32.  
  33. void base(int o1,float bas)
  34. {
  35.  if(o1==1)
  36. {bas=4;}
  37. if(o1==2)
  38. {bas=8;}
  39. if(o1==3)
  40. {bas=7;}
  41. if(o1==4)
  42. {bas=4.5;}
  43. if(o1==5)
  44. {bas=5;}
  45. if(o1==6)
  46. {bas=6;}
  47.  
  48. cout<<o1<<"  "<<bas;
  49. }

el caso es que en la funcion BASE no lee el o1 declarado en menu.

muy por el contrario si hago a o1 como vector o1[max]
Código 2:
Ver original
  1. #include <iostream.h>
  2.  #include <conio.h>
  3.  #include <stdio.h>
  4.  #include <stdlib.h>
  5.  #define max 5
  6.  
  7.  
  8. void menu(int o1[max]);
  9. void base(int o1[max],float bas);
  10.  
  11. int main()
  12. { int op1[max];
  13.   float ba;
  14.   menu(op1);
  15.   base(op1,ba);
  16.   system("PAUSE");
  17.  return 0;
  18. }
  19.  
  20.  
  21. void menu(int o1[max])
  22. {
  23. cout<<"[1]"<<endl;
  24. cout<<"[2]"<<endl;
  25. cout<<"[3]"<<endl;
  26. cout<<"[4]"<<endl;
  27. cout<<"[5]"<<endl;
  28. cout<<"[6]"<<endl;
  29. cout<<"Elige una opcion (1-6):";
  30. scanf("%d",&o1[0]);
  31.  
  32. }
  33.  
  34. void base(int o1[max],float bas)
  35. {
  36.  if(o1[0]==1)
  37. {bas=4;}
  38. if(o1[0]==2)
  39. {bas=8;}
  40. if(o1[0]==3)
  41. {bas=7;}
  42. if(o1[0]==4)
  43. {bas=4.5;}
  44. if(o1[0]==5)
  45. {bas=5;}
  46. if(o1[0]==6)
  47. {bas=6;}
  48.  
  49. cout<<o1[0]<<"  "<<bas;
  50. }

si lee correctamente o1 y da salida a la opcion de bas.
Espero que me puedan ayudar el porque no funciona declarandolo de la primera forma.

Gracias por su tiempo
  #2 (permalink)  
Antiguo 03/06/2009, 17:16
 
Fecha de Ingreso: junio-2009
Mensajes: 6
Antigüedad: 14 años, 11 meses
Puntos: 0
Donde envias el valor?

En tu 1er codigo no se ve que le pases un valor a la funcion, solo colocas directamente la variable op1, que ni siquiera esta inicializada (por lo que contiene basura) y supongo que no funcionara correctamente en ambas funciones. A menos que hagas que la función menu devuelva el valor ingresado y que este sea recibido por el argumento o1 de la función base.

Usa un limpiador de pantalla luego de escojida la opcion, ademas pudiste haber usado una estructura switch en vez de muchas condiciones. Si declaraste la directriz conio usa el getch(); para hacer una pausa.

En el 2do codigo ¿Estas intentando enviar 5 selecciones del menu de 6 elementos?.

Espero haberme hecho entender. Bye
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 11:01.