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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Problema al compilar un programa
« en: 8 Diciembre 2013, 01:15 am »

Buenas, he hecho el siguiente código que convierte dos caracteres hexadecimales a decimal, y sale del programa al ingresar "qq":



Código:
// Biblioteca del sistema 
#include <stdio.h>

// Constantes del fichero
#define CTE       16
#define VALOR     "El valor decimal de 0x%c%c es %d\n"
#define NOERROR   1
#define ERROR     0


// Funciones que usaremos
int hexDec(char car1, char car2);
int leeCaracter(char * ccar1, char * ccar2);

int main()
{
  // Declaramos las variables
  char car1;
  char car2;

  // Declaramos las variables de control
  int cuno;
  int cdos;

  // Solicitamos los caracteres hexadecimales

  do
    {
     
      // Llamamos a la función leeCaracter
      leeCaracter(&car1, &car2);
     
      cuno = NOERROR;
      cdos = NOERROR;
      if (!((('0' <= car1) && (car1 <= '9'))
            || (('A' <= car1) && (car1 <= 'F'))
            || (('a' <= car1) && (car1 <= 'f'))))
        {
          cuno = ERROR;
        }

      if (!((('0' <= car2) && (car2 <= '9'))
            || (('A' <= car2) && (car2 <= 'F'))
            || (('a' <= car2) && (car2 <= 'f'))))
        {
          cdos = ERROR;
        }
      if ((NOERROR == cuno) && (NOERROR == cdos))
       
//Llamamos a la funcion hexDec
hexDec(car1, car2);
      if ((cuno == ERROR) && (car1 != 'q'))
        {
  printf("Error en el primer valor introducido\n");
}
      if ((cdos == ERROR) && (car2 != 'q'))
        {
  printf("Error en el segundo valor introducido\n");
}
      getchar();
    }
  while ((car1 != 'q')  || (car2 != 'q'));
 
  return 0;
}

// Definimos la funcion hexDec

int hexDec(char car1, char car2)
{
  int valor1;
  int valor2;
  int valor;

  if (('0' <= car1) && (car1 <= '9'))
    {
      valor1 = car1 - '0';
    }
  else if (('A' <= car1) && (car1 <= 'F'))
    {
      valor1 = car1 - 'A' + 10;
    }
  else if (('a' <= car1) && (car1 <= 'f'))
    {
      valor1 = car1 - 'A' + 10 - 32;
    }

  if (('0' <= car2) && (car2 <= '9'))
    {
      valor2 = car2 - '0';
    }
  else if (('A' <= car2) && (car2 <= 'F'))
    {
      valor2 = car2 - 'A' + 10;
    }
  else if (('a' <= car2) && (car2 <= 'f'))
    {
      valor2 = car2 - 'A' + 10 - 32;
    }
  valor = CTE * valor1 + valor2;
  printf(VALOR, car1, car2, valor);
  return valor;
}

// Definimos la funcion leeCaracter

int leeCaracter(char * ccar1, char * ccar2)
{

  printf("Introduzca un valor hexadecimal: ");
  scanf("%c%c", ccar1, ccar2);
 
  if ((*ccar1 == 'q') && (*ccar2 == 'q'))
    {
      return 0;
    }
  else
    if (((('0' <= *ccar1) && (*ccar1 <= '9'))
         || (('A' <= *ccar1) && (*ccar1 <= 'F'))
         || (('a' <= *ccar1) && (*ccar1 <= 'f')))
|| ((('0' <= *ccar2) && (*ccar2 <= '9'))
    || (('A' <= *ccar2) && (*ccar2 <= 'F'))
    || (('a' <= *ccar2) && (*ccar2 <= 'f'))))
      {
     
return 1;
      }
}

Pero al compilar me da el siguiente aviso:

hexDec7.c: En la función ‘leeCaracter’:
hexDec7.c:138:1: aviso: el control alcanza el final de una función que no es void

¿Alguien me puede decir como solucionarlo?

Saludos y gracias de antemano!


En línea

SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: Problema al compilar un programa
« Respuesta #1 en: 8 Diciembre 2013, 01:35 am »

mmm lo he revisado asi a ojo y no he visto ningun fallo asique lo he metido al compilador y no ha dado ningun problema:

Código:
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings (0 minutes, 0 seconds)

he usado codeblocks.  :huh: :huh:


En línea

getting louder!
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Problema al compilar un programa
« Respuesta #2 en: 8 Diciembre 2013, 01:57 am »

SoyelRobert  el warning sale al usar la opción de -Wall de g++

el error la advertencia se elimina si haces que el programa devuelva algo

en el último pedazo de código le añades return 0; o lo que necesites y listo

Código
  1.  if ((*ccar1 == 'q') && (*ccar2 == 'q'))
  2.    {
  3.      return 0;
  4.    }
  5.  else
  6.    if (((('0' <= *ccar1) && (*ccar1 <= '9'))
  7.         || (('A' <= *ccar1) && (*ccar1 <= 'F'))
  8.         || (('a' <= *ccar1) && (*ccar1 <= 'f')))
  9. || ((('0' <= *ccar2) && (*ccar2 <= '9'))
  10.    || (('A' <= *ccar2) && (*ccar2 <= 'F'))
  11.    || (('a' <= *ccar2) && (*ccar2 <= 'f'))))
  12.      {
  13.  
  14. return 1;
  15.      }
  16.  
  17.     return 0;
  18. }

este tipo de avisos en la mayoría de veces no impiden que el programa se ejecute normalmente pero hace falta tenerlos en cuenta

SAludos
« Última modificación: 8 Diciembre 2013, 02:00 am por Stakewinner00 » En línea

jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Problema al compilar un programa
« Respuesta #3 en: 8 Diciembre 2013, 17:12 pm »

SoyelRobert  el warning sale al usar la opción de -Wall de g++

el error la advertencia se elimina si haces que el programa devuelva algo

en el último pedazo de código le añades return 0; o lo que necesites y listo

Código
  1.  if ((*ccar1 == 'q') && (*ccar2 == 'q'))
  2.    {
  3.      return 0;
  4.    }
  5.  else
  6.    if (((('0' <= *ccar1) && (*ccar1 <= '9'))
  7.         || (('A' <= *ccar1) && (*ccar1 <= 'F'))
  8.         || (('a' <= *ccar1) && (*ccar1 <= 'f')))
  9. || ((('0' <= *ccar2) && (*ccar2 <= '9'))
  10.    || (('A' <= *ccar2) && (*ccar2 <= 'F'))
  11.    || (('a' <= *ccar2) && (*ccar2 <= 'f'))))
  12.      {
  13.  
  14. return 1;
  15.      }
  16.  
  17.     return 0;
  18. }

este tipo de avisos en la mayoría de veces no impiden que el programa se ejecute normalmente pero hace falta tenerlos en cuenta

SAludos

Sí, sale con la opción -Wall, muchas gracias por la solución

Saludos!
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,725 Último mensaje 20 Octubre 2010, 05:14 am
por billyhp
Problema al compilar un programa en C.
Programación C/C++
deifk 3 2,778 Último mensaje 28 Noviembre 2011, 22:05 pm
por deifk
errores de programa en C al compilar gcc
Programación C/C++
ferminta 4 2,977 Último mensaje 13 Enero 2012, 18:40 pm
por rir3760
Problema con avisos al compilar un programa en C
Programación C/C++
jamatbar 2 2,996 Último mensaje 27 Noviembre 2013, 17:30 pm
por jamatbar
como compilar en el programa deb c++
Programación C/C++
wornmachine 2 1,793 Último mensaje 12 Octubre 2014, 11:50 am
por DeMoNcRaZy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines