Dev - C++ - Sugerencia de como hacer este programa

   
Vista:

Sugerencia de como hacer este programa

Publicado por Josue joz_gtz@live.com (2 intervenciones) el 03/10/2014 04:03:57
SOY NUEVO EN EL C++, ESTOY TRATANDO DE HACER UN PROGRAMA EN DONDE CUANDO INSERTE LA OPCION 4 ME MUESTRE OTRO MENU Y EN ESE MENU PONGO LOS ELEMENTOS DE LA ESTRUCTURA, PARA QUE ME ORDENE YA SEA SI ES LETRA POR ABECEDARIO O SI ES NUMERO DE DESCENDENTE A ASCENDENTE, SOLO QUE ME ATORE YA EN LA OPCION 4, ME PODRÍAN DAR SUGERENCIAS O AYUDAR. ME PUEDEN EXPLICAR POR FAVOR PORQUE CUANDO LE DOY OPCION 1 - CODIO ME VUELVE A APARECER EL MENU DEL INICIO. NOSE SI ME DI A ENTENDER BIEN BUENO AQUI ESTA EL PROGRAMA QUE LLEVO....


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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int i,j,a,o,e,u,aux;
struct proovedor
{
	int clave;
	char nombre [30];
};
 
struct articulo
{
	int codigo;
	char nombre [30];
	float peso, longitud;
	struct proovedor prov;
};
 
struct articulo art[10000];
 
void main ()
{
	do
	{
	cout << "\n\n\t\tMenu de opciones" << endl;
	cout <<"\nOpcion 1 - Capturar datos";
	cout <<"\nOpcion 2 - Mostrar datos";
	cout <<"\nOpcion 3 - Salir";
	cout << "\nOpcion 4 - Mostrar datos ordenados";
	cout <<"\n\nCual opcion elige? : ";
	cin >> a;
 
	system ("cls");
 
	switch (a)
	{
 
	case 1:
	{
		cout <<"\t\tUsted a ingresado la opcion 1 - Capturar datos";
				cout << "\n\n\t\t\tIngrese los datos No. " << i+1<< endl;;
				cout <<"\nIngrese el codigo del producto:  ";
				cin >> art[i].codigo;
				cout <<"\nIngrese el nombre del producto:  ";
				cin >> art[i].nombre;
				cout <<"\nIngrese el peso del producto(kg):  ";
				cin >> art[i].peso;
				cout <<"\nIngrese la longitud del producto(cm):  ";
				cin >> art[i].longitud;
				cout <<"\nIngrese la clave del proveedor:  ";
				cin >> art[i].prov.clave;
				cout <<"\nIngrese el nombre del proveedor: ";
				cin >> art[i].prov.nombre;
 
				i++;
 
			system ("cls");
			break;
 
 
	}
	case 2:
 
		{
			cout <<"\t\t Usted a ingresado la opcion 2 - Mostrar datos";
				j=0;
				for(j=0;j<i;j++)
				{
					cout <<"\n\n\t\t\tDatos capturados No. " << j+1 << endl;
					cout <<"\n\nCodigo del producto: " << art[j].codigo;
					cout <<"\nNombre del producto: " << art[j].nombre;
					cout <<"\nPeso del producto(kg): " << art[j].peso;
					cout <<"\nLongitud del producto(cm): " << art[j].longitud;
					cout <<"\nClave del proveedor: " << art[j].prov.clave;
					cout <<"\nNombre del proveedor: " << art[j].prov.nombre <<endl;
					system ("\nPause");
					system ("cls");
				}
			break;
		}
	case 3:
 
		{   cout <<"Presione una tecla para salir del programa";
			break;
		}
 
	case 4:
		{
			system ("cls");
			cout <<"\t\tUsted a ingresado la opcion 4"<< endl;
			cout <<"\n\n\t\tMenu de ordenamiento";
			cout <<"\n1.- Codigo";
			cout <<"\n2.- Nombre";
			cout <<"\n4.- Peso";
			cout <<"\n5.-Longitud";
			cout <<"\n\nIngrese una opcion: ";
			cin >> o;
 
			switch (o)
			{
					case 1:
						{	cout << "Eligio la opcion de codigo";
							for (u=0;u<10;u++)
								for (e=u+1; e<10; e++)
									if(art[u].codigo>art[e].codigo)
									{
										aux= art[u].codigo;
										art[u].codigo=art[e].codigo;
										art[e].codigo=aux;
										system ("cls");
										cout <<"\n" <<art[e].codigo;
 
									}
 
 
 
 
							break;
						}
 
 
 
 
 
 
 
			}
 
			break;
		}
 
	default:
 
		{	system ("cls");
			cout <<"ESTA ES UNA OPCION NO VALIDA, INGRESE OTRA OPCION DE LAS SIGUIENTES:";
 
		}
	}
 
	}
	while (a!=3);
 
		getch();
 
 
	}
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
Imágen de perfil de vangodp

Sugerencia de como hacer este programa

Publicado por vangodp (287 intervenciones) el 03/10/2014 10:13:17
tome por costumbre inicialisar las variables al declararlas, ni que sea con ceros y en el caso de los punteros con NULL.
En el caso 1 del menú, la variable al declararla no le das un valor, o sea que tiene cualquier cosa en ella. ¿Y si en ella hubiera un numero mayor de 10k? estarías extrapolando memoria.
Se resuelve al hacer int i = 0; ya que i empieza a incrementar y no sabes desde que numero.

Otro punto a comentar es que declaras variables como en C para los for:S.
en vez de eso:
int x;
for(x=0;x<max; x++){//...}

Usa eso:
for(int x=0;x<max; x++){//...}

No te preocupes por reaprovechar esa misma x en otro bucle. si tienes 10 bucles no necesitas 10 variables, sino solo una.
for(int x=0;x<max; x++){//...}
for(int x=0;x<max; x++){//...}
for(int x=0;x<max; x++){//...}
for(int x=0;x<max; x++){//...}

;)

Sobre el caso 4 debes mirar sobre métodos de organización y búsqueda de datos en c++ en google. Existe varios sabores, quick sort, borbuja....
No se puede explicar esos métodos aquí en pocas lineas.

Aquí hay ejemplos de algunos de ellos. Pero neo... Solo te puedo mostrar la puerta, tu debes seguir el camino del elegido. jeje
http://saforas.wordpress.com/2008/01/06/metodos-de-ordenamiento-hecho-en-c/

Te sugiero que lea sobre métodos de ordenamiento y búsqueda.... luego tomas unas 10 estructuras ya rellenadas... no pierda tiempo pidiendo datos ya que lo que quieres es trabajar con ordenamiento, y luego juegas con ellas con esos métodos.

Eso es una cosa la que tienes que mojarte y no preguntar. Ademas si usaras las STL la clase vector tiene funciones que organiza automáticamente los datos.

Te recomiendo que cuando estés afinado con los arrays y matrices, que los comprenda bien, empieces a trabajar con la clase vector de las STL. Te va ajorar mucho trabajo y es lo que se usa realmente en C++.
Eche una mirada en ese blog:
http://fiec108.blogspot.com.es/
http://fiec108.blogspot.com.es/search?updated-max=2011-12-01T17:32:00-08:00&max-results=7

Mi consejo es que en google hagas 2 o 3 pesquisas + las que se te ocurra.
Métodos de organización y búsqueda de datos en c++ para leer sobre el tema.
Algoritmos de ordenamiento para ver algunos ejemplos de ordenamiento.
Algoritmos de búsqueda para ver algunos ejemplos de búsqueda.
y si ves algo mas pues ya sabes... google es tu amigo.

Suerte amigo... siento no poder ayudar mas, no es que yo sea un experto en el tema sino mas bien el contrario.

otro consejo... el código esta muy cargado, intenta usar al menos funciones si no sabes usar aun clases.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Gracias ;)

Publicado por Josue joz_gtz@live.com (2 intervenciones) el 04/10/2014 00:18:46
Muchas gracias por tu ayuda y sugerencias, seguire tus consejos, esque como soy nuevo en esto casi no e aprendido todavía muchas cosas, gracias por ayudarme ;)
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