potencia.c: realice un programa que obtenga la potencia de un número elevado a otro, dados ambos
por teclado. Para ello:
a ) escriba la función potencia, que recibe dos números como parámetros, la base y el exponente, y devuelve el resultado de elevar el primero al segundo.
b ) escriba la función leeNumero, que no recibe ningún dato como parámetro y solicita un número no negativo (mayor o igual que 0) por teclado, que devolverá como resultado. La función debe solicitar la introducción del número tantas veces como sean necesarias hasta que el número sea correcto (no negativo).
c ) escriba la función main, que haga uso de las dos funciones anteriores, para calcular la potencia de un número elevado a otro.
Pues bien, tengo hecho esto:
Código:
//Incluímos las librerías propias y del sistema
#include "potencia.h"
#include <stdio.h>
//Declaramos las funciones
int potencia(int base, int exponente);
int leeNumero();
int main()
{
//Declaramos las variables a usar
int base;
int exponente;
int resultado;
int numero;
printf(T_BASE, base);
base = leeNumero(numero);
printf(T_EXPONENTE, exponente);
exponente = leeNumero(numero); //Llamamos a la funcion leeNumero
resultado = potencia(base, exponente); //Llamamos a la funcion potencia
printf(T_RESULTADO, base, exponente, resultado);
return 0;
}
int potencia(int base, int exponente)
{
int resultado = 1;
if (exponente == 0)
{
resultado = 1;
}
else
{
for (; exponente >= 1; exponente--)
{
resultado *= base;
}
}
return resultado;
}
int leeNumero()
{
int numero;
do
{
printf(T_INTRODUZCA_NUMERO);
scanf("%d", &numero);
}
while (numero < 0);
return numero;
}
Este es el código de potencia.h:
Código:
#ifndef POTENCIA_H
#define POTENCIA_H
/*Textos a utilizar en la funcion printf*/
#define T_BASE "BASE:\n"
#define T_EXPONENTE "EXPONENTE:\n"
#define T_RESULTADO "%d elevado a %d es %d\n"
#define T_INTRODUZCA_NUMERO "Introduzca un numero no negativo: "
#endif
Pues bien, si lo compilo con el comando en consola:
gcc -W -Wall -o potencia potencia.c
Me salen los siguientes avisos:
salas@313CDC38:~/Escritorio/pfunciones2$ gcc -W -Wall -o potencia potencia.c
potencia.c: En la función ‘main’:
potencia.c:29:3: aviso: demasiados argumentos para el formato [-Wformat-extra-args]
potencia.c:31:3: aviso: demasiados argumentos para el formato [-Wformat-extra-args]
potencia.c:29:9: aviso: se utiliza ‘base’ sin inicializar en esta función [-Wuninitialized]
potencia.c:30:8: aviso: se utiliza ‘numero’ sin inicializar en esta función [-Wuninitialized]
potencia.c:31:9: aviso: se utiliza ‘exponente’ sin inicializar en esta función [-Wuninitialized]
¿Alguna forma de solucionarlo?
Compilándolo con el comando gcc -o potencia potencia.c me compila y hace lo que me piden, pero me gustaría tenerlo hecho sin que me de avisos. Gracias de antemano!
Saludos!