ayuda en C

Iniciado por howaboutno, 21 Octubre 2012, 13:33 PM

0 Miembros y 1 Visitante están viendo este tema.

howaboutno

hola! tengo un problema, a ver si me podeis ayudar.
tengo que hacer esto:
1.Escribir una función a la que se le dé como parámetro un valor r que representa el radio de un figura una  opción y un dato entero que será 1/2/3. La funciona debe devolver :
•   En el caso opcion1 la longitud del circulo de radio r dada por la expresión 2*pi*r
•   En el caso opción  2 la superficie del circulo dada por la expresión pi*r2
•   En el caso opcion 3 el volumen de una esfera de radio r dada por la expresión 4/3*pi*r3
NOTA:pi debe defnirse como una constante;

he empezado a hacerla sin funcion por ahora, luego la pasaré a una función, cuando lo tenga mas claro.

tengo lo siguiente:
Al ejecutarlo, introduzco la opcion 1 y me calcula la longitud del circulo, pero al introducir la opción 2 o 3 no aparece nada mas. Donde podria estar el fallo? LLevo tiempo mirandolo y no lo veo....He de decir que soy principiante en C, asi que disculpad si haya hecho alguna tonteria xD


#include <stdio.h>
#include <stdlib.h>
#define PI  3.141592
int main()
{
   int opcion,longitud=0,superficie=0,volumen=0;
   int r;

   printf("1.Longitud del círculo \n");
   fflush(stdout);
   printf("2.Superficie del círculo \n");
   fflush(stdout);
   printf("3.Volumen esfera \n");
   fflush(stdout);

   do
   {
   printf("Introduce una opción \n");
   fflush(stdout);
   scanf("%d",&opcion);
   }while(opcion<1||opcion>3);

   if(opcion==1)
   {
      printf("Introduce la longitud del circulo \n");
      fflush(stdout);
      scanf("%d",&r);

      longitud=2*PI*r;
      printf("resultado %d",longitud);
      fflush(stdout);
   }
   else
      if(opcion==2)
         {
         printf("Introduce la superficie del circulo \n");
         fflush(stdout);
         scanf("%d",&r);

         superficie=PI*r;
         printf("resultado %d",superficie);
         fflush(stdout);
         }
      else
      {
      printf("\n Introduce el voumen del circulo \n");
      fflush(stdout);
      scanf("%d",&r);


      volumen=4/3*PI*r;
      printf("resultado %d",volumen);
      fflush(stdout);
      }
   return 0;
}



leosansan

Cita de: howaboutno en 21 Octubre 2012, 13:33 PM
Al ejecutarlo, introduzco la opcion 1 y me calcula la longitud del circulo, pero al introducir la opción 2 o 3 no aparece nada mas.
A mí me funciono sin problemas las tres opciones.
No obstante, tienes que cambiar algunas variables de int a float y algo los "mensajes" de "Introducir":
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#define PI  3.141592
int main()
{
  int opcion;
  float r,longitud,superficie,volumen;
  printf("1.Longitud del ciculo \n");
  printf("2.Superficie del circulo \n");
  printf("3.Volumen esfera \n");
   do
  {
  printf("Introduce una opcion \n");

  scanf("%d",&opcion);
  }while(opcion<1||opcion>3);

  if(opcion==1)
  {
     printf("Introduce el radio del circulo \n");
     scanf("%g",&r);
     longitud=2*PI*r;
     printf("Longitud= %g",longitud);
        }
  else
     if(opcion==2)
        {
        printf("Introduce el radio del circulo \n");
        scanf("%g",&r);
        superficie=PI*r*r;
        printf("Superficie = %g",superficie);
       }
     else
     {
     printf("\n Introduce el radio de la esfera \n");
     scanf("%g",&r);
     volumen=4/3*PI*r*r*r;
     printf("Volumen =  %g",volumen);
   }
  return 0;
}


DickGumshoe

#2
A mí también me funciona bien.

EDITO: Nada, también lo explicó leosansan lo que iba a decir.

Un saludo.

howaboutno

Muchas gracias por vuestra ayuda!!
al saber que estaba todo bien he creado un proyecto nuevo, he copiado y pegado el codigo y ahora si que funciona...a saber porque
ahora solo me falta hacerlo mediante funcion :D

DickGumshoe

Cita de: howaboutno en 21 Octubre 2012, 14:30 PM
Muchas gracias por vuestra ayuda!!
al saber que estaba todo bien he creado un proyecto nuevo, he copiado y pegado el codigo y ahora si que funciona...a saber porque
ahora solo me falta hacerlo mediante funcion :D

A mí me pasaba mucho en Dev C++, así que cambié de IDE.