Dev - C++ - Ayuda con este ejercicio por favor

 
Vista:
sin imagen de perfil

Ayuda con este ejercicio por favor

Publicado por Diego (1 intervención) el 29/06/2022 00:03:04
1. Escribir un programa que cargue datos sobre la cola de los pisteros( cedula,
nombre,edad y cod_parada) y muestre un menu para realizar las siguientes
opciones.
a)opcion 1: funcion que permita determinar si esa cola tiene valores de
cedulas repetidos y los muestre
b) opcion 2:organice la cola de tal manera que todos los que tienen el
mismo código de parada,hagan una cola, es decir hacer tantas colas como
código de paradas haya
c) opcion 3:ordenar la cola de manera que queden de primero los mayores a
60 años pero respetando el orden en que llegaron.
d) opcion 4: eliminar de la cola a un pasajero, dado su cédula.
e) opcion 5: salir
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

Ayuda con este ejercicio por favor

Publicado por José (1 intervención) el 02/07/2022 05:53:06
#include<iostream>
#include<stdlib.h>

using namespace std;

int main()
{
int y,opc,cabeza=0,col=0,elemento,elemen;
char opc2;

int cola[5];
do
{
system("cls");
cout<<"MANEJO DE COLAS"<<endl<<endl;
cout<<"1. Ingreso de datos"<<endl;
cout<<"2. Retirar datos"<<endl;
cout<<"3. Visualizar cola"<<endl;
cout<<"4. Salir."<<endl;
cout<<"Ingrese su opcion: ";
cin>>opc;
switch(opc)
{
case 1:system("cls");

cout<<"Ingreso de datos"<<endl<<endl;
if(col==5)
{
cout<<"cola llena \n";
}
else
{
cout<<"ingrese el dato:";
cin>>elemento;
cola[col]=elemento;
col++;
cout<<"Elemento ingresado \n"<<endl;
}
break;
case 2:
system("cls");
cout<<"Retiro de datos"<<endl<<endl;
if(col==cabeza)
{
cout<<"cola vacia \n";
}
else
{
cout<<"retiro del dato: \n";
elemen=cola[cabeza];
col--;
for(int x=0;x<col;x++)
{
cola[x]=cola[x+1];// arreglo que hace mover
}

cola[col+1]=0;

cout<<"Elemento retirado \n"<<elemen<<endl;
}
break;
case 3:system("cls");
cout<<"Datos de la cola"<<endl;
for(y=0;y<col;y++)
{
cout<<cola[y]<<"\t";
}
break;
case 4:exit(1);
break;
default: cout<<"ERROR DE OPCION"<<endl;

}
cout<<"\n Desea continuar (s/n):";
cin>>opc2;
}while(opc2=='s');
}
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 Vogel

Ayuda con este ejercicio por favor

Publicado por Vogel (1 intervención) el 02/07/2022 07:58:45
Supongo que lo que quieres en la opcion 3 despues de darle a la opcion 2 es que los datos se borren, lo ideal para un vector simple como el que estas definiendo de tamaño 5 es cambiar el estado del valor del vector cola a cero, ya que si no estarias dejando el valor en el vector, si te piden que imprimas luego todo el vector se mostrarian los elementos que no eliminaste todabia por lo cual dejarlo en cero es mejor ejemplo si ingresamos los 5 datos, tu variable col valdra 5, las posiciones ocupadas por tu vector seran de 0 a 4, cuando tu llamas la opcion 2 del caso de tu codigo es poner la variable col en 4, y de un bucle que va de 0 a 3 (por que 3 es menor que 4) cambias las posiciones en este caso la de la posicion 0 por la del 1 .... 1 por la del 2 y asi hasta la posicion 3 que cambia por la del 4, despues al vector cola en la posicion 4+1 osea 5 lo dejas en cero, esto es incorrecto ya que en un vector nunca puedes llamar o cambiar el valor del tamaño del vector en este caso es 5, daria un error de segmentacion, por lo cual si tenemos 5 datos ingresados por el usuario eso daria error, pero siguiendo con el programa despues de hacer esa definicion en la posicion, muestras en pantalla elemen que en este caso valdria siempre la primera posicion, como en el bucle se cambiaron los valores de las posiciones mostraria entonces cola[1] solamente ya que tu cabeza siempre vale 0, despues en el caso 3 muestras de nuevo los datos supongamos nuevamente que el usuario ingreso los 5 datos, en este caso tu variable col ya vale 4 por el decremento que hiciste anterior, entonces el bucle iria de 0 a 4 y mostraria entonces de la posicion 0 a 4 del vector aunque ayas cambiado las posiciones las mostrara asi (si el usuario ingresara cuatro datos) no daria error esta parte solo que te mostraria el movimiento de posicion en uno en uno y el valor final seria un espacio de memeria como valor ya que te pasas del rango, tu codigo tiene muchos problemas logicos como si el usuario ingresara no un int si no un char, luego en opc2 un int, variables que no se debieron declarar, errores de segmentacion, libreria stdlib no utilizada y poca optimizacion, arreglo tu codigo dependiendo solo de las necesidades de las opciones no le meti mucha caña por que no es mio y el chiste es que tu aprendas, solo arregle eso de los valores a eliminar y asi como hay otras opciones como usar vectores con resize entre otros, lo trate de poner de la manera mas simple por que creo que vas empezando.. Aqui el codigo, metele caña.

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
#include<iostream>
using namespace std;
 
int main(){
 
	int opc, col=0, elemento;
	char opc2;
 	int cola[5] = {0};
 
	do{
		system("cls");
		cout<<"MANEJO DE COLAS"<<endl<<endl;
		cout<<"1. Ingreso de datos"<<endl;
		cout<<"2. Retirar datos"<<endl;
		cout<<"3. Visualizar cola"<<endl;
		cout<<"4. Salir."<<endl;
		cout<<"Ingrese su opcion: ";
		cin>>opc;
		switch(opc){
			case 1:
				system("cls");
				cout<<"Ingreso de datos"<<endl<<endl;
				if(col==5){
					cout<<"cola llena \n";
				}else{
					cout<<"ingrese el dato:";
					cin>>elemento;
					cola[col]=elemento;
					col++;
					cout<<"Elemento ingresado \n"<<endl;
				}
				break;
			case 2:
				system("cls");
				cout<<"Retiro de datos"<<endl<<endl;
				if(col==0){
					cout<<"cola vacia \n";
				}else{
					cout<<"retiro de los  datos: \n";
					for(int x=col-1; x>=0; x--){
						cout << "Elemento retirado: " << cola[x] << endl;
						cola[x] = 0;
					}
				}
				break;
			case 3:
				system("cls");
				cout<<"Datos de la cola"<<endl;
				for(int y=0; y<col; y++){
					if(cola[y] == 0){
						cout << ' ';
					}else{
						cout << cola[y] << ' ';
 
					}
				}
				break;
			case 4:
				exit(1);
				break;
			default:
				cout<<"ERROR DE OPCION"<<endl;
		}
		cout<<"\n Desea continuar (s/n):";
		cin>>opc2;
	}while(opc2=='s');
}
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