Dev - C++ - ordenamiento en arreglo de estructuras

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 803 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ordenamiento en arreglo de estructuras

Publicado por victor (1 intervención) el 10/06/2021 09:24:32
Hola, estoy realizando un programa con arreglo de estructuras para un proyecto y necesito utilizar un método de ordenamiento como shellsort, pero no puedo mover el arreglo completo, el problema es que quiero ordenar mis datos de acuerdo a la clave y solo puedo ordenar la clave pero los demás campos no se mueven, me podrían apoyar

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
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct Paleteria{
	string sabores;
	float precio;
	int clave;
	string tamanio;
}paleta[40];
 
void agregar();
void shell ();
 
int num;
int main(){
	agregar ();
	shell ();
	return 0;
}
 
void agregar(){
 
 
	cout<<"Ingrese el numero de paletas a agregar";
	cin>>num;
	for(int i=0;i<num;i++){
		system ("cls");
		cout<<"ingrese clave\n";
		cin>>paleta[i].clave;
		cout<<"Ingrese el sabor \t";
		fflush (stdin);
		getline (cin,paleta[i].sabores);
		fflush (stdin);
		cout<<"Elija en chica, mediana o jumbo\n";
		fflush (stdin);
		getline (cin,paleta[i].tamanio);
		fflush (stdin);
		cout<<"ingrese el precio\n";
		cin>>paleta[i].precio;
		system ("pause");
	}
 
	cout<<"Sabor\t\tTamano\t\tPrecio\t\tPiezas"<<endl;
	for (int i = 0; i <num; ++i){
		cout<<paleta[i].clave<<"\t\t"
			<<paleta[i].sabores<<"\t\t"
			<<paleta[i].tamanio<<"\t\t"
			<<paleta[i].precio<<endl;
 
	}
 
 
 
}
 
void shell(){
    int i,j,incremento,aux;
 
    incremento=num/2;
 
    while(incremento>0){
        for(i=incremento;i<num;i++){
        	aux = paleta[i].clave;
        	j=i;
            while(j>=incremento && paleta[j-incremento].clave > aux){
            	paleta [j] = paleta [j-incremento];
            	j -= incremento;
              }
            paleta[j].clave = aux;
 
        }
        incremento=incremento/2;
    }
    cout<<"Datos en Shell Sort: \n";
    for (int i=0;i<num;i++){
		cout<<paleta[i].clave<<"\t\t"
			<<paleta[i].sabores<<"\t\t"
			<<paleta[i].tamanio<<"\t\t"
			<<paleta[i].precio<<endl;
 
    }
    cout<<endl;
}
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