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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


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

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Duda programa con estructuras de control
« Respuesta #10 en: 10 Noviembre 2011, 23:00 pm »

Hola

Pues flag, como su propio nombre indica es una bandera, es decir, una variable que dependiendo de su valor el programa hace una cosa u otra.

En el programa, en cada iteración se pone flag a 0 (es lo primero justo después del do). Cuando se introduce un valor erroneo se muestra un mensaje de error y se pone el flag a 1 para que no se calcule su valor decimal y no se muestre el resultado. Si el valor es correcto, flag sigue valiendo 0 y se calcula su valor decimal y se muestra.

No se si te habrá quedado claro.

Saludos

Vale, más o menos entiendo lo que es la bandera, pero por ejemplo, por que en el último while pones: while (1); ¿porqué (1)?



En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Duda programa con estructuras de control
« Respuesta #11 en: 10 Noviembre 2011, 23:23 pm »

Hola

He puesto while(1) para que se esté ejecutando siempre.

Si se introduce "qq" el programa finaliza (return 0) sin ejecutar lo que hay detrás, aunque también se podría poner en el while la condición de salida y sería exactamente igual.

Saludos


En línea

Breakbeat como forma de vida
jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Duda programa con estructuras de control
« Respuesta #12 en: 11 Noviembre 2011, 10:08 am »

Hola

He puesto while(1) para que se esté ejecutando siempre.

Si se introduce "qq" el programa finaliza (return 0) sin ejecutar lo que hay detrás, aunque también se podría poner en el while la condición de salida y sería exactamente igual.

Saludos

Ok, muchísimas gracias ;)

Saludos
En línea

KaL3o

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: Duda programa con estructuras de control
« Respuesta #13 en: 11 Noviembre 2011, 11:58 am »

Hola yo primero idente el codigo (es que me gusta asi :p )

Y le hize un pequeño cambio al code, le quite el primer else. Y solo mostre el mensaje de error al final.
Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.    char car1;
  6.    char car2;
  7.    char valor1;
  8.    char valor2;
  9.    int valor,flag;
  10.  
  11.    do
  12.    {
  13.        flag = 0;
  14.        printf("Introduzca un valor hexadecimal:\n");
  15.        scanf("\n%c%c", &car1, &car2);
  16.        if(car1 == 'q' && car2 == 'q')
  17.        {
  18.            printf("\nPresione Enter para salir.....");
  19.            fflush(stdin);
  20.            getchar();
  21.            return 0;
  22.        }
  23.        if('0'<=car1 && car1<='9')
  24.            valor1=car1-'0';
  25.        else
  26.            if ('A'<=car1 && car1<='F')
  27.                valor1=car1-'A'+10;
  28.            else
  29.                if ('a'<=car1 && car1<='f')
  30.                    valor1=car1-'a'+10;
  31.                else
  32.                    flag = 1;
  33.        if('0'<=car2 && car2<='9')
  34.            valor2=car2-'0';
  35.        else
  36.            if ('A'<=car2 && car2<='F')
  37.                valor2=car2-'A'+ 10;
  38.            else
  39.                if ('a'<=car2 && car2<='f')
  40.                    valor2=car2-'a'+10;
  41.                else
  42.                    flag = 1;
  43.        if(flag == 0)
  44.        {
  45.            valor= 16*valor1 + valor2;
  46.            printf("\nEL valor decimal de 0x%c%c es %d\n\n",car1,car2,valor);
  47.        }
  48.        else
  49.            printf("\nValor erroneo\n\n");
  50.    }
  51.    while(1);
  52.    return 0;
  53. }
  54.  

Una pequeña observacion, es que una buena practica de programación es hacer uso de una logica positiva... eso quiere decir que las "ramificaciones" deben estar cargadas por el lado de los if y no por el lado de los else.

Mientras escribia mire el codigo y decidi editarlo un poco de otra forma y quedo asi
Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.    char car1;
  6.    char car2;
  7.    char valor1;
  8.    char valor2;
  9.    int valor,flag;
  10.  
  11.    do
  12.    {
  13.        flag = 0;
  14.        printf("Introduzca un valor hexadecimal:\n");
  15.        scanf("\n%c%c", &car1, &car2);
  16.        if(car1 == 'q' && car2 == 'q')
  17.        {
  18.            printf("\nPresione Enter para salir.....");
  19.            fflush(stdin);
  20.            getchar();
  21.            return 0;
  22.        }
  23.        if('0'<=car1 && car1<='9')
  24.            valor1=car1-'0';
  25.        if ('A'<=car1 && car1<='F')
  26.            valor1=car1-'A'+10;
  27.        if ('a'<=car1 && car1<='f')
  28.            valor1=car1-'a'+10;
  29.        if('0'<=car2 && car2<='9')
  30.            valor2=car2-'0';
  31.        if ('A'<=car2 && car2<='F')
  32.            valor2=car2-'A'+ 10;
  33.        if ('a'<=car2 && car2<='f')
  34.            valor2=car2-'a'+10;
  35.        if(('0'<=car1 && car1<='9' || 'A'<=car1 && car1<='F' || 'a'<=car1 && car1<='f') && ('0'<=car2 && car2<='9' || 'A'<=car2 && car2<='F' || 'a'<=car2 && car2<='f'))
  36.            flag=1;
  37.        if(flag == 1)
  38.        {
  39.            valor= 16*valor1 + valor2;
  40.            printf("\nEL valor decimal de 0x%c%c es %d\n\n",car1,car2,valor);
  41.        }
  42.        else
  43.            printf("\nValor erroneo\n\n");
  44.    }
  45.    while(1);
  46.    return 0;
  47. }
  48.  

Alternativas a hacer resolver un problema de diferentes maneras es lo que hay
 ::)

salu2 ;)
En línea

Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.
jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Duda programa con estructuras de control
« Respuesta #14 en: 11 Noviembre 2011, 12:05 pm »

Gracias por la sugerencia :D

Saludos!
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicios con estructuras de control repetitivas
Ejercicios
rapser 2 12,498 Último mensaje 17 Octubre 2009, 08:05 am
por leogtz
[C] - Duda estructuras « 1 2 »
Programación C/C++
h0oke 14 7,215 Último mensaje 21 Mayo 2010, 22:34 pm
por Littlehorse
Duda con estructuras (struct)
Programación C/C++
alexis33de 1 2,745 Último mensaje 28 Agosto 2010, 03:41 am
por Littlehorse
No funcionan las estructuras de control.
Programación C/C++
FKT 2 1,864 Último mensaje 4 Agosto 2015, 17:22 pm
por FKT
AYUDA! problema con programas usando Estructuras de control selectivas
Programación C/C++
Ingrid1997 2 2,368 Último mensaje 11 Octubre 2015, 11:07 am
por Seyro97
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines