elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con avisos al compilar un programa en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con avisos al compilar un programa en C  (Leído 3,044 veces)
jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Problema con avisos al compilar un programa en C
« en: 27 Noviembre 2013, 15:36 pm »

Buenas, tengo que hacer el siguiente programa:

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!


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Problema con avisos al compilar un programa en C
« Respuesta #1 en: 27 Noviembre 2013, 16:52 pm »

Curioso, a mi me compiló perfecto. (Code::Blocks - Mingw)

Veamos:

Código
  1. printf(T_BASE, base);
dado que T_BASE es "BASE:\n", quedaría:

Código
  1. printf("BASE:\n", base);

Ahí, la variable "base", no hace nada.

Igual pasa en el printf de T_EXPONENTE.

Cambiándole alguna cosa, me quedó así:
Código
  1. //Incluímos las librerías propias y del sistema
  2. #include <stdio.h>
  3.  
  4. #define T_BASE              "BASE:\n"
  5. #define T_EXPONENTE         "EXPONENTE:\n"
  6. #define T_RESULTADO         "%d elevado a %d es %d\n"
  7. #define T_INTRODUZCA_NUMERO "Introduzca un numero no negativo: "
  8.  
  9. //Declaramos las funciones
  10. int potencia(int,int);
  11. int leeNumero();
  12.  
  13. int main() /**Main**/
  14. {
  15.  
  16. //Declaramos las variables a usar
  17.  int base;
  18.  int exponente;
  19.  int resultado;
  20.  int numero;
  21.  
  22.  printf(T_BASE);
  23.  base = leeNumero(numero);
  24.  printf(T_EXPONENTE);
  25.  exponente = leeNumero(numero);        //Llamamos a la funcion leeNumero
  26.  
  27.  resultado = potencia(base, exponente);        //Llamamos a la funcion potencia
  28.  printf(T_RESULTADO, base, exponente, resultado);
  29.  return 0;
  30. }
  31.  
  32.  
  33. int potencia(int base, int exponente) /**Potencia**/
  34. {
  35.  
  36.  int resultado = 1;
  37.  if (!exponente)
  38.    {
  39.      return 1;
  40.    }
  41.  
  42.  else
  43.    {
  44.  
  45.      for (; exponente >= 1; exponente--)
  46.        {
  47.          resultado *= base;
  48.        }
  49.    }
  50.  
  51.  return resultado;
  52. }
  53.  
  54. int leeNumero()  /**LeeNumero**/
  55. {
  56.  int numero;
  57.  do
  58.    {
  59.      printf(T_INTRODUZCA_NUMERO);
  60.      scanf("%d", &numero);
  61.    }
  62.  while (numero < 0);
  63.  
  64.  return numero;
  65. }

En cualquier caso, parece que todo estea bien. Ignora esos avisos.


En línea

jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Problema con avisos al compilar un programa en C
« Respuesta #2 en: 27 Noviembre 2013, 17:30 pm »

Sí, los ignoraré por que el programa funciona perfectamente xD

Gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema para compilar programa en cygwin
Programación General
billyhp 0 3,754 Último mensaje 20 Octubre 2010, 05:14 am
por billyhp
Problema al compilar un programa en C.
Programación C/C++
deifk 3 2,811 Último mensaje 28 Noviembre 2011, 22:05 pm
por deifk
errores de programa en C al compilar gcc
Programación C/C++
ferminta 4 3,026 Último mensaje 13 Enero 2012, 18:40 pm
por rir3760
Problema al compilar un programa
Programación C/C++
jamatbar 3 2,175 Último mensaje 8 Diciembre 2013, 17:12 pm
por jamatbar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines