Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Jaua10 en 26 Noviembre 2014, 05:18 am



Título: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 05:18 am
buenas noches disculpen tengo este codigo y me gustaria saber como puedo ubicar para hacer que em aparezca la elevacion de mis numeros ingresados por el usario en la matriz me aparezcan al cuadrado y luego al cubo, solo me falta lo de elevarlo al cubo y no se como hacerlo.

Código:
#include<stdio.h>
#include<conio.h>

main()
{
int numero,numero2,numero3,r2,r22,r23;
float r3,r32,r33;
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;
r3=pow(r2)(1/3);
r32=pow(r22)(1/3);
r33=pow(r23)(1/3);
printf("[%d][%d][%f]",numero,r2,r3);
printf("\n\n");
printf("[%d][%d][%f]",numero2,r22,r32);
printf("\n\n");
printf("[%d][%d][%f]",numero3,r23,r33);
getch();
return 0;
}

donde esta el "pow" es lo que necesito elevarlo al cubo para poder finalizar mi programa,si es posible hacerlo sin al biblioteca math.h y sin ningun sqrt o pow seria mucho mejor pero sino no importa


Título: Re: Elevacion cubica
Publicado por: engel lex en 26 Noviembre 2014, 06:08 am
Eso no es una matriz  :silbar:

Pow si no me equivoco pertenece a <cmath> y se usa

Código
  1. pow(base,exponente)


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 06:33 am
me da este error hermano

[Error] cmath: No such file or directory

y nunca termina de compilar el programa y se me pega la pc


Título: Re: Elevacion cubica
Publicado por: engel lex en 26 Noviembre 2014, 06:57 am
Procura no hacer 2 mensajes seguidos, si quieres decir algo adicinal usa el boton modificar
Procura igual para el codigo publicar con etiquetas GeSHi


Es raro que se pegue porque no hay ciclos ni nada...


Código
  1. #include<math.h>

Esa es la librería (no temas de usar google en caso de duda)

Recuerda que el main debe ser tipo int siempre
Código
  1. int main(){

En tu código los (1/3) o hacen nada... quitalos... prueba y avisas


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 07:14 am
sigue igual hermano, no me deja compilar xq se queda compilando infinitamente, creo que es algo en el codigo que lo pone infinito.

El programa se trata de que ingreso 3 numeros en una columna y luego en la columna numero 2 deben aparecer los numeros ingresados en la columna 1 pero al cuadrado, y luego en la columna 3(que es la parte que me falta)necesito que muestre los numeros de la segunda columna pero elevados al cubo es decir 1/3 (1 entre 3 ). Pero llevo al rededor de 1semana haciendolo y no puedo hacer esa parte si me ayudaran se los agradezco muchisimo.


Título: Re: Elevacion cubica
Publicado por: engel lex en 26 Noviembre 2014, 07:19 am
No xD

x3 es el cubo de x
x1/3 es la raiz cubica de x

Propiedades de exponentes


Igual esos 1/3 no hacen nada ahí, solo deben producir error...


Si lo que se queda pegado es el compilador es raro... no importa lo wue haya en tu código el compilador no debe pegarse... no estaras en modo debug o algo de eso? Que compulador usas? (Aunque por el conio.h debe ser dev c++)


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 07:37 am
jajaja, exacto necesito es la formula x1/3 pero en los numeros de la segunda columna y que se reflejen en la tercera columna, yo lo quite ese 1/3 y sigue asi es raro aun que estoy haciendo otros codigos y me andan perfecto, es solo con este que tengo ese problema, por cierto no estoy en modo debug y uso dev c++


Título: Re: Elevacion cubica
Publicado por: engel lex en 26 Noviembre 2014, 07:39 am
Publica como tienes el código ahora


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 07:42 am
ok ya soluciones lo del compilador, ahora esto es el codigo que tengo

Código:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
int numero,numero2,numero3,r2,r22,r23;
float r3,r32,r33;
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;
r3=powr2;
//r32=pow(r22);
//r33=pow(r23);
printf("[%d][%d][%f]",numero,r2,r3);
printf("\n\n");
printf("[%d][%d][%f]",numero2,r22,r32);
printf("\n\n");
printf("[%d][%d][%f]",numero3,r23,r33);
getch();
return 0;
}


Título: Re: Elevacion cubica
Publicado por: engel lex en 26 Noviembre 2014, 07:50 am
Revisa bien el codigo, usa pow como te indique y eso esta listo


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 08:24 am
No se hermano la verdad es que perdonarme pero ando demasiado bruto no se como hacerlo


Título: Re: Elevacion cubica
Publicado por: Orubatosu en 26 Noviembre 2014, 14:54 pm
Así a bote pronto, creo que estás pensando que "Pow" eleva al cubo.

Si, pero no... eleva a cualquier exponente.

El modo correcto de usarlo es (por ejemplo)

Código:
float base, exponente, resultado // tres valores. la base, o numero que quieres elevar al cubo, el exponente, en este caso 3 (al cubo) y obviamente el resultado.
base = 10.33 // (por ejemplo)
exponente = 3 // o cualquier otro numero
resultado = pow(base, exponente);

Obviamente puedes acortar mucho la cosa. No hace falta usar la variable exponente (ni que sea doble, lo he hecho por sencillez). Podrías tranquilamente usar:

Código:
resultado = pow(base, 3);

A ver si así consigues que funcione.


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 15:59 pm
tengo mi programa asi

Código:
#include<stdio.h>
#include<conio.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);
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;
}

y me da el siguiente error (15   26   C:\Users\Jesús\Desktop\nuevo.cpp   [Error] 'pow' was not declared in this scope)


Título: Re: Elevacion cubica
Publicado por: Shell Root en 26 Noviembre 2014, 16:31 pm
Se necesita declarar la función pow antes del main,
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<math.h>
  4.  
  5. void pow(int e, int b);
  6.  
  7. main()
  8. {
  9.   int numero, numero2, numero3, r2, r22, r23;
  10.   float base = 10.33, exponente = 3, resultado, resultado2, resultado3;
  11.   printf("Ingrese un valor: "); scanf("%d",&numero);
  12.   printf("Ingrese un valor: "); scanf("%d",&numero2);
  13.   printf("Ingrese un valor: "); scanf("%d",&numero3);
  14.   printf("\n");
  15.   r2 = numero*numero;
  16.   r22 = numero2*numero2;
  17.   r23 = numero3*numero3;
  18.   resultado = (r2), pow(base, 3);
  19.   resultado2 = (r22), pow(base, 3);
  20.   resultado3 = (r23), pow(base, 3);
  21.   printf("[%d][%d][%f]", numero, r2, resultado);
  22.   printf("\n\n");
  23.   printf("[%d][%d][%f]", numero2, r22, resultado2);
  24.  printf("\n\n");
  25.  printf("[%d][%d][%f]", numero3, r23, resultado3);
  26.  getch();
  27.  return 0;
  28. }


Título: Re: Elevacion cubica
Publicado por: eferion en 26 Noviembre 2014, 16:36 pm
Se necesita declarar la función pow antes del main

Y entonces para qué sirve #include <math.h> ???


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 16:49 pm
me suelta este error

http://prntscr.com/5acmop


Título: Re: Elevacion cubica
Publicado por: eferion en 26 Noviembre 2014, 16:53 pm
me suelta este error

http://prntscr.com/5acmop

Lógico y normal. Te sale ese error porque no encuentra la implementación de una función con la firma void pow(int, int)

Además... se supone que "pow" debe devolver un valor... si no, ¿dónde se supone que va a almacenar el resultado? Los argumentos se los estás pasando por valor, no por punteros, por lo que no puede modificar esos valores.

Quita la declaración de ese pow. Si no te compila la aplicación es porque necesitarás añadir la librería math a tu proyecto de forma manual... quizás tengas que poner algo tal que "-lm" (sin comillas) en las directivas de compilación.

PD.: dado que la versión "pow" de math.h devuelve el resultado en forma de return, estaría bien que almacenases dicho valor en alguna variable, no se quizás algo tal que:

Código
  1. double resultado = pow( base, 3 );


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 17:54 pm
sigue igual el codigo no me anda T_T


Título: Re: Elevacion cubica
Publicado por: eferion en 26 Noviembre 2014, 21:08 pm
has probado lo que te he comentado de compilar con la opción -lm???


Título: Re: Elevacion cubica
Publicado por: fary en 26 Noviembre 2014, 21:22 pm
No sé que problemas tenéis para utilizar esta función... es tan simple como esto.

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int main()
  5. {
  6.    int resultado = pow(2,3); // dos elevado a tres
  7.  
  8.    printf("%i\n",resultado);
  9.  
  10.    return 0;
  11. }


Título: Re: Elevacion cubica
Publicado por: eferion en 26 Noviembre 2014, 21:25 pm
El problema es que hay compiladores que no enlazan automáticamente con la librería matemática y ese enlace hay que hacerlo manualmente...


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 21:31 pm
El problema es que el programa no compila  y mi codigo es el siguiente:

Código:
#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


Título: Re: Elevacion cubica
Publicado por: dRak0 en 26 Noviembre 2014, 21:35 pm
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.



Título: Re: Elevacion cubica
Publicado por: _Enko en 26 Noviembre 2014, 22:14 pm
El problema es que el programa no compila  y mi codigo es el siguiente:

Código:
#include<conio.h>

Que hace eso ahi? No hace falta ese include.

Eso corre perfectamente
Código
  1. #include<stdio.h>
  2. #include<math.h>
  3.  
  4.  
  5.  
  6. main()
  7. {
  8.   int numero, numero2, numero3, r2, r22, r23;
  9.   float base = 10.33, exponente = 3,resultado,resultado2,resultado3;
  10.   printf("Ingrese un valor: "); scanf("%d",&numero);
  11.   printf("Ingrese un valor: "); scanf("%d",&numero2);
  12.   printf("Ingrese un valor: "); scanf("%d",&numero3);
  13.   printf("\n");
  14.   r2 = numero*numero;
  15.   r22 = numero2*numero2;
  16.   r23 = numero3*numero3;
  17.   resultado = (r2), pow(base, 3);
  18.   resultado2 = (r22), pow(base, 3);
  19.   resultado3 = (r23), pow(base, 3);
  20.   resultado = pow(1,3);
  21.   printf("[%d][%d][%f]", numero, r2, resultado);
  22.   printf("\n\n");
  23.   printf("[%d][%d][%f]", numero2, r22, resultado2);
  24.   printf("\n\n");
  25.   printf("[%d][%d][%f]", numero3, r23, resultado3);
  26.  return 0;
  27. }
  28.  

Saludos.


Título: Re: Elevacion cubica
Publicado por: eferion en 26 Noviembre 2014, 22:24 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?


Título: Re: Elevacion cubica
Publicado por: dRak0 en 26 Noviembre 2014, 22:27 pm
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.


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 26 Noviembre 2014, 22:59 pm
Mi codigo actualmente tiene la libreria math.h solo que en la imagen no salio pero aqui esta la cosa:

Código:
#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.


Título: Re: Elevacion cubica
Publicado por: eferion en 27 Noviembre 2014, 01:00 am
Elevar al cubo se hace con:

Código
  1. resultado = pow(r2, 3);

no con

Código
  1. resultado = (r2),pow(2, 3);


Título: Re: Elevacion cubica
Publicado por: Jaua10 en 27 Noviembre 2014, 01:46 am
Código
  1. #include<math.h>
  2. #include<stdio.h>
  3. #include<conio.h>
  4.  
  5. void pow(int e, int b);
  6.  
  7. main()
  8. {
  9.   int numero, numero2, numero3, r2, r22, r23;
  10.   float base = 10.33, exponente = 3,resultado,resultado2,resultado3;
  11.   printf("Ingrese un valor: "); scanf("%d",&numero);
  12.   printf("Ingrese un valor: "); scanf("%d",&numero2);
  13.   printf("Ingrese un valor: "); scanf("%d",&numero3);
  14.   printf("\n");
  15.   r2 = numero*numero;
  16.   r22 = numero2*numero2;
  17.   r23 = numero3*numero3;
  18.   resultado = pow(r2, 3);
  19.   resultado2 = pow(r22, 3);
  20.   resultado3 = pow(r23, 3);
  21.   resultado = pow(2,3);
  22.   printf("[%d][%d][%f]", numero, r2, resultado);
  23.   printf("\n\n");
  24.   printf("[%d][%d][%f]", numero2, r22, resultado2);
  25.   printf("\n\n");
  26.   printf("[%d][%d][%f]", numero3, r23, resultado3);
  27.  getch();
  28.  return 0;
  29. }

Tal como dices @eferion y aun asi me da error


Título: Re: Elevacion cubica
Publicado por: Eternal Idol en 27 Noviembre 2014, 02:13 am
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.