Programa DEV C++

Iniciado por Jaua10, 27 Noviembre 2014, 03:20 AM

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

Jaua10

Buenas noches a todos disuclpen tengo este programa que he hecho y varias personas me dicen que les corre pero yo cuando intento hacer lo que sale un error de que mi pow no esta declarado, podrian decir si ustedes pueden correrlo por favor? ya que como me da error a mi, he intentado repararlo y sigue el error aqui mi codigo.

Código (cpp) [Seleccionar]
#include<math.h>
#include<stdio.h>

main()
{
   int numero, numero2, numero3, r2, r22, r23;
   float base = 10.33, exponente = 3,resultado,resultado2,resultado3;
   printf("Ingrese un valor: "); scanf("%d", &numero);
   printf("Ingrese un valor: "); scanf("%d", &numero2);
   printf("Ingrese un valor: "); scanf("%d", &numero3);
   printf("\n");
   r2 = numero*numero;
   r22 = numero2*numero2;
   r23 = numero3*numero3;
   resultado = pow(r2, 3);
   resultado2 = pow(r22, 3);
   resultado3 = pow(r23, 3);
   resultado = pow(2, 3);
   printf("[%d][%d][%f]", numero, r2, resultado);
   printf("\n\n");
   printf("[%d][%d][%f]", numero2, r22, resultado2);
   printf("\n\n");
   printf("[%d][%d][%f]", numero3, r23, resultado3);
   return 0;
}


Me da el siguiente error:
http://prntscr.com/5ajut3

Gracias de ante mano

MCKSys Argentina

Hola!

Para ser honesto, no he programado nunca en DEV C++, pero buscando con google llegué a ésto:

Citar
pow()
Prototype: double pow(double b, double p);
Header File: math.h (C) or cmath (C++)
Explanation: This function raises b to the p power.

Osea que deberías incluir cmath.h, no math.h

fuente: click

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


dRak0

#2
Perdon , pero te cerraron el tema anterior(donde consultas lo mismo) por que la respuesta ya te la dieron(Me incluyo).Si compilas con g++ usa cmath como te dijieron.


Copio lo que te dije antes:

Citar
Manual:

Definicion de Potencia:

Tenemos 2 cosas importantes la base(b) y el exponente(n).
La base es el numero que se va a multipicar n veces por si mismo siendo n el exponente.
Ejemplo:

Base:2
Exponente:3

Potencia=Base*base*base (Base multiplicado n(con n exponente) veces por si mismo)

Entonces se puede hacer una funcion recursiva del estilo

funcion potencia(base , exponente)
si el exponente es 0
    devuelvo 1(Por definicion matematica cualquier base elevado al numero 0 da 1)
sino
   devuelvo (base * potencia(base,exponente-1))

----------------------------------------------------------------------
Esto ya esta hecho , y esta funcion esta en la libreria math, se llama pow.
Pow acepta 2 parametros , base y exponente.

Ejemplo:
2^3
entero=pow(2,3)

Solo tenes que añadir la libreria al principio del codigo y luego utilizar la funcion.
No tengo idea como funciona pow internamente pero casi seguro que es una funcion recursiva.Podrias desensamblar el codigo y ver como trabaja pow(si tienes conocimientos de ASM).

Saludos.

Ahora para que declaras una variable exponente si no la usas , reservas espacio en memoria cuando ese espacio podria ser utilizado para otra cosa.Tambien existe algo que se llama arrays , fijate :

printf("Ingrese un valor: "); scanf("%d",&numero);
   printf("Ingrese un valor: "); scanf("%d",&numero2);
   printf("Ingrese un valor: "); scanf("%d",&numero3);

r2,r22,r23.

   r2 = numero*numero;
   r22 = numero2*numero2;
   r23 = numero3*numero3;

Tambien acostumbrate a utilizar %s .Busca format string vulnerability.


zShackra

Yo no entiendo como la gente aún usa un IDE TAN problemático y cómo las universidades siguen promoviendo el uso de herramientas TAN pobres.

Existen alternativas impresionantes... desde Code::Blocks pasando por QtCreator hasta Visual Studio... ¿por qué enfrascarse en algo tan cutre? Es que hasta NetBeans y Eclipse son mejores... y eso que estos últimos son bien pesados.

He compilado tu código, y en Visual Studio no da problemas, por cierto... a tu función main le falta declarar su tipo entero, y la variable base y exponente están demás, así como la instrucción:

resultado = pow(2, 3);

Además, cuando asignas valores a los resultados, estás elevando al cubo el valor que acabas de elevar al cuadrado... noto mucho desorden en tu código, sin ánimos de ofender, pero... te sugiero encarecidamente que:


  • Cambies de IDE. (Code::Blocks no estaría mal para empezar)
  • Si no quieres que te cierren más temas, comienza a leer un libro de programación.

Jaua10

Gracias al fin pude solucionar