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 Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11
81  Programación / Programación C/C++ / Re: Problema al crear una función a partir de un programa en: 30 Noviembre 2011, 16:24 pm
Bueno, he seguido intentándolo y he llegado a compilar sin errores, el problema es que es como si no usara la función, ya que pongo dos valores y me dice que su valor en hexadecimal es 0, y eso con cualquiera :S

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.  int valor;
  11.  int flag;
  12.  
  13.  
  14.  
  15.    flag=0;
  16. while ((car1!='q') && (car2!='q'))
  17. {
  18.    printf("Introduzca un valor hexadecimal:\n");
  19.    scanf("\n%c%c", &car1, &car2);
  20.    valor=hexadecimal(car1, car2);
  21.    if ((car1!='q') && (car2!='q')){
  22.            printf("EL valor decimal de 0x%c%c es %d\n",car1,car2,valor);
  23.    }
  24.    }
  25.    return 0;
  26.  
  27.    }
  28.  
  29.  
  30.    int hexadecimal (char car1, char car2)
  31.  
  32.    {
  33.    char valor1;
  34.    char valor2;
  35.    int flag;
  36.    int valor;
  37.    if (car1 == 'q' && car2 == 'q')
  38.        {
  39.        printf("Presione enter para salir\n");
  40.        while (getchar()!='\n');
  41.        getchar ();
  42.        return 0;
  43.        }
  44.  
  45.    else
  46.     {
  47.        if('0'<=car1 && car1<='9')
  48.        valor1=car1-'0';
  49.        else if ('A'<=car1 && car1<='F')
  50.        valor1=car1-'A'+10;
  51.        else if ('a'<=car1 && car1<='f')
  52.        valor1=car1-'a'+10;
  53.        else
  54.          {
  55.          flag=1;
  56.          printf("Valor erroneo\n\n");
  57.          }
  58.  
  59.        if('0'<=car2 && car2<='9')
  60.        valor2=car2-'0';
  61.        else if ('A'<=car2 && car2<='F')
  62.        valor2=car2-'A'+ 10;
  63.        else if ('a'<=car2 && car2<='f')
  64.        valor2=car2-'a'+10;
  65.        else
  66.          {
  67.            flag=1;
  68.            printf("Valor erroneo\n\n");
  69.          }
  70.  
  71.        if (flag==0)
  72.          {
  73.            valor= 16*valor1 + valor2;
  74.            printf("EL valor decimal de 0x%c%c es %d\n",car1,car2,valor);
  75.          }
  76.     }
  77.     return valor;
  78.     }
  79.  
  80.  
82  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!
83  Programación / Programación C/C++ / Re: Calculo de números primos en: 13 Noviembre 2011, 23:14 pm
Mi código ha quedado así:

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

Pero ahora me piden que una vez comprobado que el dos no es divisor, probar sólo con los números impares.


EDITO poniendo lo que he intentado:

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

¿Con eso bastaría no?


Saludos
84  Programación / Programación C/C++ / Re: Calculo de números primos en: 13 Noviembre 2011, 22:47 pm
Gracias a todos por vuestras ayudas, y hombre, no son exigencias, es que básicamente me lo piden con eso XD
85  Programación / Programación C/C++ / Re: Calculo de números primos en: 12 Noviembre 2011, 18:03 pm
A ver, el programa me ha quedado así:

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.  int valor;
  6.  int i;
  7.  int flag = 1;//variable de control
  8.  printf("Introduzca un valor:");
  9.  scanf ("%d", &valor);//lee el número
  10.  
  11.  for (i=2; i < valor ; i++ )
  12.    if (0 == (valor % i ))
  13.      {//bucle que se repite hasta que i es igual a valor
  14. flag = 0;
  15.      }
  16.  if (flag == 1)
  17.    printf ("%d es un número primo\n", valor);
  18.  else // en funcion del valor de flag se imprime una u otra cosa
  19.    printf ("%d no es primo \n", valor);
  20.  return 0;
  21. }

Ahora me piden que: Para mejorar la eficiencia del programa, el bucle debe finalizar una vez encontrado el primer divisor. Para ello deberá hacer uso de la variable de control usada en el apartado anterior.

No lo entiendo, ¿se supone que el programa ya termina cuando encuentra un divisor no?

Saludos
86  Programación / Programación C/C++ / Re: Calculo de números primos en: 12 Noviembre 2011, 17:48 pm
Ya he conseguido hacerlo, muchas gracias a todos por vuestra ayuda.

Saludos!
87  Programación / Programación C/C++ / Re: Calculo de números primos en: 12 Noviembre 2011, 17:18 pm
Perdon, me comí un par de líneas de código, ya lo he editado

Saludos
88  Programación / Programación C/C++ / Re: Calculo de números primos en: 12 Noviembre 2011, 16:40 pm
Vale, leyendo más o menos lo que habeís puesto he hecho lo siguiente:

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

Si meto un número primo me dice que es primo (sólo con una sentencia),¿que puedo hacer para poner una función si el numero que meto es no primo?

Además, me he dado cuenta de que si meto un 1,2 o 3 el programa sale directamente, ¿por qué?
Saludos
89  Programación / Programación C/C++ / Re: Calculo de números primos en: 12 Noviembre 2011, 15:19 pm
Ademas si usas el metodo de DickgumShoe y lo probarias con un numero muy grande tendrias que hacer miles de ifs mas xD para ahorrar esos ifs es que se usan los bucles DickgumShoe.

Y lo de la variable flag, le puedes llamar como quieras, solo sera una variable auxiliar pero veo que la declaras y le asignas valores pero nunca verificas el valor para hacer algo.. cosa que esta al pedo sino xD

EL problema es que no sé muy bien como usarla XD
90  Programación / Programación C/C++ / Re: Calculo de números primos en: 12 Noviembre 2011, 14:52 pm
Gracias por la ayuda, aunque me piden que use una variable de control (flag), por eso no puedo ponerlo como tu lo tienes.

Saludos!
Páginas: 1 2 3 4 5 6 7 8 [9] 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines