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


0