Vous êtes sur la page 1sur 4

Facultad de Ingeniera Industrial y Sistemas

Estructura II

Aplicacin de Registros con vectores


El tipo struct permite agrupar una serie de campos o variables de diferentes tipos y a travs de vectores se puede manejar los registros similar a una tabla ,las operaciones de : a) b) c) d) Insercin de registros a en cualquier posicin Eliminacin de registros .respecto a una posicin Ordenacin de registros por cualquier campo de la estructura Listado de registros Vamos a simular la tabla de una cuenta de ahorro. (como una Pila de Datos) Si se tiene ne registros , cuya cantidad es variable de acuerdo a las inserciones o eliminaciones
cuenta 1001 1002 1003 1004 1005 1006 nombre
PINAZO JORGE CAPCHA GIOVANNA POMA DANIEL

Anulacin Insercin

saldo 1200 5000 1257 2500 800 1600

Filas

SANCHEZ MARTHA AQUIO GEORGE CACERES MAXIMO

#include <iostream> #include <iomanip> using namespace std; //declaracion de la estructura tipo registro struct ahorro{ int cuenta; char nom[25]; double saldo; }reg; int ne=6; //variable general //asignacion directa de datos a laestructura struct ahorro vec[]={{111,"Diaz",234},{222,"Perez",800},{333,"Caceres",567},{444,"Avila",678}, {555,"Gomez",1233},{666,"Ramos",1400} };

Ing. Alberto Moreno C.

Facultad de Ingeniera Industrial y Sistemas

Estructura II

//insercin de registros en cualquier posicin void inserta(int p, struct ahorro x){ if(p>ne){ p=ne; vec[p]=x; ne++; return; } int f; for(f=ne;f>p;f--){ vec[f+1]=vec[f]; } vec[p]=x; cout<<"\n registro insertado \n"; cout<<endl; ne++; } void anula(int p){ int f; for(f=p;f<ne;f++){ vec[f]=vec[f+1]; } ne--; }

De acuerdo a la figura de la tabla 1 si se desea insertar un registro en la fila 3 , tenemos que desplazar todos los registros una fila ms hacia el ltimo registro Incrementando la cantidad de elementos en 1

Es contrario a la insercin debemos desplazar los registros hacia el registro anular Al final se debe quitar en 1 la cantidad de registros totales=> Ne=ne-1

void Ordena(struct ahorro vector[], int ne){ int c,p; struct ahorro aux; for(c=0;c<ne-1;c++){ for(p=c+1;p<ne;p++){ if(vector[c].saldo<vector[p].saldo){ aux=vector[c]; vector[c]=vector[p]; vector[p]=aux; } } } }

Proceso de Ordenamiento ,hay varias formas de ordenar por burbuja ,insercin directa ,Shell cada uno tiene ventajas y desventajas , la facilidad es el intercambio de filas entre registros

Ing. Alberto Moreno C.

Facultad de Ingeniera Industrial y Sistemas

Estructura II

/// ordena por nombre void Ordena2(struct ahorro vector[], int ne){ int c,p; struct ahorro aux; for(c=0;c<ne-1;c++){ for(p=c+1;p<ne;p++){ if(strcmp(vector[c].nom,vector[p].nom)>0){ aux=vector[c]; vector[c]=vector[p]; vector[p]=aux; } } } }// fin ordena2 void listado(){ cout<<"\n Listado de Ahorristas \n"; cout<<setw(10)<<"Cuenta"<<setw(25)<<"Cliente"<<setw(12)<<"Saldo"<<"\n" ; for(int f=0;f<ne; f++){ cout<<setw(10)<<vec[f].cuenta<<setw(25)<<vec[f].nom<<setw(12)<<vec[f].sa ldo<<"\n"; } } main(){ vec[6].cuenta=777; strcpy(vec[6].nom,"Vidal"); vec[6].saldo=567; ne++; reg.cuenta=888; strcpy(reg.nom,"Berrio"); reg.saldo=1300; inserta(2,reg); Ordena2(vec,ne); int f;

Ing. Alberto Moreno C.

Facultad de Ingeniera Industrial y Sistemas

Estructura II

listado(); cout<<"\n NUevos datos \n "; anula(4); listado();

system("pause");

} Nota.- Queda como trabajo para el alumno ,resolver los ejemplos propuestos con un men de opciones:

Men Opciones 1.- Insercin 2.-Anulacion 3.-Listado 4.- Consulta

Ingrese OPcion=>

Ing. Alberto Moreno C.

Vous aimerez peut-être aussi