Beruflich Dokumente
Kultur Dokumente
Martin Cruz
Blogueando sobre
programación!
INICIO
+ TEMAS
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 1/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
Implementa en C++:
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 2/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
Implementación:
1 /*
2 * C++ ‐ Agenda con uso de struct
3 *
4 * Copyright 2014 Martin Cruz Otiniano
5 *
6 * Site: martincruz.me
7 */
8
9 #include <iostream>
10 #include <stdlib.h>
11
12 #define MAXCAD 50
13 #define MAX_V 100 // numero de vendedores
14 #define MAX_PV 100 // maximo de productos vendidos
15
16 using namespace std;
17
18 struct unProducto {
19 char name_prod[MAXCAD]; // nombre del producto
20 int cantidad;
21 int precio ;
22 int subtotal;
23 };
24
25 struct variosProductos {
26 int numProd ; // numero de productos por vendedor
27 unProducto vp[MAX_PV]; //varios productos cada uno en una posicion del vector
28 int precioTotal ;
29 };
30
31 struct Vendedor {
32 char nombre[MAXCAD] ;
33 char apellido[MAXCAD] ;
34 char direccion[MAXCAD];
35 int DNI ;
36 variosProductos P ;
37 };
38
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 3/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
39 struct Vendedor lista[MAX_V]; // creamos un array de tvendedores
40 struct Vendedor aux;
41
42
43 void registrar_productos(int nv, int np)
44 {
45 // nv ‐> numero de vendedor
46
47 for(int i=0; i<np; i++)
48 {
49 cout<<"\n\tProducto "<< i+1 <<endl;
50 cin.ignore();
51 cout<<"\t\tNombre : " ;
52 cin.getline( lista[nv].P.vp[i].name_prod, MAXCAD );
53
54 //cin.ignore();
55 cout<<"\t\tCantidad : ";
56 cin>> lista[nv].P.vp[i].cantidad ;
57
58 //cin.ignore();
59 cout<<"\t\tPrecio : ";
60 cin>> lista[nv].P.vp[i].precio ;
61
62 lista[nv].P.vp[i].subtotal = lista[nv].P.vp[i].cantidad * lista[nv].
63
64 if(lista[nv].P.vp[i].subtotal==0)
65 cout<<"Subtotal 0";
66
67 lista[nv].P.precioTotal = lista[nv].P.precioTotal + lista[nv].
68
69 }
70
71 }
72 void registrar_vendedores(int n)
73 {
74 int np ; // numero de productos por cada vendedor
75 for(int i=0; i<n; i++)
76 {
77 cout<<"\nVENDEDOR "<< i+1 << "\n";
78
79 cin.ignore(); cout << " Nombres : "; cin.getline( lista[i].
80 cin.ignore(); cout << " Apellidos : "; cin.getline( lista[i].
81 cin.ignore(); cout << " Direccion : "; cin.getline( lista[i].
82 cin.ignore(); cout << " D N I : "; cin>> lista[i].DNI ;
83
84 cout<<"\n > Numero de productos: "; cin>> lista[i].P.numProd
85
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 4/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
86 registrar_productos( i ,lista[i].P.numProd );
87 }
88 }
89
90 void datosVendedor(int x, int num)
91 {
92 if(num>0)
93 {
94 cout<<endl<<endl;
95 cout << "\t" << lista[x].nombre <<' '<< lista[x].apellido << endl;
96 cout << " DNI : "<< lista[x].DNI << endl;
97 cout << " Direccion: "<< lista[x].direccion << endl;
98 }
99 else
100 cout<<"\n\tRegistro vacio..!";
101
102 }
103
104 void prodVendedor(int x, int num)
105 {
106 if(num>0)
107 {
108 cout<<endl<<endl;
109 cout << " Productos de " << lista[x].nombre <<' '<< lista[x].
110
111 for(int i=0; i<lista[x].P.numProd; i++)
112 {
113 cout<<"\n Producto "<< i+1 <<endl;
114 cout<<"\tNombre : " << lista[x].P.vp[i].name_prod <<endl;
115 cout<<"\tCantidad: " << lista[x].P.vp[i].cantidad <<endl;
116 cout<<"\tPrecio : " << lista[x].P.vp[i].precio <<endl;
117 cout<<"\tSubtotal: " << lista[x].P.vp[i].subtotal <<endl ;
118 }
119 cout<<endl;
120 cout<<" ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<<endl;
121 cout<<" PRECIO TOTAL: "<< lista[x].P.precioTotal;
122 }
123 else
124 cout<<"\n\tRegistro vacio..!";
125
126 }
127
128 void mostrar_productos(int nv)
129 {
130 cout<<" Productos: \n\n";
131 for(int i=0; i<lista[nv].P.numProd; i++)
132 {
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 5/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
133 cout<<"\t‐ " << lista[nv].P.vp[i].name_prod <<endl ;
134 }
135 }
136
137 void mostrar_vendedores(int num)
138 {
139 if( num>0)
140 {
141 cout<<"\n\nMostrando lista de Vendedores\n";
142 for(int i=0; i<num; i++)
143 {
144 cout<<endl<<endl;
145 cout<< i+1<<". "<< lista[i].nombre <<' '<< lista[i].apellido
146 cout << " DNI : "<< lista[i].DNI << endl;
147 cout << " Direccion: "<< lista[i].direccion << endl;
148
149 mostrar_productos( i );
150 cout<<endl;
151
152 }
153 }
154 else
155 cout<<"\n\tRegistro vacio..!";
156 }
157
158 void eliminar_vendedor( int x, int &num)
159 {
160 if(num>0)
161 {
162 for(int i=x; i<num‐1; i++)
163 lista[i] = lista[i+1];
164
165 num‐‐;
166 }
167 else
168 cout<<"\n\tRegistro vacio..!";
169
170 }
171
172 void buscar_vendedor( int num)
173 {
174 int band = 0;
175
176 if(num>0)
177 {
178 for(int i=0; i<num; i++)
179 {
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 6/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
180 if(lista[i].DNI==aux.DNI)
181 {
182 cout<<"\n\n La direccion de "<<lista[i].nombre<<" "
183 <<lista[i].apellido<<" es : "
184 <<lista[i].direccion <<endl ;
185 band = 1 ;
186 break;
187 }
188 }
189 }
190 else
191 cout<<"\n\tRegistro vacio..!";
192
193 if(band==0)
194 cout<<"\n\n\tEl vendedor no fue encontrado..! :S"<<endl;
195
196 }
197
198 void menu1()
199 {
200 cout<<"\n\t\tREGISTRO DE VENDEDORES\n\n";
201 cout<<" 1. Registrar vendedores "<<endl;
202 cout<<" 2. Mostrar registro de vendedores y productos "<<endl;
203 cout<<" 3. Mostrar datos de un vendedor "<<endl;
204 cout<<" 4. Mostrar productos vendidos de un vendedor "<<endl;
205 cout<<" 5. Eliminar vendedor del registro "<<endl;
206 cout<<" 6. Buscar direccion de vendedor por DNI "<<endl;
207 cout<<" 7. Salir "<<endl;
208
209 cout<<"\n Ingrese opcion : ";
210 }
211
212 /* funcion principal
213 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
214
215 int main()
216 {
217 int num=0; // numero de vendores
218 int op; // opcion del menu
219 int num_vendedor ;
220
221 system("color 0b");
222
223 do
224 {
225 menu1(); cin>> op;
226
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 7/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
227 switch(op)
228 {
229 case 1:
230 cout<<"\n Numero de vendedores: ";
231 cin>> num;
232 registrar_vendedores(num); cout<<endl;
233 break;
234
235 case 2:
236 mostrar_vendedores(num);
237 break;
238
239 case 3:
240 cout<<"\n Ingrese numero de vendedor: ";
241 cin>> num_vendedor ;
242 datosVendedor( num_vendedor‐1, num);
243 break;
244
245 case 4:
246 cout<<"\n Ingrese numero de vendedor: ";
247 cin>> num_vendedor ;
248 prodVendedor( num_vendedor‐1, num);
249 break;
250
251 case 5:
252 cout<<"\n Ingrese numero de vendedor: ";
253 cin>> num_vendedor ;
254 eliminar_vendedor( num_vendedor‐1, num);
255 cout<<"\n\n\t\tVendedor eliminado ..!"<<endl;
256 break;
257
258 case 6:
259 cout<<"\n Ingrese numero de DNI: ";
260 cin>> aux.DNI;
261 buscar_vendedor(num);
262 break;
263
264 }
265
266 cout<<endl<<endl;
267 system("pause"); system("cls");
268
269 } while(op != 7);
270
271
272 return 0;
273 }
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 8/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
Martin Cruz
Desarrollador Web | Estudiante de Ing. Informática
Website Twitter Facebook Google+
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 9/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
6 comentarios
Añade un comentario
Mejores comentarios
hace 3 años
gracias por todo esta excelente el ejemplo
hace 3 años
XVRE...!!!
hace 3 años
disculpa que signi͈ca lo siguiente : using namespace std; struct unProducto { char name_prod[MAX
maxcad por otra cosa o para que sirve?
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 10/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
Martin Cruz Blog
976 likes
Like Page Share
Be the first of your friends to like this
ACERCA DE
Martin Cruz
Seguir 174
DESTACADOS
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 11/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
Pilas en C++
Una pila (stack en inglés) es una
lista ordinal o estructura de datos
en la que el modo de acceso a sus
elementos es de tipo LIFO (del inglé...
CATEGORIAS
Estructura de Datos
Computacion Gra힣�ca OpenGL Ubuntu L-
System Pilas/Stack Recursividad Arboles C
plusplus CodeBlocks Listas/Lists Android Colas
IDE Java Laravel Tecnicas en construccion de
programas Teoria de la Computacion Algoritmos
voraces Algoritmos y Programacion Algortimos de
STL
BLOGS AMIGOS
Making Code
Aprendamos Javascript desde cero
Hace 1 mes
Aplicando Scrum
La Importancia de Formar un Equipo
Hace 4 meses
Mis Apuntes sobre Tecnología
API SellerCenter Linio Consulta POST
Hace 11 meses
Codigo de Relleno
Usando
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html Fuentes Propias para Aplicaciones 12/13
29/12/2016 Registros en C++ / Uso de struct en C++ | Martin Cruz
SEGUIDORES
Seguidores (17)
Seguir
http://blog.martincruz.me/2012/10/registrosencusodestructenc_4493.html 13/13