elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda! Validacion de Datos en Ordenamiento.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda! Validacion de Datos en Ordenamiento.  (Leído 3,457 veces)
BKsiragon

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Ayuda! Validacion de Datos en Ordenamiento.
« en: 1 Febrero 2013, 14:09 pm »

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:

Código:
/* 

#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 Dato "<<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 Dato "<<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");

}


En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #1 en: 1 Febrero 2013, 18:18 pm »

Hola! si lo compilas, el compilador te va a decir el error...
Código
  1. default: cout<<"ERROR, OPCION INVALIDA.."<<endl; //OPCION INVALIDA.
  2. }
  3. }
hay una llave de cierre que esta demas. Saludos


En línea

Ahorrate una pregunta, lee el man
ThePinkPanther

Desconectado Desconectado

Mensajes: 82



Ver Perfil
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #2 en: 1 Febrero 2013, 21:56 pm »

switch (x){
case 1:burbuja();
break;
case 2:seleccion();
break;
case 3:
seguir = 0;
break;
default: cout<<"ERROR, OPCION INVALIDA.."<<endl; //OPCION INVALIDA.
break; //te falto el break
}
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #3 en: 1 Febrero 2013, 22:22 pm »

switch (x){
case 1:burbuja();
break;
case 2:seleccion();
break;
case 3:
seguir = 0;
break;
default: cout<<"ERROR, OPCION INVALIDA.."<<endl; //OPCION INVALIDA.
break; //te falto el break
}

Si no recuerdo mal, en el 'default' del switch no es necesario añadir "break", puesto que detrás no hay ningún 'case'.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #4 en: 1 Febrero 2013, 22:37 pm »

switch (x){
case 1:burbuja();
break;
case 2:seleccion();
break;
case 3:
seguir = 0;
break;
default: cout<<"ERROR, OPCION INVALIDA.."<<endl; //OPCION INVALIDA.
break; //te falto el break
}

Es redundante colocar el break ahí, la aplicación simplemente va a seguir con su ejecución normal, esto se debe a que cuando se cumple uno de los casos dentro del switch la aplicación continua su ejecución secuencial y como podemos observar que el caso "default' es el último no hace falta colocar un break para romper con la estructura de control.
En línea

ThePinkPanther

Desconectado Desconectado

Mensajes: 82



Ver Perfil
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #5 en: 1 Febrero 2013, 22:53 pm »

Es redundante colocar el break ahí, la aplicación simplemente va a seguir con su ejecución normal, esto se debe a que cuando se cumple uno de los casos dentro del switch la aplicación continua su ejecución secuencial y como podemos observar que el caso "default' es el último no hace falta colocar un break para romper con la estructura de control.

Tienes razón no influye en nada.. perdon por lo anterior..

Así quedaría el codigo arreglado , lo unico que hice fue cambiar la variable x (int) , por una variable tipo char , para asi puedo comprobar los datos ingresados con la tabla ascii y verificar si el dato ingresado es un numero o no.

Codigo :


#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;
char 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;
if(x<48 || x>57) /* si es un caracter y no un numero vuelve al do*/
{
    cout<<"Un numero porfavor.."<<endl;
    continue;
}    

cout<<endl<<endl;
  
            

 
 
switch (x){
    
case '1':burbuja(); /*recuerda va entre ' ' , estamos hablando de char*/
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 Dato "<<I+1<<": ";
cin>>V;
}
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;
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 Dato "<<I+1<<": ";
cin>>V;
}
 
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;
V=V[K];
V[K]=Aux;
}
 
 
cout<<endl<<"[ NUEMROS ORDENADOS MEDIANTE SELECCION ]"<<endl;
for(I=N-1; I>=0; I--)
cout<<endl<<"\t\t"<<V;
cout<<endl<<endl;
system("exit");

}

« Última modificación: 1 Febrero 2013, 22:55 pm por Puredepapas » En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #6 en: 1 Febrero 2013, 23:41 pm »

Si con el if obligas a hacer un continue, entonces el default del switch no tiene sentido ya que nunca va a entrar ahi


Saludos
En línea

Ahorrate una pregunta, lee el man
ThePinkPanther

Desconectado Desconectado

Mensajes: 82



Ver Perfil
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #7 en: 2 Febrero 2013, 01:13 am »

Si con el if obligas a hacer un continue, entonces el default del switch no tiene sentido ya que nunca va a entrar ahi


Saludos
Si tiene sentido , juega el papel de verificar que el numero de opcion sea el correcto .
El if- continue , solo verifica que aya entrado un dato numerico y no un caracter.
saludos.
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #8 en: 2 Febrero 2013, 18:48 pm »

Tenes razon, nose q estaba viendo. Igual solo con el default alcanzaria


SAludos
En línea

Ahorrate una pregunta, lee el man
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda! Validacion de Datos en Ordenamiento.
« Respuesta #9 en: 2 Febrero 2013, 21:30 pm »

Nos podemos ahorrar la variable "seguir" y la pregunta "desea continuar" sin más que elegir bien el número, y con etiquetas Code y tabulado queda mejor:
Código
  1. #include <iostream>
  2. #include<windows.h>
  3. #define MAX 10
  4. using namespace std;
  5.  
  6.  void burbuja();
  7.  void seleccion();
  8.  
  9.  int main(void){
  10.  
  11.  system("color 0A"); //COLOR PARA LA CONSOLA
  12.  char x;
  13.  cout<<endl<<"\t##################################################################";
  14.  cout<<endl<<"\t#                    METODOS DE ORDENAMIENTO                     #";
  15.  cout<<endl<<"\t#            METODO DE LA BURBUJA Y SELECCION DIRECTA            #"; //PORTADA DEL PROMAGRA!
  16.  cout<<endl<<"\t#                              IS5D-C                            #";
  17.  cout<<endl<<"\t##################################################################"<<endl;
  18.  cout<<endl;
  19.  cout<<endl;
  20.  
  21.  cout<<endl<<"\t\t******************* M E N U ******************";
  22.  cout<<endl<<"\t\t*                                            *";
  23.  cout<<endl<<"\t\t*     1.- Ordenamiento por Metodo Burbuja    *";
  24.  cout<<endl<<"\t\t*                                            *";
  25.  cout<<endl<<"\t\t*     2.- Ordenamiento por Metodo Seleccion  *";  //MENU DEL PROGRAMA!
  26.  cout<<endl<<"\t\t*                                            *";
  27.  cout<<endl<<"\t\t*     3.- Salir                              *";
  28.  cout<<endl<<"\t\t**********************************************";
  29.  cout<<endl;
  30.  cout<<endl;
  31.  
  32.  cout<<endl<<">> ELIGE UNA OPCION: ";                              //PEDIR OPCION DEL MENU!
  33.  cout<<endl<<"   -------------------> ";
  34.  
  35.  /*********************************************/
  36.  do{
  37.    cout<<"Un numero del 1 al 3."<<endl;
  38.    cin>>x;
  39.    }while ( (x)<49 || (x)>51 );
  40.  /*********************************************/
  41.  switch (x){
  42.    case '1':burbuja();
  43.    break;
  44.    case '2':seleccion();
  45.    break;
  46.    case '3':
  47.    break;
  48.    default: cout<<"ERROR, OPCION INVALIDA.."<<endl; //OPCION INVALIDA.
  49.  }
  50.  return 0;
  51. }
  52.  
  53.  
  54. void burbuja() {
  55.  int I,N,Aux,J;
  56.  int V[10];
  57.  cout<<"Cuantos Numeros va a Ingresar al Vector?, Maximo 10: ";
  58.  cin>>N;
  59.  cout<<endl;
  60.  for(I=0; I<N; I++) {
  61.    cout<<"Ingrese Dato "<<I+1<<": ";
  62.    cin>>V[I];
  63.  }
  64.  for (I=0; I<N-1; I++)
  65.    for (J=0; J<(N-1)-I; J++)
  66.      if (V[J]>V[J+1]){
  67.        Aux=V[J];
  68.        V[J]=V[J+1];
  69.        V[J+1]=Aux ;
  70.    }
  71.  cout<<endl<<"[ NUMEROS ORDENADOS MEDIANTE BURBUJA ] "<<endl;
  72.  for(I=0; I<N; I++)
  73.    cout<<endl<<"\t\t"<<V[I];
  74.  cout<<endl<<endl;
  75. }
  76.  
  77. void seleccion() {
  78.  int J,I,N,K;
  79.  int V[10];
  80.  int Aux;
  81.  cout<<"Cuantos Numeros va a Ingresar al Vector?, Maximo 10: ";
  82.  cin>>N;
  83.  cout<<endl;
  84.  for(I=0; I<N; I++){
  85.    cout<<"Ingrese Dato "<<I+1<<": ";
  86.    cin>>V[I];
  87.  }
  88.  for(I=0; I<N-1; I++){
  89.    K=I;
  90.    for (J=I+1; J<N; J++)
  91.    if (V[J]<V[K])
  92.      K=J;
  93.    Aux=V[I];
  94.    V[I]=V[K];
  95.    V[K]=Aux;
  96.  }
  97.  cout<<endl<<"[ NUEMROS ORDENADOS MEDIANTE SELECCION ]"<<endl;
  98.  for(I=N-1; I>=0; I--)
  99.    cout<<endl<<"\t\t"<<V[I];
  100.  cout<<endl<<endl;
  101.  system("exit");
  102. }
  103.  
Saluditos!.
P.D: ¿Puredepapas?, yo creo que estaría mejor mojitopicón o papitasarrugadas. :laugh:
« Última modificación: 2 Febrero 2013, 21:34 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Validación de datos con Do while y condicionales en función C++
Programación C/C++
SojatDotar 1 4,482 Último mensaje 5 Diciembre 2015, 19:29 pm
por MAFUS
Validacion en Base de Datos....
.NET (C#, VB.NET, ASP)
Guillito 2 2,533 Último mensaje 26 Junio 2016, 14:13 pm
por Daniel Barrera
Validación de datos en XML con DTD
Desarrollo Web
Julián2016 1 2,057 Último mensaje 13 Diciembre 2016, 21:21 pm
por fran800m
validacion de datos c++
Programación C/C++
alejhgpm 8 6,515 Último mensaje 20 Junio 2017, 23:03 pm
por MAFUS
[C] Ordenamiento de datos en C
Programación C/C++
valen7valverde 2 3,669 Último mensaje 11 Mayo 2020, 00:19 am
por valen7valverde
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines