Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - satu

#131
Hola

Te pongo sólo el código de la función

void mostrar_magallanes()
{
    struct _agenda *auxiliar = primero;
    printf("\nLos contacto magallaneros son: \n");

    while(auxiliar != NULL)
    {
        if(strcmp(auxiliar->equipo,"magallanero") == 0)
        {
            printf("\nEl nombre es: %s \n",auxiliar->nombre);
            printf ("el telefono: %s  \n",auxiliar->telefono);
        }
        auxiliar = auxiliar->siguiente;
    }
}


Saludos
#132
Hola

¿Que es "Pila", dónde lo has creado o declarado?

Saludos
#133
Hola


#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char palabra[100];
    char id;
    int n;
    int i;

    printf("Inserta n: ");
    if (scanf("%d", &n) != 1 || n < 0)
        return EXIT_FAILURE;
    while(getchar() != '\n') ;

    for (i = 0; i < n; i++)
        {
        printf("Inserta identificador (e, v, l, c): ");
        scanf(" %c", &id);
        while(getchar() != '\n') ;

        printf("Inserta PALABRA a tratar: ");
        fgets(palabra, 99, stdin);

        printf("Id: %c\n", id);
        printf("Palabra: %s\n\n", palabra);
        }

    return EXIT_SUCCESS;
}


Saludos
#134
Hola

Además el bucle se podría acortar hasta la mitad:


for(int i=2; i <= n/2 && flag==0;i++)


Saludos
#135
Hola

Pero si el array no está ordenado qué criterio utilizas para dividirlo??

Saludos
#136
Hola

Para eso están los parámetros del main.

Código (cpp) [Seleccionar]

int main (int argc, char *argv[])


argc indica el número de parámetros del programa
argv[0] es el nombre del programa
argv[1] es el primer parámetro
argv[2] es el segundo parámetro
.
.
.

Saludos
#137
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
#138
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
#139
Hola

La solución podría ser un do-while pero no lo planteas del todo bien, te pongo el código.

He utilizado la variable "flag" para imprimir el resultado sólo cuando el valor es correcto, y si no entiendes algo ya sabes.


#include <stdio.h>

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

    do
        {
        flag = 0;
        printf("Introduzca un valor hexadecimal:\n");
        scanf("\n%c%c", &car1, &car2);

        if(car1 == 'q' && car2 == 'q')
            {
            printf("\nPresione Enter para salir.....");
            while(getchar()!='\n');
            getchar();
            return 0;
            }
        else
            {
            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;
            else
                {
                flag = 1;
                printf("Valor erroneo\n\n");
                }

            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;
            else
                {
                flag = 1;
                printf("Valor erroneo\n\n");
                }

            if(flag == 0)
                {
                valor= 16*valor1 + valor2;
                printf("EL valor decimal de 0x%c%c es %d\n\n",car1,car2,valor);
                }
            }
        }
    while(1);

    return 0;
}


Saludos
#140
Hola

El nuevo valor lo debes pedir cuando c es 0, no al contrario


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,c,res;
    printf("Hola, ahora introduce una variable: ");
    scanf("%i" ,&a);
    printf("Introduce un segundo valor: ");
    scanf("%i" ,&b);
    printf("No es por ser pesado, pero introduce un tercer valor: ");
    scanf("%i" ,&c);

    if(c==0)
        {
        printf("No se puede dividir entre 0\n");
        do
            {
            printf("Introduce un valor distinto de 0: ");
            scanf("%i",&c);
            }
        while(c == 0);
        }

    res=(a+b)/c;
    printf("El resultado es %i\n", res);

    printf("Presione Enter para salir.....");
    while(getchar()!='\n');
    getchar();
    return 0;
}


Saludos