Autor
|
Tema: error logico ayuda con este programa (Leído 3,328 veces)
|
MellaSystems
Desconectado
Mensajes: 46
|
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. #include <iostream> #include <string> class cCadena{ private: std::string CadCar; public: void setCadCar(std::string pCadCar){CadCar=pCadCar;} std::string getCadCar(){ return CadCar; } void ImpHorizontal(){ std::cout<<CadCar<<std::endl; } void ImpVertical(){ for(int i=0;i<CadCar.length();i++) std::cout<<CadCar[i]<<"\n"; } bool esVocal(){ for(int i=0; CadCar[i]!='\0'; i++){ if (CadCar[i] =='A' || CadCar[i] =='E' || CadCar[i] =='I' || CadCar[i] =='O' || CadCar[i] =='U' || CadCar[i] =='a' || CadCar[i] =='e' || CadCar[i] =='i' || CadCar[i] =='o' || CadCar[i] =='u'){ return true; } else return false; } } void ImpCantVocales(){ int CanVoc=0; if (esVocal()) { CanVoc++; } std::cout<<"\nLa cadena tiene "<< CanVoc <<" vocales"<< std::endl; } }; main(){ cCadena oCadena; oCadena.setCadCar("UASD"); oCadena.ImpHorizontal(); //oCadena.ImpVertical(); oCadena.ImpCantVocales(); // oCadena.ImpCantConsonantes(); system("pause"); }
me imprime que solo existe una vocal ayuda por favor!!! y alguien es tan amable de explicarme este codigo? void displayMaxCharacterWords(std::string& cadena ) { std::string palabra; string::iterator it = cadena.begin( ); for( string::iterator it2 = it; it2 != cadena.end( ); ++it2 ) { if ( *it2 == ' ' || *it2 == ',' || *it2 == '.' ) { size_t length = std::distance( it, it2 ); if ( length > palabra.size( ) ) palabra = std::string(it, it2 ); it = it2+1; } } std::cout << "\n\nLa palabra mas larga de la cadena es: "<< palabra << std::endl; }
|
|
|
En línea
|
|
|
|
engel lex
|
el error logico if (esVocal()) { CanVoc++; }
junto con if (CadCar[i] =='A' || CadCar[i] =='E' || CadCar[i] =='I' || CadCar[i] =='O' || CadCar[i] =='U' || CadCar[i] =='a' || CadCar[i] =='e' || CadCar[i] =='i' || CadCar[i] =='o' || CadCar[i] =='u'){ 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
Mensajes: 46
|
Asi dices bool esVocal(){ for(int i=0; CadCar[i]!='\0'; i++) if (CadCar[i] =='A' || CadCar[i] =='E' || CadCar[i] =='I' || CadCar[i] =='O' || CadCar[i] =='U' || CadCar[i] =='a' || CadCar[i] =='e' || CadCar[i] =='i' || CadCar[i] =='o' || CadCar[i] =='u') return true; } int ImpCantVocales(){ int CanVoc=0; if (esVocal()){ CanVoc++; return CanVoc;} }
eso fue lo que entendi jejejej
|
|
|
En línea
|
|
|
|
engel lex
|
no ... sería int esVocal(){ int contador = 0; for//sin cambios... if//sin cambios... contador++; } } return contador; }
|
|
|
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
Mensajes: 46
|
no puedo hacer que la funcion es vocal me devuelva falso o verdadero? debe devolverme un entero?
|
|
|
En línea
|
|
|
|
engel lex
|
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 ) y sería algo como int esVocal(char letra){ //sin for //solo if }
|
|
|
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
Mensajes: 46
|
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
|
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 bool esVocal(char letra){ string vocales = "aeiouAEIOU"; for(int i=0; i<10 ; i++) if(letra==vocales[i]) return true; return false; }
|
|
|
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.
|
|
|
|
|
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
|
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
|
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
|
29 Enero 2013, 08:00 am
por streetthief
|
|
|
error logico c
Programación C/C++
|
Kenji-chan
|
4
|
2,423
|
13 Diciembre 2016, 00:57 am
por Kenji-chan
|
|
|
Error lógico cuando compilo ejercicio - CONSULTA
Programación C/C++
|
Cero++
|
6
|
2,327
|
11 Diciembre 2018, 20:51 pm
por Cero++
|
|