Dev - C++ - Problema de colas

 
Vista:
sin imagen de perfil

Problema de colas

Publicado por Rau alfonso (3 intervenciones) el 09/03/2022 17:04:55
Hola, necesito ayuda

Un profesor estableció un período de entrega de los trabajos prácticos de los estudiantes, realizados en discos compactos (CD). Se sigue un orden estricto de entrega, de tal manera que el primer trabajo que recibe, es el primero en calificar. El profesor coloca los discos en una pila, con el efecto de que el primer CD entregado está de último en la pila. Al recibir todos los discos, los distribuirá en dos pilas, una que contendrá los discos de los alumnos que pertenecen a la sección „A‟ y otra los de la sección „B‟.

Cada disco está rotulado con el DNI y la sección a la cual pertenece, „A‟ o „B‟.

Codifique en el lenguaje C++ una función que simule la operación Distribuir discos compactos, en dos grupos, de manera que se puedan calificar respetando el orden de llegada, con respecto a cada sección. Previamente describa en C++ la estructura de datos y las variables a emplear. Suponga que los datos de cada disco están correctos.
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
sin imagen de perfil

Problema de colas

Publicado por Raul (3 intervenciones) el 09/03/2022 18:33:42
Esto es lo que llevo hasta ahora, me falta dividir los CD por dni y seccion pero no consigo como hacerlo.

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
//Estructura para COLA
#include<iostream>
#include<conio.h>
#include<stdlib.h>
 
using namespace std;
 
//Crear NODO
 
struct Nodo {
	int dato;
	Nodo *siguiente;
};
 
void eliminarDeCola(Nodo *&, Nodo *&, int );
void insertarEnCola(Nodo *&, Nodo *&, int );
bool cola_vacia(Nodo *);
 
int main(){
 
	//iguales los nodos iniciales en NULL
	Nodo *frente = NULL;
	Nodo *final  = NULL;
 
	int ci;
 
	cout<<"Inserte un numero de DNI: ";
	cin>>ci;
	insertarEnCola(frente, final, ci);
 
 
	while( frente != NULL ) {
		eliminarDeCola(frente, final, ci);
 
		if(frente != NULL) {
			cout<<ci<<" , ";
		} else {
			cout<<ci<<".";
		}
	}
 
	getch();
	return 0 ;
}
 
void insertarEnCola(Nodo *&frente, Nodo *&final,int n) {
	Nodo *nuevo_nodo = new Nodo();
 
	nuevo_nodo->dato = n;
	nuevo_nodo->siguiente = NULL;
 
	if(cola_vacia(frente)) {
		frente = nuevo_nodo;
 
	} else {
		final->siguiente = nuevo_nodo;
	}
	final = nuevo_nodo;
 
	cout<<endl<<" DNI : "<<n<<" En cola"<<endl;
}
 
void eliminarDeCola(Nodo *&frente, Nodo *&final, int &d){
	d = frente->dato;
	Nodo *aux = frente;
 
	if(frente == final) {
		frente = NULL;
		final = NULL;
 
	} else {
		frente = frente->siguiente;
	}
 
	delete aux;
}
 
//Determinar si la cola esta vacia
bool cola_vacia(Nodo *frente) {
	return( frente == NULL ) ? true : false;
}
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++

Problema de colas

Publicado por Alfil (1444 intervenciones) el 09/03/2022 20:40:06
Necesitas una cola y dos pilas, por un lado llenar la cola y por otro, que la cola vaya distribuyendo el dato a una u otra pila según sea 'A' o 'B' mientras se vacía. La pila tomará el valor dni de la cola, y el valor calificación (A o B) por teclado.

Estructura de la Cola:

1
2
3
4
5
6
7
8
9
10
11
struct Nodo
{
    int dni;
    Nodo *siguiente;
};
 
struct Cola
{
    Nodo *cabeza;
    Nodo *talon;
};

estructura de las Pilas:

1
2
3
4
5
struct Pila {
	int dni;
	char calificacion;
	Pila *siguiente;
};
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