Foros del Web » Programación para mayores de 30 ;) » C/C++ »

validar datos en Ordenamiento C++

Estas en el tema de validar datos en Ordenamiento C++ en el foro de C/C++ en Foros del Web. Amigos me pueden ayudar con este codigo, lo que pasa es que en la parte donde sale la opcion de "INGRESE UNA OPCION" si pongo ...
  #1 (permalink)  
Antiguo 01/02/2013, 07:28
 
Fecha de Ingreso: enero-2013
Ubicación: venezuela
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 0
validar datos en Ordenamiento C++

Amigos me pueden ayudar con este codigo, lo que pasa es que en la parte donde sale la opcion de "INGRESE UNA OPCION" si pongo una letra o un numero que no es igual a los que estan en el menu sale un bug y empieza a repetir el programa...

quiero ponerle una opcion que diga "Error, opcion invalida" al marcar una letra o un numero incorrecto a la hora de ingresar la opcion del menu.

aqui el codigo:

CODE]

#include <iostream>
#include <stdio.h>
#include<windows.h>
#define MAX 10
using namespace std;


void burbuja();
void seleccion();
void salir();

main(void)

{

system("color 0A"); //COLOR PARA LA CONSOLA

int seguir=1;
int x;

cout<<endl<<"\t################################### ###############################";
cout<<endl<<"\t# METODOS DE ORDENAMIENTO #";
cout<<endl<<"\t# METODO DE LA BURBUJA Y SELECCION DIRECTA #"; //PORTADA DEL PROMAGRA!
cout<<endl<<"\t# IS5D-C #";
cout<<endl<<"\t################################### ###############################"<<endl;
cout<<endl;
cout<<endl;

do // COMIENZO DEL CICLO REPETITIVO DO - WHILE
{
cout<<endl<<"\t\t******************* M E N U ******************";
cout<<endl<<"\t\t* *";
cout<<endl<<"\t\t* 1.- Ordenamiento por Metodo Burbuja *";
cout<<endl<<"\t\t* *";
cout<<endl<<"\t\t* 2.- Ordenamiento por Metodo Seleccion *"; //MENU DEL PROGRAMA!
cout<<endl<<"\t\t* *";
cout<<endl<<"\t\t* 3.- Salir *";
cout<<endl<<"\t\t********************************* *************";
cout<<endl;
cout<<endl;

cout<<endl<<">> ELIGE UNA OPCION: "; //PEDIR OPCION DEL MENU!
cout<<endl<<" -------------------> ";
cin>>x;
cout<<endl<<endl;






switch (x){
case 1:burbuja();
break;
case 2:seleccion();
break;
case 3:
seguir = 0;
break;


default: cout<<"ERROR, OPCION INVALIDA.."<<endl; //OPCION INVALIDA.

}
if (seguir!=0)
{
cout <<endl<< "DESEA CONTINUAR?? SI - PRESIONAR 1 , NO - PRESIONAR 0 ";
cin >> seguir;
}
}while (seguir==1); //FIN DEL BUCLE DO - WHILE
cout<<endl;
system("PAUSE");

}


void burbuja()
{
int I,N,Aux,J;
int V[10];



cout<<"Cuantos Numeros va a Ingresar al Vector?, Maximo 10: ";
cin>>N;
cout<<endl;
for(I=0; I<N; I++)
{
cout<<"Ingrese Elemento ["<<I+1<<"]= ";
cin>>V[I];
}
for (I=0; I<N-1; I++)
for (J=0; J<(N-1)-I; J++)
if (V[J]>V[J+1])
{
Aux=V[J];
V[J]=V[J+1];
V[J+1]=Aux ;
}

cout<<endl<<"[ NUMEROS ORDENADOS MEDIANTE BURBUJA ] "<<endl;
for(I=0; I<N; I++)
cout<<endl<<"\t\t"<<V[I];
cout<<endl<<endl;


}



void seleccion()
{
int J,I,N,K;
int V[10];
int Aux;

cout<<"Cuantos Numeros va a Ingresar al Vector?, Maximo 10: ";
cin>>N;
cout<<endl;
for(I=0; I<N; I++)


{
cout<<"Ingrese Elemento ["<<I+1<<"]= ";
cin>>V[I];
}

for(I=0; I<N-1; I++)
{
K=I;
for (J=I+1; J<N; J++)
if (V[J]<V[K])
K=J;

Aux=V[I];
V[I]=V[K];
V[K]=Aux;
}


cout<<endl<<"[ NUEMROS ORDENADOS MEDIANTE SELECCION ]"<<endl;
for(I=N-1; I>=0; I--)
cout<<endl<<"\t\t"<<V[I];
cout<<endl<<endl;
system("exit");

}[/CODE]
  #2 (permalink)  
Antiguo 01/02/2013, 08:13
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: validar datos en Ordenamiento C++

A default en el switch le falta break.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #3 (permalink)  
Antiguo 01/02/2013, 08:20
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: validar datos en Ordenamiento C++

Cita:
Iniciado por dontexplain Ver Mensaje
A default en el switch le falta break.

Un saludo.
El ultimo elemento de un Switch no precisa de break.

El problema esque está en un bucle. Dos cosas deberías hacer:

Ponerle una pausa en el default:

Código C++:
Ver original
  1. default: cout<<"ERROR, OPCION INVALIDA.."<<endl; //OPCION INVALIDA.
  2. system("PAUSE");

Limpiar la pantalla cada vez que se repita el bucle:

Código C++:
Ver original
  1. switch (x)
  2. {
  3. case 1:
  4.     burbuja();
  5.     break;
  6. case 2:
  7.     seleccion();
  8.     break;
  9. case 3:
  10.     seguir = 0;
  11.     break;
  12.  
  13.  
  14. default:
  15.     cout<<"ERROR, OPCION INVALIDA.."<<endl; //OPCION INVALIDA.
  16.     system("PAUSE");
  17.  
  18. }
  19. if (seguir!=0)
  20. {
  21.     cout <<endl<< "DESEA CONTINUAR?? SI - PRESIONAR 1 , NO - PRESIONAR 0 ";
  22.     cin >> seguir;
  23. }
  24.  
  25.  
  26.  
  27. system("CLS"); // LIMPIAR LA PANTALLA
  28.  
  29.  
  30.  
  31. } while (seguir==1);
  #4 (permalink)  
Antiguo 01/02/2013, 08:43
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: validar datos en Ordenamiento C++

Es cierto, no hay nada que saltar.

No sé dónde tengo la cabeza, ando en 30 cosas a la vez.

Veo que no hay forma de borrar mi anterior mensaje.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Etiquetas: int, ordenamiento, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:21.