Elevacion cubica

Iniciado por Jaua10, 26 Noviembre 2014, 05:18 AM

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

eferion

El problema es que hay compiladores que no enlazan automáticamente con la librería matemática y ese enlace hay que hacerlo manualmente...

Jaua10

El problema es que el programa no compila  y mi codigo es el siguiente:

#include<stdio.h>
#include<conio.h>
#include<math.h>

void pow(int e, int b);

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 = (r2), pow(base, 3);
   resultado2 = (r22), pow(base, 3);
   resultado3 = (r23), pow(base, 3);
   resultado = pow(1,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);

  getch();
  return 0;
}

nose como hacer que los valores de la segunda columna se muestres en la tercera fila pero al cubo. que vendrian sienot resultado, resultado1 y resultado2

dRak0

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.


_Enko

#23
Cita de: Jaua10 en 26 Noviembre 2014, 21:31 PM
El problema es que el programa no compila  y mi codigo es el siguiente:


#include<conio.h>


Que hace eso ahi? No hace falta ese include.

Eso corre perfectamente

#include<stdio.h>
#include<math.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 = (r2), pow(base, 3);
  resultado2 = (r22), pow(base, 3);
  resultado3 = (r23), pow(base, 3);
  resultado = pow(1,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;
}


Saludos.

eferion

Cita de: Jaua10 en 26 Noviembre 2014, 21:31 PM
El problema es que el programa no compila  y mi codigo es el siguiente:

Te vuelvo a preguntar porque no me has respondido ¿Has probado a incluir -lm en las opciones de compilación?

dRak0

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.

Jaua10

Mi codigo actualmente tiene la libreria math.h solo que en la imagen no salio pero aqui esta la cosa:

#include<math.h>
#include<stdio.h>
#include<conio.h>

void pow(int e, int b);

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 = (r2),pow(2, 3);
   resultado2 = (r22), pow(2, 3);
   resultado3 = (r23), pow(2, 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);
  getch();
  return 0;
}


Ya he intentado todo lo que me han dicho y sigue igual y con lo que llevo actualmente es con lo que tengo menos errores, solo tengo 1 y o logro conseguir solo quiero que en mis variables r2,r22yr23 se eleven al cubo y se muestren en mis variables resultado, resultado1 y resultado2 pero ya he intentado todo.

eferion

Elevar al cubo se hace con:

resultado = pow(r2, 3);

no con

resultado = (r2),pow(2, 3);

Jaua10

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

void pow(int e, int b);

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);
 getch();
 return 0;
}


Tal como dices @eferion y aun asi me da error

Eternal Idol

#29
Si te sigue dando el mismo error es un problema de enlazado, ya te dieron la forma de resolverlo: pasandole -lm como parametro. Si seguis teniendo problemas consulta la ayuda del entorno que estas usando o consegui otro (hay mejores y gratuitos).

Y saca esto por favor, ya te lo dijeron, para algo estas incluyendo math.h:
void pow(int e, int b);


Leete este hilo y aplicalo, tambien te dijeron que sacaras conio.h: https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Lee las respuestas que te dan en el foro de paso.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón