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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


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

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Errores con programa (punteros)
« en: 10 Diciembre 2011, 18:59 pm »

Buenas, me han dado el enunciado siguiente: Modifique el programa hexdec4 (que os pongo a continuación), añadiendo una función que solicite los dos carácteres hexadecimales, y que devuelva:

-0 si se ha introducido el código qq de salida
-1 si se han introducido dos carácteres hexadecimales correctos.

En este último caso, también devolverá los dos caracteres hexadecimales convertidos.


Una aclaración, si introducimos un caracter que no sea hexadecimal, por ejemplo el mm, el programa nos debe pedir de nuevo que introduzcamos dos nuevos carácteres hexadecimales, así hasta que metamos uno correcto.

El programa lo que hace es una conversión de hexadecimal a decimal.
El programa que hay que modificar es el siguiente:

Código
  1. #include <stdio.h>
  2.  
  3. int hexadecimal (char car1, char car2); //Declaramos la funcion hexadecimal
  4.  
  5. int main ()
  6. {
  7.   //Declaramos las variables
  8.   char car1;
  9.   char car2;
  10.   int valor;
  11.  
  12.   //Iniciamos el bucle while
  13.   while (1){
  14.      printf("Introduzca un valor hexadecimal:");
  15.      scanf(" %c%c", &car1, &car2);
  16.      if (car1 == 'q' && car2 == 'q'){
  17.         printf ("Presione enter para salir\n");
  18.         while (getchar() != '\n');  
  19.         getchar();
  20.         break;
  21.      }if ((valor = hexadecimal (car1, car2)))  //Llamamos a la funcion hexadecimal
  22.  
  23.         printf("El valor decimal de 0x%c%c es %d\n", car1, car2, valor);
  24.   }
  25.  
  26.   return 0;
  27. }
  28.  
  29. int hexadecimal(char car1, char car2)   //Funcion hexadecimal
  30. {
  31.   char valor1;
  32.   char valor2;
  33.  
  34.   if ('0' <= car1 && car1 <= '9')
  35.      valor1 = car1 - '0';
  36.   else if ('A' <= car1 && car1 <= 'F')
  37.      valor1 = car1 - 'A' + 10;
  38.   else if ('a' <= car1 && car1 <= 'f')
  39.      valor1 = car1 - 'a' + 10;
  40.   else
  41.      return -1;
  42.  
  43.   if ('0' <= car2 && car2 <= '9')
  44.      valor2 = car2 - '0';
  45.   else if ('A' <= car2 && car2 <= 'F')
  46.      valor2 = car2 - 'A' + 10;
  47.   else if ('a' <= car2 && car2 <= 'f')
  48.      valor2 = car2 - 'a' + 10;
  49.   else
  50.      return -1;
  51.  
  52.   return valor1 * 16 + valor2;
  53. }
  54.  

Y lo he modificado de tal forma:

Código
  1. #include <stdio.h>
  2.  
  3. int* hexadecimal (char car1, char car2); //Declaramos la funcion hexadecimal
  4.  
  5. int main ()
  6. {
  7.   //Declaramos las variables
  8.  
  9.   char car1;
  10.   char car2;
  11.   int valor, valor1,valor2;
  12.   int*v;
  13.  
  14.  
  15.  
  16.   //Iniciamos el bucle while
  17.   while (1)
  18.   {
  19.      printf("Introduzca un valor hexadecimal:");
  20.      scanf("%c%c", &car1, &car2);
  21.  
  22.      v = hexadecimal (car1, car2);  //Llamamos a la funcion hexadecimal
  23.  
  24.      if(v==0) printf("Presione enter para salir\n");
  25.      else
  26.           v= hexadecimal (car1, car2);
  27.  
  28.  
  29.         printf("El valor decimal de 0x%c%c es %d\n", car1, car2, valor);
  30.  
  31.   }
  32.   return (0);
  33. }
  34.  
  35. int* hexadecimal(char car1, char car2)   //Funcion hexadecimal
  36. {
  37.   char valor1;
  38.   char valor2;
  39.   int*p;
  40.   p=NULL;
  41.   p=(int*)malloc(2*sizeof(int));
  42.   if(!p) printf("Error en la reserva dinamica de memoria:");
  43.   else
  44.   {
  45.   if (car1 == 'q' && car2 == 'q')
  46.   {
  47.   *p=0;
  48.   }
  49.   return(p);
  50.  
  51.   else ((('0' <= car1 && car1 <= '9')||('A' <= car1 && car1 <= 'F')||('a' <= car1 && car1 <= 'f'))&&(('0' <= car2 && car2 <= '9')||('A' <= car2 && car2 <= 'F')||('a' <= car2 && car2 <= 'f')))   {
  52.    {
  53.    valor=valor1 * 16 + valor2;
  54.    return(valor);    
  55.    }
  56.   }
  57. }
  58.  


Me da errores y no hace lo que busco, ¿alguna ayuda?

Saludos!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con punteros (error programa)
Programación C/C++
apoeti 7 2,310 Último mensaje 12 Agosto 2012, 01:19 am
por rir3760
Error en programa de punteros
Programación C/C++
Error 404: 7 1,839 Último mensaje 24 Mayo 2013, 11:24 am
por leosansan
Ayuda con errores programa c++.
Programación C/C++
xboxone007 6 1,641 Último mensaje 3 Febrero 2014, 09:28 am
por eferion
programa punteros c
Programación C/C++
chicainge 2 934 Último mensaje 6 Marzo 2015, 03:01 am
por rir3760
Programa para revisar los errores de sintaxis de un programa en C. « 1 2 3 »
Programación C/C++
NOB2014 22 8,927 Último mensaje 15 Octubre 2016, 19:44 pm
por geeke
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines