• Lunes 29 de Abril de 2024, 06:27

Autor Tema:  Como Se Elevan Los Numero En C????  (Leído 42957 veces)

mariote2000

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Como Se Elevan Los Numero En C????
« en: Jueves 4 de Marzo de 2004, 19:30 »
0
soy principiante en C, y no se como elevar un numero (por ejemplo, en Pascal, 3 elevado a 5 es 3^5.) como se hace en C???

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #1 en: Jueves 4 de Marzo de 2004, 19:36 »
0
La verdad es q no se si puede hacer, pero hacete una funcion "potencia" y listo

Salu2!!!!!

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #2 en: Jueves 4 de Marzo de 2004, 19:38 »
0
Hola:

  En C puedes utilizar la función pow() de la librería math.h

Saludos

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #3 en: Jueves 4 de Marzo de 2004, 19:47 »
0
Gracias a Mabrev uno sigue y sigue aprendiendo.
Fui a la MSDN y larga esto:

pow
Calculates x raised to the power of y.

double pow( double x, double y );

Routine Required Header Compatibility
pow <math.h> ANSI, Win 95, Win NT



Return Value

pow returns the value of xy. No error message is printed on overflow or underflow.

Values of x and y Return Value of pow  
x < > 0 and y = 0.0 1
x = 0.0 and y = 0.0 1
x = 0.0 and y < 0 INF


Parameters

x

Base

y

Exponent

Remarks

The pow function computes x raised to the power of y.

pow does not recognize integral floating-point values greater than 264, such as 1.0E100.

Example

/* POW.C
 *
 */

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

void main( void )
{
   double x = 2.0, y = 3.0, z;

   z = pow( x, y );
   printf( "%.1f to the power of %.1f is %.1f\n", x, y, z );
}


Output

2.0 to the power of 3.0 is 8.0

mariote2000

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #4 en: Jueves 4 de Marzo de 2004, 19:56 »
0
el problema eske tengo q hacer una funcion recursiva q calcule la potencia n-esima, siguiendo: base^exponetne=base*base^(exponente-1) y no se como utilizar el pow ese con esto.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #5 en: Jueves 4 de Marzo de 2004, 20:22 »
0
Pero vos no tenes q calcular la potencia utilizando math.h. A vos te pidieron q lo hagas por tu cuenta. Es por eso que tenes q hacer una funcion "potencia" que sea recursiva y q resuelva la potencia.
Por lo tanto pow(x,y) no te sirve para nada.
Entonces empeza a probar algo y pregunta dudas sobre eso y listo, pensa en q si "potencia" debera recibir cuantos parametros, como los debera recibie, q retornara la funcion y como hacer todo. Q validar antes de todo???? . Luego vienen las preguntas.....

Salu2!!!!

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #6 en: Jueves 4 de Marzo de 2004, 20:24 »
0
Para hacer eso no creo que te haga falta el pow, más bien creo que lo que te están pidiendo es una función recursiva para calcular una potencia.

Prueba con esto (lo he escrito sobre la marcha sin probarlo ni nada, así que no me responsabilizo de cómo esté):

Código: Text
  1.  
  2.   int potencia(int base, int exponente)
  3.        {
  4.        if (exponente == 0)
  5.         potencia = 1;
  6.        else
  7.         potencia = base * potencia(base, exponente-1);
  8.        return potencia;
  9.        }
  10.  
  11.  

  Puede que no sea suficiente con un tipo int y haya un desbordamiento, pero es que no me acuerdo muy bien como se indicaban tipos mayores (me suena long int, pero no estoy segura).

Espero que te sirva.

Saludos

mariote2000

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #7 en: Jueves 4 de Marzo de 2004, 21:40 »
0
pues si pudieran echar un ojo a mi programa(q supongo esta mal, pq da como 4 errores de compilacion)

#include "stdio.h"

int Potencia(int base,int exponente);

main() {

int z,base,exponente;


printf("Introduzca la base del numero\n");
scanf("%d",&base);
printf("Introduzca el exponente\n");
scanf("%d",&exponente);

z=Potencia(base,exponente);
printf("El resultado es %d",z);

}

int Potencia(int base, int exponente) {

if(exponente==0)
 Potencia= 1;
 else
 Potencia=base*Potencia(base, exponente-1);
 return Potencia;

}

los errores de compilacion estan en negrita y dicen:
1- LValue required in function Potencia
2- LValue required in function Potencia
3-Non-Portable pointer conversion in function Potencia
4- Parameter 'base' is never used in function Potencia.


ayuda por faaaaa

plaf

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #8 en: Jueves 4 de Marzo de 2004, 22:34 »
0
pfff... ya te hicieron la tarea, x lo menos leela antes de copiar pegar...
parece q mabrev se acostumbro a basic o algo asi :P
es cosa de q revises las lineas con error y recuerdes q es lo q te enseñaron sobre las funciones y como retornar valores

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #9 en: Viernes 5 de Marzo de 2004, 08:27 »
0
Bueno, al menos con la equivocación tendras que pensar algo... (De todas formas espero que esto solo sea una pequeña parte de lo que tienes que hacer porque no me gustaría estar sacándote las castañas del fuego y que no aprendas lo que tienes que aprender).

Saludos

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #10 en: Viernes 5 de Marzo de 2004, 14:26 »
0
Cita de: "mabrev"
Bueno, al menos con la equivocación tendras que pensar algo... (De todas formas espero que esto solo sea una pequeña parte de lo que tienes que hacer porque no me gustaría estar sacándote las castañas del fuego y que no aprendas lo que tienes que aprender).

Saludos
Estemmm.... Esto es algo que me molesta un poco del foro...
Generalmente viene los niños que recien comienzan a estudiar sistemas a querer sacarse el lio del Trabajo practico de pensar y desarrollar...


Podriamos tratar de evitar de dar codigo resuelto y de contar que se tiene que hacer???
Me parece algo mas "etico" (por decirlo de alguna forma)
Salvo en dudas muy puntuales y que OBVIAMENTE se vea que no es para un trabajo practico (esto de la potencia es una tarea que a mi me dieron en primer año de una semana para la otra... nisiqueira como TP)
QliX=D! - From the top of Tsunami

Lord_of_muerte

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #11 en: Viernes 8 de Octubre de 2004, 18:51 »
0
Mira compadre si tu utilizas C# solo tienes que poner la variable a la que le asignaras el valor

elevar=Math.Pow(x,y);

donde x es el numero que quieres elevar y la potencia a la que la vas a Elevar,
simple a por cierto la variable que asignes como elevar debe ser double

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #12 en: Viernes 8 de Octubre de 2004, 23:05 »
0
Citar
CODE 

 int potencia(int base, int exponente)
      {
      if (exponente == 0)
       potencia = 1;
      else
       potencia = base * potencia(base, exponente-1);
      return potencia;
      }

Citar
QUOTE (mabrev @ 5/03/2004, 08:27 AM)
Bueno, al menos con la equivocación tendras que pensar algo... (De todas formas espero que esto solo sea una pequeña parte de lo que tienes que hacer porque no me gustaría estar sacándote las castañas del fuego y que no aprendas lo que tienes que aprender).

Saludos 


Estemmm.... Esto es algo que me molesta un poco del foro...
Generalmente viene los niños que recien comienzan a estudiar sistemas a querer sacarse el lio del Trabajo practico de pensar y desarrollar...


Podriamos tratar de evitar de dar codigo resuelto y de contar que se tiene que hacer???
Me parece algo mas "etico" (por decirlo de alguna forma)
Salvo en dudas muy puntuales y que OBVIAMENTE se vea que no es para un trabajo practico (esto de la potencia es una tarea que a mi me dieron en primer año de una semana para la otra... nisiqueira como TP)

Ya te resolvieron el problema más  dificil, el de la lógica de esta recursividad.
Yo todavia no la entendí  :ph34r: (es que ando flojo  con este tema en C) .  El código tiene pequeños errores que seguramente te divertirás corrigiendo :comp:
Fijate bien como se define el valor que retorna una función en C.



Por cierto, alguien podría decir como es que esto resuelve el problema
Código: Text
  1.  
  2. // antes esta if(exponente == 0) return 1;
  3. base * Potencia(base, --exponente);  // no pongo el resto  por razones OBVIAS
  4.  
  5.  

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #13 en: Viernes 8 de Octubre de 2004, 23:48 »
0
AQUI UNA FORMA SIN USAR LA TAL FUNCION RECURSIVA
Código: Text
  1.  
  2. #include &#60;conio.h&#62;
  3. #include &#60;stdio.h&#62;
  4. int main()
  5. {
  6.  int x,y,z=1,a;
  7.  printf(&#34;Defina el valor: &#34;);    
  8.  scanf(&#34;%d&#34;,&x);
  9.  printf(&#34;Defina la potencia: &#34;);    
  10.  scanf(&#34;%d&#34;,&y);
  11.  for (a=0;a&#60;y;a++)
  12.  {
  13.   z=z*x;
  14.  }
  15.  printf(&#34;%d&#34;,z);
  16.  getch();
  17. }
  18.  
  19.  
SOLO POR LOCHA
El pasado son solo recuerdos, el futuro son solo sueños

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #14 en: Sábado 9 de Octubre de 2004, 03:35 »
0
Citar
AQUI UNA FORMA SIN USAR LA TAL FUNCION RECURSIVA

CODE 

#include <conio.h>
#include <stdio.h>
int main()
{
int x,y,z=1,a;
printf("Defina el valor: ");   
scanf("%d",&x);
printf("Defina la potencia: ");   
scanf("%d",&y);
for (a=0;a<y;a++)
{
 z=z*x;
}
printf("%d",z);
getch();
}
 


SOLO POR LOCHA
Vale pero.................................... :devil:

Citar
el problema eske tengo q hacer una funcion recursiva q calcule la potencia n-esima, siguiendo: base^exponetne=base*base^(exponente-1) y no se como utilizar el pow ese con esto

hannibal

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #15 en: Sábado 30 de Abril de 2005, 03:06 »
0
mira este programa que hice, esta en pseudocodigo  :scream:  pero creo que esta facil de entender   :smartass: , y es sin utilizar la funcion Pow.

#include "entrada.anp"

entero potencia (entero base, entero exponente)
inicio
   entero x,a=1;
   para (x=1;x<=exponente;x++)
      a *= base;
   regresar a;
fin


principal vacio
inicio
   entero a,n,b,e;
   mostrar "\t\t Elevar un numero a un exponente cualquiera\n";
   mostrar "Introduzca un numero: ";
   obtener a;
   mostrar "Introduzca el numero al que desea elevarlo: ";
   obtener b;
   para (n=0;n<=b;n++)
      e = potencia(a,n);
   mostrar "\n" <<a <<" elevado a la " <<b <<" es : " <<e <<"\n" ;
fin

parapipe

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #16 en: Sábado 23 de Septiembre de 2006, 05:46 »
0
Buenas Noches...

Bueno han resuelto el algoritmo usando recursos.
Pero he estado buscando la forma de que se eleve un numero a una cierta potencia pero que en el algoritmo se sume la base, el numero necesario de veces para que de el resultado.
Me explico

Si tengo 4 elevado a la 3, el resultado es 64. pero en el algoritmo debo hacer que se sume 16 veces el 4.

4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4=64

Alguien podría ayudarme con esto?
Gracias

Karla Gabriela

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como Se Elevan Los Numero En C????
« Respuesta #17 en: Martes 10 de Octubre de 2006, 01:28 »
0
Como se hace elevar un numero a x potencia implementando C para obtener la base y el exponente y lenguaje ensamblador para realizar las operaciones :(