Ayuda problema c++

Publicado en 'Estudiantes' por melo2412, 2 May 2013.





  1. melo2412

    melo2412 Miembro de bronce

    Registro:
    4 Ene 2011
    Mensajes:
    1,057
    Likes:
    137
    Temas:
    111




    #include <iostream>
    #include <conio>
    #include <math>
    void med(float A,float B,float C);
    void main()
    {float a,b,c;
    cout<<"\n Ingrese los 3 lados del triangulo : "<<endl;cin>>a>>b>>c;
    med(a,b,c);}
    void med(float a, float b, float c)
    {float p,y;
    p=((a+b+c)/2);
    y=sqrt(p(p-a)(p-b)(p-c));
    cout<<"\nEl perimetro es :"<<p<<endl;
    cout<<"\nEl area es :"<<y<<endl;
    getch();}

    Como arreglarlo por favor :)
     


  2. GatoGarro

    GatoGarro Miembro de bronce

    Registro:
    13 Set 2008
    Mensajes:
    1,048
    Likes:
    931
    Temas:
    5
    Prueba con:
    y=pow(p*(p-a)*(p-b)*(p-c),0.5);

    Si no te funciona, te doy un código que realicé hace unos años:

    #include<iostream.h>
    #include<conio.h>
    #include<math.h>
    void main()
    {int a,b,c;
    float area,s;
    clrscr();
    cout<<"Ingrese las 3 longitudes de los lados: "<<endl;
    cin>>a>>b>>c;
    s=(float) (a+b+c)/2;
    area=pow(s*(s-a)*(s-b)*(s-c),0.5);
    cout<<"El area del triangulo indicado es: "<<area;
    getch();
    }
     
    Última edición: 2 May 2013
    A melo2412 le gustó este mensaje.
  3. melo2412

    melo2412 Miembro de bronce

    Registro:
    4 Ene 2011
    Mensajes:
    1,057
    Likes:
    137
    Temas:
    111
    Si corrio el programa que significa pow?
     
  4. GatoGarro

    GatoGarro Miembro de bronce

    Registro:
    13 Set 2008
    Mensajes:
    1,048
    Likes:
    931
    Temas:
    5
    Pow es para realizar una potencia
    Por ejemplo Pow(x,2) es elevar x al cuadrado
    Pow(x,0.5) es elevarlo a la 1/2, o sea, su raíz cuadrada.
     
    A melo2412 le gustó este mensaje.
  5. melo2412

    melo2412 Miembro de bronce

    Registro:
    4 Ene 2011
    Mensajes:
    1,057
    Likes:
    137
    Temas:
    111
    Gracias, y por que lo que hice al principio esta mal ?
     
  6. GatoGarro

    GatoGarro Miembro de bronce

    Registro:
    13 Set 2008
    Mensajes:
    1,048
    Likes:
    931
    Temas:
    5
    Probablemente porque no pusiste los asteriscos (*) que indicaban las multiplicaciones.
    :hi:
     
    A melo2412 le gustó este mensaje.
  7. Greyjoy

    Greyjoy Miembro de oro

    Registro:
    27 Dic 2012
    Mensajes:
    7,119
    Likes:
    6,673
    Temas:
    94
    Mi c++ está más que oxidado, pero no debería ser #include <math.h>? [​IMG]
     
    A GatoGarro le gustó este mensaje.
  8. melo2412

    melo2412 Miembro de bronce

    Registro:
    4 Ene 2011
    Mensajes:
    1,057
    Likes:
    137
    Temas:
    111
    Ayúdame quiero que la función retorna y reciba:

    int med(float A,float B,float C, float &p);
    void main()
    {float a,b,c,r;
    cout<<"\n Ingrese los 3 lados del triangulo : "<<endl;cin>>a>>b>>c;
    r=med(a,b,c);
    cout<<"El perimetro y el area es :"<<endl<<r;
    getch();}
    int med(float a, float b, float c,float &p)
    {p=(a+b+c)/2 ;
    return p ;
    return sqrt(p*(p-a)*(p-b)*(p-c));}

    Esa es mi idea ahora en que falle me han dicho que una función solo puede retornar mas de un valor no quiero añadir mas funciones me han dicho que lo haga por parámetro de referencia :)
     
  9. Dobger

    Dobger Miembro maestro

    Registro:
    3 Dic 2010
    Mensajes:
    499
    Likes:
    281
    Temas:
    3
    tienes que usar punteros para que devuelva mas de un valor

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <iostream>
    #include <conio.h>
    void med(float a, float b, float c, float *p, float *y)
    {
    *p= float((a+b+c)/2);
    *y= float(sqrt(*p *(*p-a)*(*p-b)*(*p-c)));
    return;
    }



    int main()
    {float a,b,c,p,y;
    printf("\n Ingrese los 3 lados del triangulo : ");
    scanf("%f %f %f",&a,&b,&c);
    med(a,b,c, &p,&y);
    printf("\nEl semiperimetro es :%.2f",p);
    printf("\nEl area es : %.2f",y);
    getch();}

    estoy usando el printf y el scanf porque mi libreria iostream no me esta funcionando bien.
     
    A melo2412 le gustó este mensaje.
  10. melo2412

    melo2412 Miembro de bronce

    Registro:
    4 Ene 2011
    Mensajes:
    1,057
    Likes:
    137
    Temas:
    111
    No entiendo por que pones return en void med si no especificas que vas a retornar
    Yo creo que debería ser int med por que en ese caso estarías retornando esos 2 valores al main y con el void no se retorna según tengo entendido explícame :s
     
    Última edición: 2 May 2013
  11. Dobger

    Dobger Miembro maestro

    Registro:
    3 Dic 2010
    Mensajes:
    499
    Likes:
    281
    Temas:
    3
    si, ese return esta de mas.
     
  12. melo2412

    melo2412 Miembro de bronce

    Registro:
    4 Ene 2011
    Mensajes:
    1,057
    Likes:
    137
    Temas:
    111
    Esta parte no entiendo:
    Yo creo que debería ser int med por que en ese caso estarías retornando esos 2 valores al main y con el void no se retornas nigun valor al main según tengo entendido explícame :s
     
  13. Dobger

    Dobger Miembro maestro

    Registro:
    3 Dic 2010
    Mensajes:
    499
    Likes:
    281
    Temas:
    3
    void o int como quieras lo que esta dando los valores es que estas mandado punteros como argumentos de tu función.