Título: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: HelThunk en 3 Abril 2015, 02:21 am Buenas a todos, hoy vengo a presentarles un programa que he hecho (estoy totalmente abierto a criticas, tanto constructivas como destructivas), me ha llevado bastante tiempo (8 - 9 h) y mucho esfuerzo, no espero para nada que valoréis esto, es más, quiero que me digáis todo lo que pensáis, quiero mejorar (estoy aprendiendo de forma autodidacta) y simplemente, me anotare vuestras aportaciones, para intentar mejorar en futuros proyectos. Gracias con antelación :rolleyes:
*Si alguien se siente ofendido al ver que, una persona que no tiene apenas conocimientos sobre este tema se quiere adentrar, pido disculpas con antelación (eso si, tengo mucho interés, así que mi objetivo es aprender, y no voy a parar hasta conseguirlo..) *Me gusta la programación, y por ende, estoy intentando aprender por mi cuenta, me he visto muchos vídeos, he leído mucha información, pero como podéis comprobar, aun me falta un laaaaargo camino, el cual pienso recorrer con muchas ganas (sinceramente estoy muy perdido, así que cualquier ayuda es bienvenida). Si vas a probar el programa; Usuario; helthunk Contraseña = 1234 Código
Todo consejo es bien acogido. Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: boy-ka en 3 Abril 2015, 05:23 am system("pause"); Solo funciona para los sistemas operativos que tengan el comando PAUSE, lo demás es bastante básico el código, pero bueno estás empezando.
Siguiendo con lo mismo, cuando haces una llamada a system, es como si usaras batch, y puede hacer que el programa se trabe esperando respuesta del comando que llames con sl System, haciendo así que vaya más lento o que de error en caso de que al comando que llames no existe. En fin, solo eso por lo demás supongo que bien para ser nuevo en esto, aunque hay varias formas de hacer lo que hiciste más simplificado pero BUUEEEENO XD bien para comenzar. Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: crack81 en 3 Abril 2015, 07:34 am La verdad me da gusto que la gente se esfuerze programando
Primero te felicito y te animo a seguir, mientras otros se ponen a flojear tu haces tu esfuerzo y te aseguro que con el tiempo te se sera recompenzado. Ahora te voy a hacer algunos pequeños consejos no los tomes a mal solo son opiniones que he adquirido con la experiencia y es por eso quiero que te ahorres el trabajar demas. 1: Evita en lo maximo declarar variables globales como lo has hecho en tus primeras lneas de la 10-14, no es una buena costumbre ademas que si ingresas en la poo esta estrictamente prohibido utilizarlas, recuerdad que c++ tambien posee poo 2:Evita utilizar el system("pause") en vez de eso utiliza funciones nativas de c++ como serian cin.get(); utilizar comandos del sistemas provoca que tu programa pierda portabilidad 3: No combines a c++ con c aunque son leguajes similares no se deben mezclar o se tendria que hacerlo en las menores ocasiones, te lo digo porque en la funcion menu1 estas declarando menu1(void) cuando esto es propiamente de c no de c++, en c++ dejar el parentesis solo es completamente valido 4: En esa misma funcion, la funcion retorna un entero cuando no seria necesario, lo mas correcto seria declarar la funcion como void porque el retorno de 1 que hace, es inecesario 5:Cuando tengas muchas condicionales siempre tendremos la opcion de los switch que en velocidad de ejecucion siempre seran mas optimos que los if-else ademas que se ven mas limpios 6; Intenta modularizar tu codigo es decir no hagas funciones demasiado grandes porque al final no se pueden leer de manera comodas, intenta que tu programa se dividad en pequeñas partes o funciones que vaya resolviendo problemas pequeños y en su conjunto resuelvan el problema final. Espero mis consejos te ayuden y sean de aprendizaje por ultimo parace que estas utilizando c++ builder, te felicito a ver si tienes chancita y le das una mirada a mi querido Delphi que anda en busca de nuevos desarrolladores jovenes. Saludos... Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: HelThunk en 3 Abril 2015, 15:16 pm system("pause"); Solo funciona para los sistemas operativos que tengan el comando PAUSE, lo demás es bastante básico el código, pero bueno estás empezando. Siguiendo con lo mismo, cuando haces una llamada a system, es como si usaras batch, y puede hacer que el programa se trabe esperando respuesta del comando que llames con sl System, haciendo así que vaya más lento o que de error en caso de que al comando que llames no existe. En fin, solo eso por lo demás supongo que bien para ser nuevo en esto, aunque hay varias formas de hacer lo que hiciste más simplificado pero BUUEEEENO XD bien para comenzar. Me lo anoto, gracias por echar una mano :D La verdad me da gusto que la gente se esfuerze programando Graacias :D, comentarios como los tuyos ayudan a seguir con muchas ganas ^^Primero te felicito y te animo a seguir, mientras otros se ponen a flojear tu haces tu esfuerzo y te aseguro que con el tiempo te se sera recompensado. Ahora te voy a hacer algunos pequeños consejos no los tomes a mal solo son opiniones que he adquirido con la experiencia y es por eso quiero que te ahorres el trabajar demas. ¿Entonces los pongo dentro de la función principal no?1: Evita en lo maximo declarar variables globales como lo has hecho en tus primeras lneas de la 10-14, no es una buena costumbre ademas que si ingresas en la poo esta estrictamente prohibido utilizarlas, recuerdad que c++ tambien posee poo 2:Evita utilizar el system("pause") en vez de eso utiliza funciones nativas de c++ como serian cin.get(); Perfecto, ¿entonces ahora en vez de poner system("pause") pongo cin.get() no?, o tengo que añadir alguna biblioteca?utilizar comandos del sistemas provoca que tu programa pierda portabilidad 3: No combines a c++ con c aunque son leguajes similares no se deben mezclar o se tendria que hacerlo en las menores ocasiones, te lo digo porque en la funcion menu1 estas declarando menu1(void) cuando esto es propiamente de c no de c++, en c++ dejar el parentesis solo es completamente valido Me lo anoto.4: En esa misma funcion, la funcion retorna un entero cuando no seria necesario, lo mas correcto seria declarar la funcion como void porque el retorno de 1 que hace, es inecesario En el comentario 6 especifico el por que de esto.5:Cuando tengas muchas condicionales siempre tendremos la opcion de los switch que en velocidad de ejecucion siempre seran mas optimos que los if-else ademas que se ven mas limpios Me lo anoto.6; Intenta modularizar tu codigo es decir no hagas funciones demasiado grandes porque al final no se pueden leer de manera comodas, intenta que tu programa se dividad en pequeñas partes o funciones que vaya resolviendo problemas pequeños y en su conjunto resuelvan el problema final. Al principio intentaba dividir todo en funciones, pero el problema vino cuando en la función menu() intentaba invocar a la función menu1(), me daba errores, intente muchas cosas diferentes, como cambiar el orden de estos, crear un menu3() que fuese = a menu1(), utilizar el menu1(void), colocarlo en forma de entero en vez de void.. y nada, ningún método me funciono, así que decidí ponerlo todo dentro del submeno.Espero mis consejos te ayuden y sean de aprendizaje Tus consejos me han ayudado muchísimo ^^. un placer ver que la gente se interesa por echar una mano a gente nueva :D, por cierto, me interesaría mucho eso del Delphi ya que programo solo y no tengo con quien comentar las cosas ni nada, y pues estar en un grupo iría perfecto (Desconozco que es el Delphi, he buscado en google y no he visto algo relacionado con el tema).por ultimo parece que estas utilizando c++ builder, te felicito a ver si tienes chancita y le das una mirada a mi querido Delphi que anda en busca de nuevos desarrolladores jovenes. *Utilizo Microsoft Visual Studio Un saludo ^^ Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: crack81 en 3 Abril 2015, 20:30 pm Código: ¿Entonces los pongo dentro de la función principal no? si esas variables las necesitas en la funcion menu pues entonces las declaras ahi. Código: Perfecto, ¿entonces ahora en vez de poner system("pause") pongo cin.get() no?, o tengo que añadir alguna biblioteca? No necesitas ninguna libreria adicional solo la <iostream> Bueno respecto a Delphi y a C++ builder puedes revisar su pagina oficial http://www.embarcadero.com/es/products/application-development (http://www.embarcadero.com/es/products/application-development) si te intersa alguno de los dos puedes econtrar mas informacion en los foros http://clubdelphi.com/ (http://clubdelphi.com/) y http://delphiaccess.com/foros/ (http://delphiaccess.com/foros/) si no conoces delphi y quisieras tutoriales puedes consultar este hilo donde te seran proporcionados, desde un nivel basico hasta un avanzado http://clubdelphi.com/foros/showthread.php?t=85907 (http://clubdelphi.com/foros/showthread.php?t=85907) http://www.programacionfacil.com/borland_delphi/start.html (http://www.programacionfacil.com/borland_delphi/start.html) http://www.programacionfacil.com/pascal/start.html (http://www.programacionfacil.com/pascal/start.html) Solo te recuerdo que Delphi estas basado en lenguaje object pascal o sea el pascal orientado a objetos y con todas las caracterisitcas de los nuevos lenguajes Tambien Delphi al ser el heredero de pascal posee una sintaxis mas sencilla y clara que c o c++ por lo que desarrollar siempre es mas comodo e intuitivo en las ultimas versiones de Delphi como c++ builder puedes desarrollar para windows, mac, iosx, android practicamente con el mismo codigo si al final eres mas de lenguaje c++ te aconsejo mirar a c++ builder aqui unos tutorailes muy interesantes http://www.programacionfacil.com/cpp_builder/start.html (http://www.programacionfacil.com/cpp_builder/start.html) http://elvex.ugr.es/decsai/builder/ (http://elvex.ugr.es/decsai/builder/) ojo tanto en la version de c++ builder como Delphi no es necesario utilizar sus ultimas versiones, mas si eres novato en ellos yo utilizo las versiones 2010 y me van de perlas pero aun asi, si quieres probar sus ultimas versiones no hay problema Bueno si te decides por alguno que bueno, si siguens con visual studio esta bien, el chiste es no dejar de programar Si tienes dudas puedes contacatarme por mensaje privado y si esta en mis posibilidades te pudo ayudar. Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: HelThunk en 4 Abril 2015, 15:16 pm Creo que me voy a quedar con c++, me gusta mucho (no se por que), he visto otros lenguajes como phyton, ruby.. y sinceramente no me llaman..
Muchas gracias por tu ayuda ^^, la verdad es que tengo muchísimas dudas, pero no quiero molestarte, así que no te preocupes jaja, de momento me apaño googleando :rolleyes: Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: tremolero en 4 Abril 2015, 18:37 pm A mi lo unico que se me ocurre como consejo, ya que yo tampoco tengo la misma practica que ellos, es que en el caso de querer comparar el SI o NO, en vez de crear todas las posibles combinaciones de mayusculas o minusculas, es que el valor que ellos introduzcan lo conviertas todo a minusculas o mayusculas.
Piensa en que al ser solo 2 letras, al cuadrado son 4 posibles, pero como la respuesta tenga varias letras mas, te volveras loco escribiendo todas las posibilidades. Un saludo y sigue asi :P Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: HelThunk en 4 Abril 2015, 18:49 pm A mi lo unico que se me ocurre como consejo, ya que yo tampoco tengo la misma practica que ellos, es que en el caso de querer comparar el SI o NO, en vez de crear todas las posibles combinaciones de mayusculas o minusculas, es que el valor que ellos introduzcan lo conviertas todo a minusculas o mayusculas. Piensa en que al ser solo 2 letras, al cuadrado son 4 posibles, pero como la respuesta tenga varias letras mas, te volveras loco escribiendo todas las posibilidades. Un saludo y sigue asi :P ¿Cómo convierto las combinaciones en minúsculas o mayúsculas? Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: crack81 en 5 Abril 2015, 01:12 am Puedes usar las funciones toupper y tolower
que convierte un string a minusculas o mayusculas seguna quieras puede revisar su referencia en estos links http://www.cplusplus.com/reference/cctype/toupper/ (http://www.cplusplus.com/reference/cctype/toupper/) http://www.cplusplus.com/reference/cctype/tolower/ (http://www.cplusplus.com/reference/cctype/tolower/) Repecto a las dudas, puedes hacermelas no importa, solo espero que a veces tengas paciencia porque por si alguna razon no te respondo rapido. Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: HelThunk en 5 Abril 2015, 02:23 am Puedes usar las funciones toupper y tolower que convierte un string a minusculas o mayusculas seguna quieras puede revisar su referencia en estos links http://www.cplusplus.com/reference/cctype/toupper/ (http://www.cplusplus.com/reference/cctype/toupper/) http://www.cplusplus.com/reference/cctype/tolower/ (http://www.cplusplus.com/reference/cctype/tolower/) Repecto a las dudas, puedes hacermelas no importa, solo espero que a veces tengas paciencia porque por si alguna razon no te respondo rapido. He intentado usar toupper y tolower, pero no consigo que me salga.. ¿me podrías poner un ejemplo? (si es en c++ mejor, así no mezclo c con c++) *Cosas que he intentado; Código
Código
Código
[He intentado más cosas pero es una tonteria ponerlo todo.. :S] Esto funciona, pero no lo comprendo.. ; Código
Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: rir3760 en 5 Abril 2015, 03:17 am Los problemas se generan por el tipo de retorno de tolower (http://www.cplusplus.com/reference/cctype/tolower/), como este es int se imprime como tal. Para que se imprima el carácter correspondiente puedes utilizar:
Código
Un saludo Título: Re: Sistema bancario (cajero automático) [C++] [CMD] Publicado por: crack81 en 5 Abril 2015, 06:48 am Tranquilo con lo de no combiar c con c++ generalmente suelen suceder esas confuciones cuando se trabaja con memoria dinamica
pero ya eso lo veras viendo ademas si algo no conoces para eso estamos en el foro para ayudarte con tus dudas te dejo esta version Código
aparte te dejo este ejemplo de tabla ascii que creo te vendra bien Código
pagina sobre la tabla acii http://www.elcodigoascii.com.ar/codigos-ascii-extendidos/cuadrado-negro-caracter-grafico-codigo-ascii-254.html (http://www.elcodigoascii.com.ar/codigos-ascii-extendidos/cuadrado-negro-caracter-grafico-codigo-ascii-254.html) http://es.wikipedia.org/wiki/ASCII (http://es.wikipedia.org/wiki/ASCII) |