Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: HelThunk en 3 Abril 2015, 02:21 am



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
  1. // BancoHelThunk.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <string>
  7. #include <Windows.h>
  8. using namespace std;
  9.  
  10. int saldo = 5000;
  11. bool esalir = false;
  12. bool salir1 = false;
  13. bool eexit = false;
  14.  
  15.  
  16.  
  17. void menu(){
  18. //menu en bucle
  19. do{
  20.    cout << "SELECCIONE UNA OPCION (Inserte el boton correspondiente);" << endl;
  21. cout << "Consultar mi saldo ; 1" << endl;
  22.    cout << "Retirar dinero ; 2" << endl;
  23.    cout << "Ingresar dinero ; 3" << endl;
  24.    cout << "Hacer una transferencia bancaria ; 4" << endl;
  25.    cout << "'Hackear' el servidor para sacar dinero gratis ; 5" << endl;
  26.    cout << "Jugar al HelPacMan; 6" << endl;
  27.    cout << "Contactar con el soporte; 7" << endl;
  28.    cout << "Salir; 8" << endl;
  29. int num;
  30. cin >> num;
  31. //respuesta a menu
  32. bool eexit1 = false;
  33. while (!eexit1){
  34. bool meexit = false;
  35. system("cls");
  36. if (num == 1 && !meexit){
  37. system("cls");
  38. cout << "Usted dispone de " << saldo << " euros, qu\202 desea hacer?"<< endl<<endl;
  39. //invocamos un comenu
  40. cout << "SELECCIONE UNA OPCION (Inserte el boton correspondiente);" << endl;
  41. cout << "Volver al menu principal ; 1" << endl;
  42. cout << "Salir del programa; 2" << endl;
  43.  
  44. int s;
  45. cin >> s;
  46. if (s == 1){
  47. //volvemos a invocar el menu saliendo de esta condicion
  48. system("cls");
  49. meexit = false;
  50. menu();
  51.  
  52. }
  53. else if (s == 2){
  54. //salimos de todos los bucles internos y exteros (finalizando el programa)
  55. meexit = true;
  56. eexit = true;
  57. esalir = true;
  58. eexit1 = true;
  59.  
  60. }
  61. else cout << "Por favor, inserte un valor valido;" << endl;
  62. system("pause");
  63. }
  64. bool meexit1 = false;
  65. if (num == 2 && !meexit1){
  66. //cambiamos el valor del saldo restandole la cantidad que desea retirar, no dejandole
  67. //retirar mas de lo que tiene
  68. system("cls");
  69. cout << "Cuanto desea retirar?" << endl;
  70. int s1;
  71. cin >> s1;
  72. if (saldo >= s1){
  73. saldo = saldo - s1 ;
  74. cout << "Usted acaba de retirar " << s1 << " euros, le queda/n " << saldo <<"en su cuenta"<< endl;
  75. cout << "Que desea hacer?" << endl << endl;
  76. //invocamos el comenu
  77. cout << "SELECCIONE UNA OPCION (Inserte el boton correspondiente);" << endl;
  78. cout << "Volver al menu principal ; 1" << endl;
  79. cout << "Salir del programa; 2" << endl;
  80. int s;
  81. cin >> s;
  82. if (s == 1){
  83. //volvemos a invocar el menu saliendo de esta condicion
  84. system("cls");
  85. menu();
  86. }
  87. else if (s == 2){
  88. //salimos de todos los bucles internos y exteros (finalizando el programa)
  89. meexit = true;
  90. eexit = true;
  91. esalir = true;
  92. eexit1 = true;
  93. }
  94. else{
  95. cout << "Por favor, inserte un valor valido;" << endl;
  96. system("pause");
  97. }
  98. }
  99. else if (saldo < s1){
  100. cout << "AQUI NO REGALAMOS DINERO, SOLO PUEDE SACAR MENOS DINERO DEL QUE POSEE" << endl;
  101. system("pause");
  102. system("cls");
  103. cout << "Que desea hacer?" << endl;
  104. int s2;
  105. cout << "SELECCIONE UNA OPCION (Inserte el boton correspondiente);" << endl;
  106. cout << "Extraer dinero ; 1" << endl;
  107. cout << "Volver al menu principal; 2" << endl;
  108. cin >> s2;
  109. bool meexit3 = false;
  110.  
  111. if (s2 == 1 && !meexit3){
  112. //volvemos a extraer dinero
  113. system("cls");
  114. meexit = true;
  115. }
  116. else if (s2 == 2){
  117. //salimos de todos los bucles internos
  118. system("cls");
  119. meexit3 = true;
  120. meexit = true;
  121. eexit = true;
  122. eexit1 = true;
  123. }
  124. else{
  125. cout << "Por favor, inserte un valor valido;" << endl;
  126. system("pause");
  127. }
  128. }
  129. else{
  130. cout << "Por favor, introduzca un numero valido" << endl;
  131. system("pause");
  132. }
  133.  
  134. }
  135. bool meexit4 = false;
  136. if (num == 3 && !meexit4){
  137. system("cls");
  138. cout << "Cuanto desea ingresar?" << endl;
  139. int s4;
  140. cin >> s4;
  141. saldo = saldo + s4;
  142. cout << "Usted acaba de ingresar " << s4 << " euros, su saldo aumenta a  " << saldo << endl;
  143. cout << "Que desea hacer?" << endl << endl;
  144. //invocamos el comenu
  145. cout << "SELECCIONE UNA OPCION (Inserte el boton correspondiente);" << endl;
  146. cout << "Volver al menu principal ; 1" << endl;
  147. cout << "Salir del programa; 2" << endl;
  148. int s;
  149. cin >> s;
  150. if (s == 1){
  151. //volvemos a invocar el menu saliendo de esta condicion
  152. system("cls");
  153. meexit4 = true;
  154. menu();
  155. }
  156. else if (s == 2){
  157. //salimos de todos los bucles internos y exteros (finalizando el programa)
  158. meexit4 = true;
  159. eexit = true;
  160. esalir = true;
  161. eexit1 = true;
  162. }
  163. else{
  164. cout << "Por favor, inserte un valor valido;" << endl;
  165. system("pause");
  166. }
  167.  
  168.  
  169. }
  170. bool meexit5 = false;
  171. bool meexit7 = false;
  172. if (num == 4 && !meexit5){
  173. system("cls");
  174. if (num == 4 && !meexit5){
  175. system("cls");
  176. cout << "Esta usted apunto de hacer una transferencia bancaria, esta usted seguro?" << endl;
  177. string rspta1, rspta2;
  178. cin >> rspta1;
  179. float dinero, cuenta;
  180.  
  181. if (rspta1 == "Si" || rspta1 == "sI" || rspta1 == "SI" || rspta1 == "si"){
  182. cout << "Ingrese el numero de cuenta al cual desea hacer la transferencia" << endl;
  183. cin >> cuenta;
  184. cout << "Ingrese la cantidad a dar;" << endl;
  185. cin >> dinero;
  186. if (saldo < dinero){
  187. cout << "no tienes esa cantidad de dinero" << endl;
  188. system("pause");
  189. system("cls");
  190. break;
  191. }
  192. else if (saldo <= dinero){
  193. cout << "Estas a punto de dar " << dinero << " a este numero de cuenta;" << cuenta << endl;
  194. cout << "Desea usted continuar?" << endl;
  195. cin >> rspta2;
  196.  
  197.  
  198. if (rspta2 == "sI" || rspta2 == "SI" || rspta2 == "Si" || rspta2 == "si"){
  199. saldo = saldo - dinero;
  200. cout << "La transferencia se ha realizado con exito" << endl;
  201. system("cls");
  202. meexit5 = true;
  203. eexit1 = true;
  204. }
  205. else if (rspta2 == "no" || rspta2 == "NO" || rspta2 == "si" || rspta2 == "si"){
  206. cout << "Deacuerdo, usted sera redireccionado al menu principal" << endl;
  207. system("pause");
  208. system("cls");
  209. meexit5 = true;
  210. }
  211. else{
  212. cout << "Por favor, responda 'si' o 'no'" << endl;
  213. system("pause");
  214. }
  215. }
  216. else cout << "Por favor introduzca un numero valido" << endl;
  217. system("pause");
  218. system("cls");
  219. }
  220. if (rspta1 == "No" || rspta1 == "NO" || rspta1 == "nO" || rspta1 == "no"){
  221. cout << "Vovliendo al menu principal" << endl;
  222. system("pause");
  223. system("cls");
  224. meexit5 = true;
  225. eexit1 = true;
  226. }
  227. else{
  228. cout << "Por favor introduzca si o no" << endl;
  229. system("pause");
  230. }
  231. }
  232. }
  233. else if (num == 5){
  234. system("cls");
  235. cout << "Enserio pensabas que iba a ser tan facil?" << endl;
  236. cout << "DESPIDETE DE TU TARJETA BANCARIA"<<endl;
  237. cout << "DESPIDETE DE TU TARJETA BANCARIA" << endl;
  238. cout << "DESPIDETE DE TU TARJETA BANCARIA" << endl;
  239. cout << "DESPIDETE DE TU TARJETA BANCARIA" << endl;
  240. cout << "Cargando archivos CML en la tarjeta A34sT" << endl;
  241. for (int A1 = 0; A1 < 9; A1++){
  242. cout << ".";
  243. Sleep(100);
  244. }
  245. cout <<endl<< "Cargando archivos CML en la tarjeta A34rre24sT" << endl;
  246. for (int A1 = 0; A1 < 9; A1++){
  247. cout << ".";
  248. Sleep(125);
  249. }
  250. cout << endl << "Cargando archivos CML en la tarjeta 789S23" << endl;
  251. for (int A1 = 0; A1 < 25; A1++){
  252. cout << ".";
  253. Sleep(30);
  254. }
  255. cout << endl << "Cargando archivos CML en la tarjeta AS58sST" << endl;
  256. for (int A1 = 0; A1 < 15; A1++){
  257. cout << ".";
  258. Sleep(90);
  259. }
  260. cout << endl << "Cargando archivos CML en la tarjeta Aer54drET" << endl;
  261. for (int A1 = 0; A1 < 9; A1++){
  262. cout << ".";
  263. Sleep(60);
  264. }
  265. cout << endl << "Cargando archivos CML en la tarjeta 23ìo44e24sT" << endl;
  266. for (int A1 = 0; A1 < 9; A1++){
  267. cout << ".";
  268. Sleep(100);
  269. }
  270. cout << endl << "Cargando archivos CML en la tarjeta M4563S23" << endl;
  271. for (int A1 = 0; A1 < 15; A1++){
  272. cout << ".";
  273. Sleep(150);
  274. }
  275. cout << endl << "Cargando archivos CML en la tarjeta AS30215sST" << endl;
  276. for (int A1 = 0; A1 < 6; A1++){
  277. cout << ".";
  278. Sleep(90);
  279. }
  280. cout << endl << "Cargando archivos CML en la tarjeta Ae8T" << endl;
  281. for (int A1 = 0; A1 < 9; A1++){
  282. cout << ".";
  283. Sleep(130);
  284. }
  285. saldo = 0;
  286. cout << endl<<"DATOS CARGADOS CON EXITO, SU SALDO ES DE "<<saldo<<" DOLARES" << endl;
  287. cout << "DATOS CARGADOS CON EXITO, SU SALDO ES DE " << saldo << " DOLARES" << endl;
  288. cout << "DATOS CARGADOS CON EXITO, SU SALDO ES DE " << saldo << " DOLARES" << endl;
  289. system("pause");
  290. system("cls");
  291. break;
  292. }
  293. else if (num == 6){
  294. system("cls");
  295. cout << "Estas en el banco, no en la consola" << endl;
  296. system("pause");
  297. system("cls");
  298. break;
  299. }
  300. else if (num == 7){
  301. system("cls");
  302. cout << "Para contactar con el soporte, envie un correo a xxx.xxx o llame al 672676276" << endl;
  303. system("pause");
  304. system("cls");
  305. break;
  306. }
  307. //respuesta 8 salimos de todo, cierre de programa
  308. else if (num == 8){
  309. system("cls");
  310. eexit = true;
  311. eexit1 = true;
  312. esalir = true;
  313. salir1 = true;
  314.  
  315. }
  316.  
  317. else if (num <0 && !meexit7 || num >8 && !meexit7){
  318. system("cls");
  319. cout << "VALOR ERRONEO!!, CERRARNDO EL SISTEMA POR SEGURIDAD" << endl;
  320. cout << "VALOR ERRONEO!!, CERRARNDO EL SISTEMA POR SEGURIDAD" << endl;
  321. cout << "VALOR ERRONEO!!, CERRARNDO EL SISTEMA POR SEGURIDAD" << endl;
  322. cout << "VALOR ERRONEO!!, CERRARNDO EL SISTEMA POR SEGURIDAD" << endl;
  323. cout << "VALOR ERRONEO!!, CERRARNDO EL SISTEMA POR SEGURIDAD" << endl;
  324. cout << "VALOR ERRONEO!!, CERRARNDO EL SISTEMA POR SEGURIDAD" << endl;
  325. system("pause");
  326. eexit1 = true;
  327. eexit = true;
  328. esalir = true;
  329. salir1 = true;
  330.  
  331.  
  332. }
  333.  
  334. }
  335. } while (!esalir);
  336. }
  337.  
  338. int menu1(void){
  339. //menu dentro de selección
  340. bool eexit = false;
  341. bool meexit = true;
  342. cout << "SELECCIONE UNA OPCION (Inserte el boton correspondiente);" << endl;
  343. cout << "Volver al menu principal ; 1" << endl;
  344. cout << "Salir del programa; 2" << endl;
  345.  
  346. int s;
  347. cin >> s;
  348. if (s == 1){
  349. //volvemos a invocar el menu saliendo de esta condicion
  350. system("cls");
  351. menu();
  352. }
  353. else if (s == 2){
  354. //salimos de todos los bucles internos y exteros (finalizando el programa)
  355. meexit = true;
  356. eexit = true;
  357. esalir = true;
  358. }
  359. else cout << "Por favor, inserte un valor valido;" << endl;
  360. return 1;
  361.  
  362. }
  363.  
  364. int _tmain(int argc, _TCHAR* argv[])
  365. {
  366. cout << "BIENVENIDO AL BANCO HELTHUNDER" << endl;
  367. bool exit = false;
  368. do{
  369. cout << "INGRESE SU NOMBRE DE USUARIO Y SU PASSWORD" << endl;
  370. //asignamos valores de nobmre y contraseña
  371. string nombre,contra, contraco = "a",nombreco = "h";
  372. cin >> nombre >> contra;
  373. system("cls");
  374. // si la contraseña y el nobmre coinciden con x palabra le damos aceso al menu
  375.  
  376. if (nombre == "helthunk" && contra == "1234"){
  377. system("cls");
  378. cout << "BIENVENIDO, EL BANCO HELTHUNDER LE DESEA UNA BUENA INSTANCIA" << endl;
  379. cout << "Qu\202 desea hacer?" << endl << endl;
  380. //invocamos la funcion del menu
  381. menu();
  382. }
  383. else {
  384. cout << "Ese nombre de usuario y/o password no existen, por favor, intentelo de nuevo" << endl;
  385. system("pause");
  386. }
  387. } while (!eexit);
  388.  
  389. return 0;
  390. }

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

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.

Graacias :D, comentarios como los tuyos ayudan a seguir con muchas ganas ^^

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
¿Entonces los pongo dentro de la función principal no?

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
Perfecto, ¿entonces ahora en vez de poner system("pause") pongo cin.get() no?, o tengo que añadir alguna biblioteca?

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
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.
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).
*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
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <ctype.h>
  4. int main()
  5. {
  6. int i = 0;
  7. char str[] = { "Prueba" };
  8. std::cout << str[i] << std::endl;
  9. while (str[i]){
  10. std::cout << (tolower(str[i]));
  11. i++;
  12. }
  13.  
  14. std::cin.get();
  15. return 0;
  16. }

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <ctype.h>
  4. int main()
  5. {
  6. int i = 0;
  7. char str[] = { "Prueba" };
  8. char c;
  9. std::cout << str[i] << std::endl;
  10. while (str[i]){
  11. c = str[i];
  12. std::cout << (tolower(str[i]));
  13. i++;
  14. }
  15.  
  16. std::cin.get();
  17. return 0;
  18. }
  19.  

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <ctype.h>
  4. int main()
  5. {
  6. int i = 0;
  7. char str[7] = { "Prueba" };
  8. std::cout << str[i] << std::endl;
  9. while (str[i]){
  10. std::cout << (tolower(str[i]));
  11. i++;
  12. }
  13.  
  14. std::cin.get();
  15. return 0;
  16. }
[He intentado más cosas pero es una tonteria ponerlo todo.. :S]

Esto funciona, pero no lo comprendo.. ;

Código
  1. /* toupper example */
  2. #include <stdio.h>
  3. #include <ctype.h>
  4. int main ()
  5. {
  6.  int i=0;
  7.  char str[]="Test String.\n";
  8.  char c;
  9.  while (str[i])
  10.  {
  11.    c=str[i];
  12.    putchar (toupper(c));
  13.    i++;
  14.  }
  15.  return 0;
  16. }


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
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. #include <cctype>
  6. using std::tolower;
  7.  
  8. int main()
  9. {
  10.   char str[] = "PRUEBA";
  11.  
  12.   std::cout << str << std::endl;
  13.   for (int i = 0; str[i]; i++)
  14.      std::cout << char(tolower(str[i]));
  15.   cout << endl;
  16.  
  17.   return 0;
  18. }

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
  1. #include<iostream>
  2. #include<cctype>
  3. using namespace std;
  4.  
  5.  
  6. int main(){
  7.  
  8.    string minuscula="soy pura minuscula xd";
  9.    string mayuscula="ESTOY TODA EN MAYUSCULA";
  10.  
  11.    string aMayuscula="";
  12.    string aMinuscula="";
  13.  
  14.    for(int i=0;i<minuscula.length();i++){
  15.  
  16.        //obtiene caracter por caracter aplica la funcion toupper en si equivalente int
  17.        //lo volvemos a convertir a ascii
  18.        aMayuscula=aMayuscula+char(toupper(minuscula[i]));//concatenamos
  19.    }
  20.    cout<<aMayuscula<<endl;//mostramos el resultado
  21.  
  22.  
  23.    for(int i=0;i<mayuscula.length();i++){
  24.  
  25.        aMinuscula=aMinuscula+char(tolower(aMayuscula[i]));//concatenamos
  26.    }
  27.    cout<<aMinuscula<<endl;//mostramos el resultado
  28.  
  29. cin.get();
  30. cin.get();
  31. return 0;
  32. }
  33.  


aparte te dejo este ejemplo de tabla ascii
que creo te vendra bien

Código
  1. #include<iostream>
  2. #include<cctype>
  3. using namespace std;
  4.  
  5.  
  6. int main(){
  7.  
  8.    //conversiones de valores en la tabla ascii
  9.    //la tabla ascii cuenta con 255 caracteres
  10.  
  11.   int num=int('a');//convertimos caracter a su equivalente numerico
  12.   cout<<"soy el numero "<<num<<" en la tabla ascii"<<endl;
  13.  
  14.   char caracter=char(65);//convertimos un numero a su equivalente caracter
  15.  
  16.   cout<<"soy el caracer "<<caracter<<" en la tabla ascii "<<endl;
  17.   cout<<endl;
  18.  
  19.  
  20.   //imprimimos toda la tabla ascii
  21.   for(int i=65;i<=122;i++){
  22.  
  23.        cout<<char(i)<<" ";
  24.   }
  25.  
  26.   cout<<endl;
  27.   cout<<endl;
  28.   for(char j='A';j<='z';j++){
  29.    cout<<int(j)<<" ";
  30.   }
  31.  
  32.  
  33.  
  34. cin.get();
  35. cin.get();
  36. return 0;
  37. }

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)