Dev - C++ - Problemas con Ejercicio de Colas Dinamicas Lenguage C

 
Vista:
Imágen de perfil de Ector
Val: 23
Ha disminuido su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problemas con Ejercicio de Colas Dinamicas Lenguage C

Publicado por Ector (14 intervenciones) el 03/04/2019 22:02:58
Hola, me pueden ayudar con este ejercicio ¿En una cola del banco se desea saber el nombre de todas las personas que son mayores a 18 años. Desarrolle un programa en c que soluciones el problema utilizando la estrutura Cola y sus propiedades en c?. Gracias por su tiempo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problemas con Ejercicio de Colas Dinamicas Lenguage C

Publicado por Rodrigo (539 intervenciones) el 04/04/2019 05:39:03
Sugiero buscar en google "cola lenguaje c"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problemas con Ejercicio de Colas Dinamicas Lenguage C

Publicado por Alfil (1444 intervenciones) el 04/04/2019 09:13:45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <stdio.h>
#include <stdlib.h>
 
#define N 20
 
typedef struct persona{
    char nombre[N];
    int edad;
};
 
typedef struct nodo{
    struct persona per;
    struct nodo *sgte;
};
 
typedef struct cola{
    struct nodo *delante;
    struct nodo *atras ;
};
 
void encolar( struct cola *q, struct persona valor ){
 
     struct nodo *aux = malloc( sizeof(struct nodo) );
     aux->per = valor;
     aux->sgte = NULL;
 
     if( q->delante == NULL)
         q->delante = aux;
     else
         (q->atras)->sgte = aux;
 
     q->atras = aux;
}
 
struct persona desencolar( struct cola *q ){
 
     struct persona nom ;
     struct nodo *aux ;
 
     aux = q->delante;
     nom = aux->per;
     q->delante = (q->delante)->sgte;
 
     free(aux);
 
     return nom;
}
 
void muestraCola( struct cola q ){
 
     struct nodo *aux;
 
     aux = q.delante;
 
     while( aux != NULL ){
        printf( "%s -> ", aux->per.nombre );
        aux = aux->sgte;
     }
     printf( "Fin de la cola\n" );
}
 
void muestraColaMas18( struct cola q ){
 
     struct nodo *aux;
 
     aux = q.delante;
 
     while( aux != NULL ){
        if( aux->per.edad >= 18  )
            printf( "%s -> ", aux->per.nombre );
        aux = aux->sgte;
     }
     printf( "Fin de la cola\n" );
}
 
void vaciaCola( struct cola *q){
 
     struct nodo *aux;
 
     while( q->delante != NULL){
            aux = q->delante;
            q->delante = aux->sgte;
 
            free(aux);
     }
     q->delante = NULL;
     q->atras   = NULL;
}
 
void menu(){
 
    printf( "\n           COLA" );
    printf( "\n ==========================\n" );
    printf( " 1. ENCOLAR                  \n" );
    printf( " 2. DESENCOLAR               \n" );
    printf( " 3. MOSTRAR COLA             \n" );
    printf( " 4. MOSTRAR COLA >= 18       \n" );
    printf( " 5. VACIAR COLA              \n" );
    printf( " 6. SALIR                    \n" );
    printf( "\n OPCION: " );
 
}
 
  int main(){
 
    struct cola q;
    q.delante = NULL;
    q.atras   = NULL;
    struct persona dato;
    struct persona x ;
    int op;
 
    do{
        menu();  scanf( "%d", &op );
 
        switch(op){
 
            case 1:
                printf( "\nNOMBRE A ENCOLAR: " ); scanf( "%s", &dato.nombre );
                printf( "EDAD: " ); scanf( "%d", &dato.edad );
                encolar( &q, dato );
                printf( "\n\tNonmbre %s encolado...", dato.nombre );
                break;
 
            case 2:
                x = desencolar( &q );
                printf( "\n\n\t\tNombre %s desencolado...\n\n", x.nombre );
                break;
 
            case 3:
                printf( "\n\n MOSTRANDO COLA\n\n" );
                if(q.delante!=NULL) muestraCola( q );
                else  printf( "\n\n\tCola vacia...!\n" );
                break;
 
            case 4:
                printf( "\n\n MOSTRANDO COLA >= 18\n\n" );
                if(q.delante!=NULL) muestraColaMas18( q );
                else  printf( "\n\n\tCola vacia...!\n" );
                break;
 
 
            case 5:
                vaciaCola( &q );
                printf( "\n\n\t\tHecho...\n\n" );
                break;
 
            case 6:
                break;
 
            default:
                printf( "\nOpcion no valida\n" );
                break;
        }
        printf( "\n\n" );
 
    }while( op != 6);
 
    vaciaCola( &q );
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ector
Val: 23
Ha disminuido su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problemas con Ejercicio de Colas Dinamicas Lenguage C

Publicado por Ector (14 intervenciones) el 04/04/2019 18:52:26
muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con Ejercicio de Colas Dinamicas Lenguage C

Publicado por dennys (1 intervención) el 19/10/2022 16:52:36
hola, tu pudiste hacer ese ejercicio, me lo podrías pasar? es que tengo errores.-. y necesito entregarlo antes de las 2pm en clases
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 60
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problemas con Ejercicio de Colas Dinamicas Lenguage C

Publicado por Patricio (25 intervenciones) el 08/04/2019 01:11:16
Hola Alfil, te queria consultar si me puede ayudar con este codigo de cola dinamica.
Tengo varios errores y estoy tratando de ver que es lo que sucede.
Mi intencion era aplicar lo que tu codigo en el codigo de colas dinamicas que viene despues de este

LO QUE QUERIA CONSEGUIR, mi codigo tiene errores pero no entiendo porque
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 20
 
typedef struct persona{
    char nombre[N]; // Solo nombre
    int edad;
};
 
typedef struct nodo {
    struct persona nueva_persona;
    struct nodo *sig;
};
 
struct nodo *raiz=NULL;
struct nodo *ultimo=NULL;
 
int vacia()
{
    if (raiz == NULL)
        return 1;
    else
        return 0;
}
 
void insertar(struct persona ins_p)
{
	struct nodo *nuevo = malloc(sizeof(struct nodo));
    nuevo->nueva_persona = ins_p;
    nuevo->sig=NULL; //nuevo no apunta a ninguno
    if (vacia()) //va a ver si raiz = null. al retornar 1 estamos diciendo verdadero
    {
        raiz = nuevo; //a raiz le daos el valor denuevo y ultimo tb vale nuevo pues el primero y el ultimo son el mismo si hay solo 1 persona en cola
        ultimo = nuevo;
    }
    else
    {
        ultimo->sig = nuevo; //ultimo siempre se actualiza al nuevo valor, ultimo apunta a siguiente pa enlazar
        ultimo = nuevo; // ahora ultimo es el nuevo
    }
}
 
struct persona extraer() //al extraer la cola esta empieza a desaparecer
{
    if (!vacia()) //retorna un cero, Falso en informatica
    {
        struct persona ext_per;
		ext_per = raiz->nueva_persona; //declaro una variable informacion, raiz es el primero y vamos a decir que 
        struct nodo *primero = raiz; //declaramos un puntero llamado primero y es igual a raiz
        // el primero que entra es el primero que sale, por eso es primero
        if (raiz == ultimo) //cuando solo hay 1 persona o elemento
        {
            raiz = NULL; // la cosa es extraer, saque al ultimo que quedaba, por eso raiz = null
            ultimo = NULL; //ultimo tb es null por lo mismo
        }
        else
        {
        	primero = raiz; //se pierde el valor de raiz
            raiz = raiz->sig; //estamos dejando en raiz la direccion del siguiente nodo
        }
        free(primero); //liberando el primer nodo y desaparece, el que se guardo con malloc, el que iva al frente de la fila se va
        return ext_per;
    }
    //else
    //    return -1;
}
 
void imprimir()
{
    struct nodo *recorre = raiz;
 
    printf("\n\t Listado de todos las personas que restan en la cola.\n");
    while (recorre != NULL) //
    {
        printf("\n\t %s  ", recorre->nueva_persona.nombre);
        recorre = recorre->sig;
    }
    printf("\n");
}
 
void imprimir_edad_18()
{
    struct nodo *recorre = raiz;
    printf("\n\t Listado de todos las personas MAYORES de 18 que restan en la cola.\n");
    while (recorre != NULL){
    	if(recorre->nueva_persona.edad>=18)
        	printf("\n\t %s  ", recorre->nueva_persona.nombre);
        recorre = recorre->sig;
    }
    printf("\n Fin Cola\n");
}
 
int main()
{
	printf ("\n\t Lista tipo cola en Memoria Dinamica ");
    insertar('Pablo',19);
    insertar('Alejadra',15);
    insertar('German',21);
    insertar('Patricia',14);
    imprimir();
    printf ("\n\n      Se imprime el dato del primer nodo de la cola --> %s : \n", extraer());
    imprimir_edad_18();
 
    getch();
 
    return 0;
}


El siguiente codigo utiliza colas dinamicas con solo numeros
y queria utilizarlo para hacer lo de las personas del banco mayores de 18 como el que hiciste tu.
Este codigo funciona y queria entender como modificarlo para que funcionara, pero en vez de pedir solo numeros pidiera nombre y edad,
luego imprimir los datos de la cola que serian los nombres y luego imprimir los nombres de las personas mayores de 18 que esten en la cola.
En mi codigo quize ingresar 4 personas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
 
typedef struct nodo {
    int info;
    struct nodo *sig;
};
 
struct nodo *raiz=NULL;
struct nodo *ultimo=NULL;
 
int vacia()
{
    if (raiz == NULL)
        return 1;
    else
        return 0;
}
 
void insertar(int x)
{
	struct nodo *nuevo; //
    nuevo=(struct nodo*)malloc(sizeof(struct nodo)); // nuevo tiene la direccion de. 
    //printf(" \n\t\t\t La direccion del nuevo nodo es %i --> ", nuevo);
    nuevo->info=x; // el puntero esta apuntando a la estructura, info es un elemento numerico y lo estoy asignando a la estructura. 
    // la funcion pide x, y x es la parte de info=x.
    nuevo->sig=NULL; //nuevo no apunta a ninguno
    if (vacia()) //va a ver si raiz = null. al retornar 1 estamos diciendo verdadero
    {
        raiz = nuevo; //a raiz le daos el valor denuevo y ultimo tb vale nuevo pues el primero y el ultimo son el mismo si hay solo 1 persona en cola
        ultimo = nuevo;
    }
    else
    {
        ultimo->sig = nuevo; //ultimo siempre se actualiza al nuevo valor, ultimo apunta a siguiente pa enlazar
        ultimo = nuevo; // ahora ultimo es el nuevo
    }
}
 
int extraer() //al extraer la cola esta empieza a desaparecer
{
    if (!vacia()) //retorna un cero, Falso en informatica
    {
        int informacion = raiz->info; //declaro una variable informacion, raiz es el primero y vamos a decir que 
        struct nodo *primero = raiz; //declaramos un puntero llamado primero y es igual a raiz
        // el primero que entra es el primero que sale, por eso es primero
        if (raiz == ultimo) //cuando solo hay 1 persona o elemento
        {
            raiz = NULL; // la cosa es extraer, saque al ultimo que quedaba, por eso raiz = null
            ultimo = NULL; //ultimo tb es null por lo mismo
        }
        else
        {
        	primero = raiz; //se pierde el valor de raiz
            raiz = raiz->sig; //estamos dejando en raiz la direccion del siguiente nodo
        }
        free(primero); //liberando el primer nodo y desaparece, el que se guardo con malloc, el que iva al frente de la fila se va
        return informacion;
    }
    else
        return -1;
}
 
void imprimir()
{
    struct nodo *recorre = raiz; //declarar puntero recorreo con el valor de raiz
    // NO estamos eliminando memoria, la lista queda igual
    printf("\n\t Listado de todos los elementos que restan en la cola.\n");
    while (recorre != NULL) //
    {
        printf("\n\t %i  ", recorre->info); //se imprime el valor, ojo, es %i pq es un entero
        recorre = recorre->sig;
    }
    printf("\n");
}
 
int main()
{
	printf ("\n\t Lista tipo cola en Memoria Dinamica "); // estan en cualquier parte de la memoria, no son contiguos 
	printf ("\n\t  Insertar los siguientes valores:  5,10,50,70,120,300 ");
    insertar(5);
    insertar(10);
    insertar(50);
    insertar(70);
    insertar(120);
    insertar(300);
    imprimir();
    printf("\n\t Extraemos uno de la cola  --> %i, (se desplaza una posicion )"); // 5 fue extraido por lo tanto no sera mostrado
    printf ("\n\n      Se imprime el dato del primer nodo de la cola --> %i : \n", extraer());
    imprimir();
 
    getch();
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problemas con Ejercicio de Colas Dinamicas Lenguage C

Publicado por Abigail sanches (1 intervención) el 16/05/2022 21:11:52
Tienes el diagrama de flujo del codigo fuente??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar