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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  error logico ayuda con este programa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: error logico ayuda con este programa  (Leído 3,328 veces)
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
error logico ayuda con este programa
« en: 23 Febrero 2015, 04:38 am »

Tengo este codigo  creado por mi mismo pero me da un error logico porque al ejecutarlo me dice que la cadena "UASD" solo tiene una vocal y es mentira.
Código
  1. #include <iostream>
  2. #include <string>
  3.  
  4. class cCadena{
  5.      private:
  6.              std::string CadCar;
  7.      public:
  8.             void setCadCar(std::string pCadCar){CadCar=pCadCar;}
  9.             std::string getCadCar(){
  10.                  return CadCar;
  11.                  }
  12.  
  13.             void ImpHorizontal(){
  14.                  std::cout<<CadCar<<std::endl;
  15.                  }
  16.  
  17.             void ImpVertical(){
  18.                  for(int i=0;i<CadCar.length();i++)
  19.                      std::cout<<CadCar[i]<<"\n";      
  20.                  }
  21.  
  22.             bool esVocal(){
  23.                  for(int i=0; CadCar[i]!='\0'; i++){
  24.                  if (CadCar[i] =='A' || CadCar[i] =='E' || CadCar[i] =='I' || CadCar[i] =='O' || CadCar[i] =='U'
  25.                      || CadCar[i] =='a' || CadCar[i] =='e' || CadCar[i] =='i' || CadCar[i] =='o' || CadCar[i] =='u'){
  26.                       return true;
  27.                       }
  28.                       else
  29.                        return false;
  30.                     }
  31.                  }
  32.  
  33.             void ImpCantVocales(){
  34.                  int CanVoc=0;
  35.                  if (esVocal())
  36.                     {
  37.                     CanVoc++;
  38.                        }
  39.               std::cout<<"\nLa cadena tiene "<< CanVoc <<" vocales"<< std::endl;
  40.                  }
  41.  
  42.      };
  43.  
  44. main(){
  45.       cCadena oCadena;
  46.       oCadena.setCadCar("UASD");
  47.       oCadena.ImpHorizontal();
  48.       //oCadena.ImpVertical();
  49.       oCadena.ImpCantVocales();
  50.      // oCadena.ImpCantConsonantes();
  51.  
  52.       system("pause");
  53.       }
  54.  
  55.  

me imprime que solo existe una vocal ayuda por favor!!!

y alguien es tan amable de explicarme este codigo?
Código
  1. void displayMaxCharacterWords(std::string& cadena )
  2. {
  3.  std::string palabra;
  4.  string::iterator it = cadena.begin( );
  5.  
  6.  for( string::iterator it2 = it; it2 != cadena.end( ); ++it2 )
  7.  {
  8.    if ( *it2 == ' '  || *it2 == ',' || *it2 == '.' )
  9.    {
  10.      size_t length = std::distance( it, it2 );
  11.      if ( length > palabra.size( ) )
  12.        palabra = std::string(it, it2 );
  13.      it = it2+1;
  14.    }
  15.  }
  16.  
  17.  std::cout << "\n\nLa palabra mas larga de la cadena es: "<< palabra << std::endl;
  18. }
  19.  


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: error logico ayuda con este programa
« Respuesta #1 en: 23 Febrero 2015, 04:56 am »

el error logico
Código
  1. if (esVocal())
  2.                     {
  3.                     CanVoc++;
  4.                        }
junto con
Código
  1. if (CadCar[i] =='A' || CadCar[i] =='E' || CadCar[i] =='I' || CadCar[i] =='O' || CadCar[i] =='U'
  2.                      || CadCar[i] =='a' || CadCar[i] =='e' || CadCar[i] =='i' || CadCar[i] =='o' || CadCar[i] =='u'){
  3.                       return true;

si tiene vocal retorna true... listo, fin de la funcion... no se repite porque el return es definitivo, ya salió de la función... en tal caso tienes que llevar un contardor y retornar un int

te recomiendo que uses el debuuger de tu ide para que puedas visualizarlo...


sobre el segundo... los "iterator" son como punteros, pero con funciones divertidas... más info aquí

en la linea 4, crea un iterador y lo apunta al inicio

en el for, crea un iterador y lo apunta al primero, si el iterador no llega al final, lo avanza 1

el if comprueba el caracter apuntado

distance( it, it2 ); mide la distancia entre 2 punteros

string(it, it2 ); retorna el string creado por el contenido entre los 2 punteros



« Última modificación: 23 Febrero 2015, 05:02 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: error logico ayuda con este programa
« Respuesta #2 en: 23 Febrero 2015, 05:16 am »

Asi dices
Código
  1. bool esVocal(){
  2.                  for(int i=0; CadCar[i]!='\0'; i++)
  3.                  if (CadCar[i] =='A' || CadCar[i] =='E' || CadCar[i] =='I' || CadCar[i] =='O' || CadCar[i] =='U'
  4.                      || CadCar[i] =='a' || CadCar[i] =='e' || CadCar[i] =='i' || CadCar[i] =='o' || CadCar[i] =='u')
  5.                       return true;
  6.                  }
  7.  
  8.             int ImpCantVocales(){
  9.                  int CanVoc=0;
  10.                  if (esVocal()){
  11.                     CanVoc++;
  12.                     return CanVoc;}
  13.                  }
  14.  

eso fue lo que entendi jejejej
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: error logico ayuda con este programa
« Respuesta #3 en: 23 Febrero 2015, 05:23 am »

no ...

sería


Código
  1. int esVocal(){
  2.    int contador = 0;
  3.    for//sin cambios...
  4.      if//sin cambios...
  5.        contador++;
  6.      }
  7.    }
  8.    return contador;
  9. }
  10.  
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: error logico ayuda con este programa
« Respuesta #4 en: 23 Febrero 2015, 05:35 am »

no puedo hacer que la funcion es vocal me devuelva falso o verdadero? debe devolverme un entero?
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: error logico ayuda con este programa
« Respuesta #5 en: 23 Febrero 2015, 05:42 am »

puedes, pero entonces tendrás que pasarle como parametro una sola letra (como sería logico según su nombre de funcion, ya que to no te digo "hola" es vocal o no :P)

y sería algo como

Código
  1. int esVocal(char letra){
  2. //sin for
  3. //solo if
  4. }
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: error logico ayuda con este programa
« Respuesta #6 en: 23 Febrero 2015, 05:55 am »

jejejje Gracias pero eso lo tenia hace un rato de esa manera que me lo planteas y me decia que era solo una vocal jajajajajja.

Pense que podia haber una manera de yo pasar el String y recorriega cada letra y me dijese si era una vocal true. jejeje es que necesito hacer esa funcion para hacerme la vida mas facil con las consonantes
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: error logico ayuda con este programa
« Respuesta #7 en: 23 Febrero 2015, 06:05 am »

el asunto es que si retorna bool como esperas que te digas cuantas fueron? XD...

hazlo como te lo planteo... pero el for va en ImpCantVocales que es ña funcion encargada de contar vocales...

una buena forma de estructurar tu codigo es pensar que es una oficina... no pongas a gente a hacer lo que no le toca... XD

ImpCantVocales cuenta las vocales, pero esVocal decide si es verdadero o falso que lo que recibió es una vocal

esVocal por que se vea bien yo lo haría

Código
  1. bool esVocal(char letra){
  2.  string vocales = "aeiouAEIOU";
  3.  for(int i=0; i<10 ; i++)
  4.    if(letra==vocales[i])
  5.      return true;
  6.  return false;
  7. }
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: error logico ayuda con este programa
« Respuesta #8 en: 23 Febrero 2015, 06:19 am »

Gracias amigo. ;-) ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda en este programa en visual c++, error!!!
Programación C/C++
Yanivo 1 2,250 Último mensaje 19 Noviembre 2011, 00:43 am
por rookie17
ayuda con este programa, tengo un error logico creo
Programación C/C++
TaLaP0 XoR BiT 2 2,814 Último mensaje 3 Diciembre 2012, 04:06 am
por TaLaP0 XoR BiT
NESESITO AYUDA EN ESTE PROGRAMA ME SALE ERROR EN TODA CODIFICACION Q PONGO « 1 2 3 4 »
Programación Visual Basic
Gabriel094 31 12,544 Último mensaje 29 Enero 2013, 08:00 am
por streetthief
error logico c
Programación C/C++
Kenji-chan 4 2,423 Último mensaje 13 Diciembre 2016, 00:57 am
por Kenji-chan
Error lógico cuando compilo ejercicio - CONSULTA
Programación C/C++
Cero++ 6 2,327 Último mensaje 11 Diciembre 2018, 20:51 pm
por Cero++
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines