elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funciones !
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funciones !  (Leído 1,658 veces)
ThronerAXE

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Funciones !
« en: 15 Abril 2013, 02:05 am »

Buenas!
he comenzado con el tema de las funciones en lenguaje c, este es mi primer programa que hago, pero hay un error que no me deja que corra el programa. Debo crear un menu en el que el usuario pueda elejirlas siguientes opciones:
El calculo de una funcion racional.
El calculo del area y el perimetro de un triangulo acutangulo.
Finalizar.
Los errores me los da en la linea 55(Code has no effect) y en la linea 59(do statement must have while). Le he hechado bastante cabeza pero nada que doy con el error. Tambien tengo una duda, haciendo la funcion del triangulo, debo dar 2 salidas, y los pocos ejercicios que he hecho han sido con una sola salida, entonces en lo que pense fue en copiar la funcion y que cada una me retornara, por un lado el perimetro y por otro lado la altura.. entonces nose como sería la forma mas estetica de escribirlo para que me de las 2 salidas. este es el codigo.
Código
  1. //Programa 3 de Funciones
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <math.h>
  5. //Prototipos
  6. int menu(void);
  7. float fun_met1(float);
  8. float fun2_alt(float, float, float);
  9. float fun2_per(float, float, float);
  10.  
  11. //Programa Principal
  12. void main()
  13. { int opcion;
  14.  float valorX,val_fun,angulo,ladoC,ladoA;
  15.  
  16.  do
  17.  {
  18.   switch(opcion)
  19.   {
  20.     case 1: clrscr();
  21.             printf("\nIngrese el valor de h(x): ");
  22.             scanf("%f",&valorX);
  23.             val_fun=fun_met1(valorX);
  24.             printf("\nEl valor de la funcion h(x) es de: ",val_fun);
  25.             getch();
  26.             break;
  27.     case 2: clrscr();
  28.             printf("\nIngrese el valor del angulo alfa en grados: ");
  29.             scanf("%f",&angulo);
  30.             printf("\nIngrese el valor del lado C: ");
  31.             scanf("%f",&ladoC);
  32.             printf("\nIngrese el valor del lado A: ");
  33.             scanf("%f",&ladoA);
  34.             printf("\nEL valor de la altura es de %f",fun2_alt(angulo,ladoC,ladoA));
  35.             printf("\nEL valor del perimetro es de %f",fun2_per(angulo,ladoC,ladoA));
  36.             getch();
  37.             break;
  38.   }
  39.  }while((opcion=menu())!=3);
  40. }
  41. //Funciones
  42. int menu(void)
  43. { int opc;
  44.  
  45.  printf("\t\t\tMENU");
  46.  printf("\n\n1 para calculo de una funcion");
  47.  printf("2 para calcular el area y perimetro de un triangulo");
  48.  printf("3 para finalizar");
  49.  do
  50.  { printf("\nElija su opcion: ");
  51.    scanf("%d",&opc);
  52.    if(opc<1 || opc >3)
  53.    { printf("Opcion incorrecta. Ingresela de nuevo: ");
  54.      getch();
  55.    }while(opc<1 || opc>3);
  56.  return opc;
  57. }
  58.  
  59. float fun_met1(float fun_x)
  60. {
  61. float h;
  62. h=(pow(fun_x,3)+4)/sqrt(3+fun_x);
  63. return h;
  64. }
  65.  
  66. float fun2_alt(float falfa, float fc, float fa)
  67. {
  68.  fb=sqrt(pow(fc,2))-(pow(fa,2));
  69.  fd=(fb*sin(90*M_PI/180))/sin(falfa*M_PI/180);
  70.  fbeta=180-90-falfa;
  71.  fe=(fb*sin(fbeta*M_PI/180))/sin(falfa*M_PI/180);
  72.  ff=fe+fa;
  73.  falt=(ff*fb)/2;
  74.  return falt;
  75. }
  76.  
  77. float fun2_per(float falfa, float fc, float fa)
  78. {
  79.  fb=sqrt(pow(fc,2))-(pow(fa,2));
  80.  fd=(fb*sin(90*M_PI/180))/sin(falfa*M_PI/180);
  81.  fbeta=180-90-falfa;
  82.  fe=(fb*sin(fbeta*M_PI/180))/sin(falfa*M_PI/180);
  83.  ff=fe+fa;
  84.  fper=fd+fc+ff;
  85.  return fper;
  86. }
  87. }

PD: muchos me han sugerido ya que no utilize la libreria conio.h por lo que no es standar, pero la profesora de la universidad lo evalua entonces debo utilizarla xD


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Funciones !
« Respuesta #1 en: 15 Abril 2013, 04:58 am »

Los dos errores que mencionas se deben a que en esa función falta la llave de cierre del bucle do ... while:
Código
  1. int menu(void)
  2. {
  3.   int opc;
  4.  
  5.   printf("\t\t\tMENU");
  6.   printf("\n\n1 para calculo de una funcion");
  7.   printf("2 para calcular el area y perimetro de un triangulo");
  8.   printf("3 para finalizar");
  9.  
  10.   do {
  11.      printf("\nElija su opcion: ");
  12.      scanf("%d",&opc);
  13.  
  14.      if (opc < 1 || opc > 3){
  15.         printf("Opcion incorrecta. Ingresela de nuevo: ");
  16.         getch();
  17.      }
  18.   /* } */ while(opc<1 || opc>3);
  19.  
  20.   return opc;
  21. }

También hay otros errores, por ejemplo en la función principal:
Código
  1. void main()
  2. {
  3.   int opcion;
  4.   float valorX,val_fun,angulo,ladoC,ladoA;
  5.  
  6.   do {
  7.      switch(opcion) /* Proceso de la variable */
  8.  
  9.      /* ... */
  10.  
  11.   }while((opcion=menu())!=3); /* Lectura de la variable */
  12. }
Primero procesas la opción mediante el switch y solo después lees el valor cuando debe ser al revés:
Código
  1. void main()
  2. {
  3.   int opcion;
  4.   float valorX,val_fun,angulo,ladoC,ladoA;
  5.  
  6.   while ((opcion = menu()) != 3){ /* Lectura de la variable */
  7.      switch(opcion) /* Proceso de la variable */
  8.  
  9.      /* ... */
  10.  
  11.   }
  12. }

muchos me han sugerido ya que no utilize la libreria conio.h por lo que no es standar, pero la profesora de la universidad lo evalua entonces debo utilizarla
Lo malo de esa biblioteca es que surgió con los compiladores Turbo C de Borland para MS-DOS. Como espero entenderás es algo ... viejo (o nostálgico, dependiendo de la perspectiva).

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PHP y funciones tcp/ip « 1 2 »
PHP
nacho2003 11 7,553 Último mensaje 21 Septiembre 2006, 00:07 am
por deya
Funciones en php
PHP
Lambda 2 2,562 Último mensaje 14 Octubre 2006, 17:00 pm
por Thaorius
funciones y FOR
PHP
pepelon 4 2,278 Último mensaje 9 Diciembre 2006, 02:49 am
por pepelon
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 23,642 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines