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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Temas
Páginas: 1 2 3 [4]
31  Programación / Programación C/C++ / Problema al crear una función a partir de un programa en: 30 Noviembre 2011, 15:55 pm
Buenas, tengo el siguiente programa, que hace lo siguiente;

Un programa que lea dos caracteres hexadecimales y dé como salida su valor en decimal, en el que se permiten el uso de minusculas y además, que si se introduce un caracter invalido te lo indicará con un mensaje de error, y por ultimo, que si escribes la sentencia qq el programa se termine.

El codigo del programa es el siguiente (ya hace todo lo que se pide);

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

Y ahora me piden lo siguiente: Modificar el programa de tal forma que, además de la función main, exista una función que tome como parámetros dos caracteres hexadecimales y devuelva su valor decimal: Esto supone: declarar la nueva función, definir la nueva función y modificar la función main para que use la nueva funcion.

Pues bien, haciendo algunos cambios he llegado a esto:

Código
  1. #include <stdio.h>
  2.  
  3. int hexadecimal (char car1, char car2);
  4. int main ()
  5.  
  6. {
  7.  
  8.  char car1;
  9.  char car2;
  10.  char valor1;
  11.  char valor2;
  12.  int valor;
  13.  int flag;
  14.  
  15.  
  16.    flag=0;
  17.    printf("Introduzca un valor hexadecimal:\n");
  18.    scanf("\n%c%c", &car1, &car2);
  19.  
  20.    valor=hexadecimal(car1,car2);
  21.  
  22.    int hexadecimal (char car1, char car2)
  23.  
  24.    {
  25.  
  26.    if (car1 == 'q' && car2 == 'q')
  27.        {
  28.        printf("Presione enter para salir\n");
  29.        while (getchar()!='\n');
  30.        getchar ();
  31.        return 0;
  32.        }
  33.  
  34.    else
  35.     {
  36.        if('0'<=car1 && car1<='9')
  37.        valor1=car1-'0';
  38.        else if ('A'<=car1 && car1<='F')
  39.        valor1=car1-'A'+10;
  40.        else if ('a'<=car1 && car1<='f')
  41.        valor1=car1-'a'+10;
  42.        else
  43.          {
  44.          flag=1;
  45.          printf("Valor erroneo\n\n");
  46.          }
  47.  
  48.        if('0'<=car2 && car2<='9')
  49.        valor2=car2-'0';
  50.        else if ('A'<=car2 && car2<='F')
  51.        valor2=car2-'A'+ 10;
  52.        else if ('a'<=car2 && car2<='f')
  53.        valor2=car2-'a'+10;
  54.        else
  55.          {
  56.            flag=1;
  57.            printf("Valor erroneo\n\n");
  58.          }
  59.  
  60.        if (flag==0)
  61.          {
  62.            valor= 16*valor1 + valor2;
  63.            printf("EL valor decimal de 0x%c%c es %d\n",car1,car2,valor);
  64.          }
  65.     }
  66.     }
  67.  
  68.  
  69.  
  70.    return 0;
  71. }

Pero me da una serie de errores al compilar, ¿alguna ayuda o sugerencia?

Gracias de antemano y saludos!
32  Programación / Programación C/C++ / Calculo de números primos en: 12 Noviembre 2011, 14:26 pm
Me han dado el siguiente código de programa en c, es un programa que pide un numero por teclado e indica si el número es o no primo, comprobando todos los posibles divisores:



Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4.  
  5. int valor;
  6.  
  7. int i;
  8.  
  9. printf("Introduzca un valor: ");
  10. scanf(" %d", &valor);
  11.  
  12. for ( i = 2; i < valor; i++ )
  13. if (0 == (valor % i))
  14.  
  15. printf(" %d no es primo\n", valor);
  16. return 0;
  17. }

He probado el código y es un poco malo, si el número es primo directamente se sale del programa, y si el número no lo es, te lo repite por cada divisor que tenga, y me han pedido que haga que solo se imprima un mensaje indicando si el número es primo o no al final del bucle. Para esto, nos dicen que utilicemos una variable de control, cuando encuentre un divisor se active dicha variable. Y al final del bucle se mostrará el mensaje adecuado segun el valor de la variable de control.

He pensado que se tendría que usar la variable de control flag, pero no sé como implementarla muy bien, ¿alguien podría aclararmelo?, yo lo he intentado poniendo esto:

Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4.  
  5. int valor;
  6. int i;
  7. int flag;
  8. printf("Introduzca un valor: ");
  9. scanf(" %d", &valor);
  10.  
  11. flag=0;
  12.  
  13. for ( i = 2; i < valor; i++ )
  14. if (0 == (valor % i))
  15. {flag=1;
  16. printf(" %d no es primo\n", valor);
  17. }
  18. else
  19. flag=0;
  20. printf(" %d es primo\n", valor);
  21. return 0;
  22. }

Pero aun así, al probarlo me sigue dando error, ¿alguna solución?

Saludos
33  Programación / Programación C/C++ / Programa estaciones (cambio de if-else por switch) en: 11 Noviembre 2011, 11:57 am
He realizado este programa que hace lo siguiente: Según el més que indiques, te dirá de que estación se trata, te pide que introduzcas otro numero de mes, hasta que pongas un 0, que el programa saldrá, el código es el siguiente:

Código
  1. // Ficheros include del sistema
  2. #include <stdio.h>
  3. // Ficheros include de la aplicacion
  4. // Constantes de la aplicacion
  5. #define ERROR     0
  6. #define INVIERNO  1
  7. #define PRIMAVERA 2
  8. #define VERANO    3
  9. #define OTONO     4
  10.  
  11. int main ()
  12. {
  13. int mes;
  14. int estacion;
  15.  
  16. do
  17. {
  18.  
  19. printf("Introduzca un mes: ");
  20. scanf(" %d", &mes);
  21. if (mes == 12 || mes == 1 || mes == 2)
  22. estacion = INVIERNO;
  23. else if (mes == 3 || mes == 4 || mes == 5)
  24. estacion = PRIMAVERA;
  25. else if (mes == 6 || mes == 7 || mes == 8)
  26. estacion = VERANO;
  27. else if (mes == 9 || mes == 10 || mes == 11)
  28. estacion = OTONO;
  29. else
  30. estacion = ERROR;
  31. if (mes >= 1 && mes <=12)
  32. printf("El mes %d pertenece a la estacion %d\n", mes, estacion);
  33. }
  34. while (mes > 0 );
  35.  
  36. return 0;
  37. }
  38.  

Pero ahora me piden sustituir el if-else anidado por una sentencia switch, y la verdad, no sé como implementarla, ¿alguna sugerencia?

Saludos
34  Programación / Programación C/C++ / Duda programa con estructuras de control en: 9 Noviembre 2011, 22:14 pm
Buenas, tengo el siguiente programa que me pide un valor hexadecimal y lo transforma en decimal, sin importar que sea letras mayusculas o minúsculas, es código es el siguiente:

#include <stdio.h>

int main ()
{

char car1;
char car2;
char valor1;
char valor2;
int valor;
printf("Introduzca un valor hexadecimal:\n");
scanf("\n%c%c", &car1, &car2);

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;

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;

valor= 16*valor1 + valor2;

printf("EL valor decimal de 0x%c%c es %d\n",car1,car2,valor);
return 0;
}


Pero me han pedido que proteja el programa de tal forma que detecte si alguno de los carácteres es inválido, indicándolo con un mensaje de error y no procesándolos.

Lo he intentado poniendo otro if else, pero no sé como sacarlo, ¿alguna ayuda?

Gracias y un saludo
Páginas: 1 2 3 [4]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines