Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MrAxelLag en 9 Mayo 2018, 02:10 am



Título: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 02:10 am
Hola, tengo este codigo el cual solicita cuentas de banco con numero de usuario, nombre, fecha y saldo y debe ingresar datos, poder buscarlos, verlos, modificarlos y ordenarlos, llevo hasta ingresar y ver, me podrian a yudar con la busqueda y la modificacion. Este es el codigo:

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include<stdlib.h>
  4. #define p printf
  5.  
  6. void mostrar(void);
  7.  
  8.  
  9. int main(void)
  10. {
  11.    int op,opc=0;
  12.    char nom[20],fecha[20],num[20],nom2[20],fecha2[20],num2[20],nom3[20],fecha3[20],num3[20],nom4[20],fecha4[20],num4[20],nom5[20],fecha5[20],num5[20],nom6[20],fecha6[20],num6[20],nom7[20],fecha7[20],num7[20],nom8[20],fecha8[20],num8[20],nom9[20],fecha9[20],num9[20],nom10[20],fecha10[20],num10[20];
  13.    float s1, s2, s3,s4, s5, s6, s7, s8, s9, s10;
  14.    do
  15.    {
  16.    p("1.Agregar saldos\n");
  17.    p("2.-Ver saldos\n");
  18.    p("3.-Buscar Saldos\n");
  19.    p("4.-Modificar saldos\n");
  20.    p("5.-Salir\n");
  21.    p("Que opcion desea ejecutar?\n ");
  22.    scanf("%d",&op);
  23.  
  24.    switch(op)
  25.  
  26.    {
  27.    case 1:
  28.        p("Digite su nombre: ");
  29.        fflush(stdin);
  30.        scanf("%s",&nom);
  31.        p("Digite su num. de cuenta: ");
  32.        fflush(stdin);
  33.        scanf("%s",&num);
  34.        p("Digite la fecha(dd-mm-aaaa)");
  35.        fflush(stdin);
  36.        scanf("%s",&fecha);
  37.        p("Digite el primer saldo:%c",36);
  38.        fflush(stdin);
  39.        scanf("%f",&s1);
  40.        p("Su primer saldo es de: %c%.2f\n",36,s1);
  41.        fflush(stdin);
  42.        p("Digite su nombre: ");
  43.        fflush(stdin);
  44.        scanf("%s",&nom2);
  45.        p("Digite su num. de cuenta: ");
  46.        fflush(stdin);
  47.        scanf("%s",&num2);
  48.        p("Digite la fecha(dd-mm-aaaa)");
  49.        fflush(stdin);
  50.        scanf("%s",&fecha2);
  51.        fflush(stdin);
  52.        p("Digite el segundo saldo:%c",36);
  53.        fflush(stdin);
  54.        scanf("%f",&s2);
  55.        fflush(stdin);
  56.        p("Su segundo saldo es de: %c%.2f\n",36,s2);
  57.        p("Digite su nombre: ");
  58.        fflush(stdin);
  59.        scanf("%s",&nom3);
  60.        fflush(stdin);
  61.        p("Digite su num. de cuenta: ");
  62.        fflush(stdin);
  63.        scanf("%s",&num3);
  64.        fflush(stdin);
  65.        p("Digite la fecha(dd-mm-aaaa)");
  66.        fflush(stdin);
  67.        scanf("%s",&fecha3);
  68.        fflush(stdin);
  69.        p("Digite el tercer saldo:%c",36);
  70.        fflush(stdin);
  71.        scanf("%f",&s3);
  72.        fflush(stdin);
  73.        p("Su tercer saldo es de: %c%.2f\n",36,s3);
  74.        p("Digite su nombre: ");
  75.        fflush(stdin);
  76.        scanf("%s",&nom4);
  77.        fflush(stdin);
  78.        p("Digite su num. de cuenta: ");
  79.        fflush(stdin);
  80.        scanf("%s",&num4);
  81.        fflush(stdin);
  82.        p("Digite la fecha(dd-mm-aaaa)");
  83.        fflush(stdin);
  84.        scanf("%s",&fecha4);
  85.        fflush(stdin);
  86.        p("Digite el cuarto saldo:%c",36);
  87.        fflush(stdin);
  88.        scanf("%f",&s4);
  89.        fflush(stdin);
  90.        p("Su cuarto saldo es de: %c%.2f\n",36,s4);
  91.        p("Digite su nombre: ");
  92.        fflush(stdin);
  93.        scanf("%s",&nom5);
  94.        fflush(stdin);
  95.        p("Digite su num. de cuenta: ");
  96.        fflush(stdin);
  97.        scanf("%s",&num5);
  98.        fflush(stdin);
  99.        p("Digite la fecha(dd-mm-aaaa)");
  100.        fflush(stdin);
  101.        scanf("%s",&fecha5);
  102.        fflush(stdin);
  103.        p("Digite el quinto saldo:%c",36);
  104.        fflush(stdin);
  105.        scanf("%f",&s5);
  106.        fflush(stdin);
  107.        p("su quinto saldo es de: %c%.2f\n",36,s5);
  108.        p("Digite su nombre: ");
  109.        fflush(stdin);
  110.        scanf("%s",&nom6);
  111.        fflush(stdin);
  112.        p("Digite su num. de cuenta: ");
  113.        fflush(stdin);
  114.        scanf("%s",&num6);
  115.        fflush(stdin);
  116.        p("Digite la fecha(dd-mm-aaaa)");
  117.        fflush(stdin);
  118.        scanf("%s",&fecha6);
  119.        fflush(stdin);
  120.        p("Digite el sexto saldo:%c",36);
  121.        fflush(stdin);
  122.        scanf("%f",&s6);
  123.        fflush(stdin);
  124.        p("Su sexto saldo es de: %c%.2f\n",36,s6);
  125.        p("Digite su nombre: ");
  126.        fflush(stdin);
  127.        scanf("%s",&nom7);
  128.        fflush(stdin);
  129.        p("Digite su num. de cuenta: ");
  130.        fflush(stdin);
  131.        scanf("%s",&num7);
  132.        fflush(stdin);
  133.        p("Digite la fecha(dd-mm-aaaa)");
  134.        fflush(stdin);
  135.        scanf("%s",&fecha7);
  136.        fflush(stdin);
  137.        p("Digite el septimo saldo:%c",36);
  138.        fflush(stdin);
  139.        scanf("%f",&s7);
  140.        fflush(stdin);
  141.        p("Su septimo saldo es de: %c%.2f\n",36,s7);
  142.        p("Digite su nombre: ");
  143.        fflush(stdin);
  144.        scanf("%s",&nom8);
  145.        fflush(stdin);
  146.        p("Digite su num. de cuenta: ");
  147.        fflush(stdin);
  148.        scanf("%s",&num8);
  149.        fflush(stdin);
  150.        p("Digite la fecha(dd-mm-aaaa)");
  151.        fflush(stdin);
  152.        scanf("%s",&fecha8);
  153.        fflush(stdin);
  154.        p("Digite el octavo saldo:%c",36);
  155.        fflush(stdin);
  156.        scanf("%f",&s8);
  157.        fflush(stdin);
  158.        p("Su octavo saldo es de: %c%.2f\n",36,s8);
  159.        p("Digite su nombre: ");
  160.        fflush(stdin);
  161.        scanf("%s",&nom9);
  162.        fflush(stdin);
  163.        p("Digite su num. de cuenta: ");
  164.        fflush(stdin);
  165.        scanf("%s",&num9);
  166.        fflush(stdin);
  167.        p("Digite la fecha(dd-mm-aaaa)");
  168.        fflush(stdin);
  169.        scanf("%s",&fecha9);
  170.        fflush(stdin);
  171.        p("Digite el noveno saldo:%c",36);
  172.        fflush(stdin);
  173.        scanf("%f",&s9);
  174.        fflush(stdin);
  175.        p("Su noveno saldo es de: %c%.2f\n",36,s9);
  176.        p("Digite su nombre: ");
  177.        fflush(stdin);
  178.        scanf("%s",&nom10);
  179.        fflush(stdin);
  180.        p("Digite su num. de cuenta: ");
  181.        fflush(stdin);
  182.        scanf("%s",&num10);
  183.        fflush(stdin);
  184.        p("Digite la fecha(dd-mm-aaaa)");
  185.        fflush(stdin);
  186.        scanf("%s",&fecha10);
  187.        fflush(stdin);
  188.        p("Digite el decimo saldo:%c",36);
  189.        fflush(stdin);
  190.        scanf("%f",&s10);
  191.        fflush(stdin);
  192.        p("Su decimo saldo es de: %c%.2f\n",36,s10);
  193.        system("cls");
  194.        p("Presione 1 para avanzar");
  195.        scanf("%d",&opc);
  196.    case 2:
  197.        p("Ha elegido ver los saldos...\n");
  198.        p("Nombre: %s \n",nom);
  199.        p("Numero de cuenta %s \n:",num);
  200.        p("Su saldo es de: %c%.2f\n",36,s1);
  201.        p("Nombre: %s \n",nom2);
  202.        p("Numero de cuenta %s \n:",num2);
  203.        p("Su saldo es de: %c%.2f\n",36,s2);
  204.        p("Nombre: %s \n",nom3);
  205.        p("Numero de cuenta %s \n:",num3);
  206.        p("Su saldo es de: %c%.2f\n",36,s3);
  207.        p("Nombre: %s \n",nom4);
  208.        p("Numero de cuenta %s \n:",num4);
  209.        p("Su saldo es de: %c%.2f\n",36,s4);
  210.        p("Nombre: %s \n",nom5);
  211.        p("Numero de cuenta %s \n:",num5);
  212.        p("Su saldo es de: %c%.2f\n",36,s5);
  213.        p("Nombre: %s \n",nom6);
  214.        p("Numero de cuenta %s \n:",num6);
  215.        p("Su saldo es de: %c%.2f\n",36,s6);
  216.        p("Nombre: %s \n",nom7);
  217.        p("Numero de cuenta %s \n:",num7);
  218.        p("Su saldo es de: %c%.2f\n",36,s7);
  219.        p("Nombre: %s \n",nom8);
  220.        p("Numero de cuenta %s \n:",num8);
  221.        p("Su saldo es de: %c%.2f\n",36,s8);
  222.        p("Nombre: %s \n",nom9);
  223.        p("Numero de cuenta %s \n:",num9);
  224.        p("Su saldo es de: %c%.2f\n",36,s9);
  225.        p("Nombre: %s \n",nom10);
  226.        p("Numero de cuenta %s \n:",num10);
  227.        p("Su saldo es de: %c%.2f\n",36,s10);
  228.        p("Presiona 1 para continuar...\n");
  229.        scanf("%d",&opc);
  230.    case 3:
  231.        p("Ha elegido Modificar saldos...\n");
  232.        p("Digite el numero de cuenta sobre el cual desea modificar los datos")
  233.        }
  234.    }
  235. while(opc==1);
  236. }
  237.  

MOD: El codigo debe ir entre etiquetas GeSHi. No duplicar posts.


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 03:44 am
primero tenemos que arreglar el código trata de explicarme que es lo que intentas hacer con lo que ya tienes echo


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 03:53 am
Bien, Abre un menu con las Opciones de
1.- Ingresar datos
2.- Ver datos
3.- Modificar Datos
4.- Buscar datos
5.- Ordenar datos

El ingreso de datos ya esta listo, y para verlos tambien pero cuando termino de ingresar los datos me abre la opcion de verlos automaticamente sin abrir el menú


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 04:07 am
en cada caso te falto poner al final los break,
el caso es que hay que mejorar el código ya que de la forma en que esta implementado es fácil equivocarse


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 04:30 am
Si, estoy modificandolo, he avanzado esto, como ves el codigo?

#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#define p printf

void mostrar(void);


int main(void)
{
    int op,opc;
    char nom[20],des[20],fecha[20],num[20],nom2[20],fecha2[20],num2[20],nom3[20],fecha3[20],num3[20],nom4[20],fecha4[20],num4[20],nom5[20],fecha5[20],num5[20],nom6[20],fecha6[20],num6[20],nom7[20],fecha7[20],num7[20],nom8[20],fecha8[20],num8[20],nom9[20],fecha9[20],num9[20],nom10[20],fecha10[20],num10[20];
    float s1, s2, s3,s4, s5, s6, s7, s8, s9, s10;
    do
    {
    system("cls");
    p("1.Agregar saldos\n");
    p("2.-Ver saldos\n");
    p("3.-Buscar Saldos\n");
    p("4.-Modificar saldos\n");
    p("5.-Salir\n");
    p("Que opcion desea ejecutar?\n ");
    scanf("%d",&op);

    switch(op)

    {
        case 1:
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha);
            p("Digite el primer saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s1);
            p("Su primer saldo es de: %c%.2f\n",36,s1);
            fflush(stdin);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom2);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num2);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha2);
            fflush(stdin);
            p("Digite el segundo saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s2);
            fflush(stdin);
            p("Su segundo saldo es de: %c%.2f\n",36,s2);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom3);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num3);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha3);
            fflush(stdin);
            p("Digite el tercer saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s3);
            fflush(stdin);
            p("Su tercer saldo es de: %c%.2f\n",36,s3);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom4);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num4);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha4);
            fflush(stdin);
            p("Digite el cuarto saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s4);
            fflush(stdin);
            p("Su cuarto saldo es de: %c%.2f\n",36,s4);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom5);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num5);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha5);
            fflush(stdin);
            p("Digite el quinto saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s5);
            fflush(stdin);
            p("su quinto saldo es de: %c%.2f\n",36,s5);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom6);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num6);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha6);
            fflush(stdin);
            p("Digite el sexto saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s6);
            fflush(stdin);
            p("Su sexto saldo es de: %c%.2f\n",36,s6);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom7);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num7);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha7);
            fflush(stdin);
            p("Digite el septimo saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s7);
            fflush(stdin);
            p("Su septimo saldo es de: %c%.2f\n",36,s7);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom8);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num8);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha8);
            fflush(stdin);
            p("Digite el octavo saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s8);
            fflush(stdin);
            p("Su octavo saldo es de: %c%.2f\n",36,s8);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom9);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num9);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha9);
            fflush(stdin);
            p("Digite el noveno saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s9);
            fflush(stdin);
            p("Su noveno saldo es de: %c%.2f\n",36,s9);
            p("Digite su nombre: ");
            fflush(stdin);
            scanf("%s",&nom10);
            fflush(stdin);
            p("Digite su num. de cuenta: ");
            fflush(stdin);
            scanf("%s",&num10);
            fflush(stdin);
            p("Digite la fecha(dd-mm-aaaa)");
            fflush(stdin);
            scanf("%s",&fecha10);
            fflush(stdin);
            p("Digite el decimo saldo:%c",36);
            fflush(stdin);
            scanf("%f",&s10);
            fflush(stdin);
            p("Su decimo saldo es de: %c%.2f\n",36,s10);
            break;
        case 2:
            p("Ha elegido ver los saldos...\n");
            p("Nombre: %s \n",nom);
            p("Numero de cuenta:%s\n",num);
            p("La fecha es: %s\n",fecha);
            p("Su saldo es de: %c%.2f\n",36,s1);
            p("Nombre: %s \n",nom2);
            p("Numero de cuenta:%s\n",num2);
            p("La fecha es:%s\n",fecha2);
            p("Su saldo es de: %c%.2f\n",36,s2);
            p("Nombre: %s \n",nom3);
            p("Numero de cuenta:%s\n",num3);
            p("La fecha es:%s\n",fecha3);
            p("Su saldo es de: %c%.2f\n",36,s3);
            p("Nombre: %s \n",nom4);
            p("Numero de cuenta:%s\n",num4);
            p("La fecha es:%s\n",fecha4);
            p("Su saldo es de: %c%.2f\n",36,s4);
            p("Nombre: %s \n",nom5);
            p("Numero de cuenta: %s\n",num5);
            p("La fecha es:%s\n",fecha5);
            p("Su saldo es de: %c%.2f\n",36,s5);
            p("Nombre: %s \n",nom6);
            p("Numero de cuenta:%s\n",num6);
            p("Su saldo es de: %c%.2f\n",36,s6);
            p("La fecha es:%s\n",fecha6);
            p("Nombre: %s \n",nom7);
            p("Numero de cuenta:%s\n",num7);
            p("La fecha es:%s\n",fecha7);
            p("Su saldo es de: %c%.2f\n",36,s7);
            p("Nombre: %s \n",nom8);
            p("Numero de cuenta:%s\n",num8);
            p("La fecha es:%s\n",fecha8);
            p("Su saldo es de: %c%.2f\n",36,s8);
            p("Nombre: %s \n",nom9);
            p("Numero de cuenta:%s\n",num9);
            p("La fecha es:%s\n",fecha9);
            p("Su saldo es de: %c%.2f\n",36,s9);
            p("Nombre: %s \n",nom10);
            p("Numero de cuenta:%s\n",num10);
            p("La fecha es:%s\n",fecha10);
            p("Su saldo es de: %c%.2f\n",36,s10);
            system("cls");
            break;
        case 3:
            p("Ha elegido Modificar saldos...\n");
            p("Digite el numero de cuenta sobre el cual desea modificar los datos:");
            scanf("%d",&des);
            if (des == num)
                p("\n");
                p("Digite su nombre: ");
                fflush(stdin);
                scanf("%s",&nom);
                p("Digite su num. de cuenta: ");
                fflush(stdin);
                scanf("%s",&num);
                p("Digite la fecha(dd-mm-aaaa)");
                fflush(stdin);
                scanf("%s",&fecha);
                p("Digite el primer saldo:%c",36);
                fflush(stdin);
                scanf("%f",&s1);
                p("Su primer saldo es de: %c%.2f\n",36,s1);
                fflush(stdin);
            }
            p("Presione 1 para avanzar:\n");
            fflush(stdin);
            scanf("%d",&opc);
        }
    while(opc==1);
}



Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 04:44 am
En la creacion de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serian muy dificil de describir en los tipos de datos primitivos, esta es la situacion en la que debemos aprovecharnos de las caracteristicas que hacen al lenguaje C especial, o sea el uso de estructuras y punteros.

Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct. Aqui hay ejemplo de la declaracion de una estructura:

Código
  1. struct mystruct{
  2.      int int_member;
  3.      double double_member;
  4.      char string_member[25];
  5. } variable;
  6.  

esto es algo que podemos utilizar para mejorar el codigo

Código
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3.  
  4. #define p printf
  5. #define cls system("cls");
  6.  
  7. const int max = 3;
  8.  
  9. typedef struct{
  10. char nombre[20];
  11. char fecha[20];
  12. char numero[20];
  13. float saldo;
  14. }_persona;
  15.  
  16. void agregar(_persona* personas);
  17. void mostrar(const _persona* personas);
  18.  
  19.  
  20. int main(int argc, char* argv[]){
  21. int op, opc=0;
  22. _persona personas[max];
  23. do{
  24. cls;
  25. p("1.Agregar saldos\n");
  26. p("2.-Ver saldos\n");
  27. p("3.-Buscar Saldos\n");
  28. p("4.-Modificar saldos\n");
  29. p("5.-Salir\n");
  30. p("Que opcion desea ejecutar?\n ");
  31. scanf("%d",&op);
  32.  
  33. switch(op){
  34. case 1:
  35. agregar(personas);
  36. break;
  37. case 2:
  38. mostrar(personas);
  39. break;
  40. case 3:
  41. p("Ha elegido Modificar saldos...\n");
  42. p("Digite el numero de cuenta sobre el cual desea modificar los datos");
  43. break;
  44. }
  45. }while(opc != 5);
  46. }
  47.  
  48. void agregar(_persona* personas){
  49. cls;
  50. int i;
  51. for(i=0; i<max; i++){
  52. p("Digite su nombre: ");
  53. fflush(stdin);
  54. scanf("%s", personas[i].nombre);
  55. p("Digite su num. de cuenta: ");
  56. fflush(stdin);
  57. scanf("%s", personas[i].numero);
  58. p("Digite la fecha(dd-mm-aaaa)");
  59. fflush(stdin);
  60. scanf("%s", personas[i].fecha);
  61. p("Digite el primer saldo:%c",36);
  62. fflush(stdin);
  63. scanf("%f",&personas[i].saldo);
  64. p("Su primer saldo es de: %c%.2f\n",36,personas[i].saldo);
  65. }
  66. }
  67.  
  68. void mostrar(const _persona* personas){
  69. cls;
  70. int i;
  71. p("Ha elegido ver los saldos...\n");
  72. for(i=0; i<max; i++){
  73. p("Nombre: %s \n",personas[i].nombre);
  74. p("Numero de cuenta %s \n:",personas[i].numero);
  75. p("Su saldo es de: %c%.2f\n",36,personas[i].saldo);
  76. }
  77. }
  78.  
  79.  

explicacion del codigo:

en la linea 7 defino una constante que determinara la longitud de mi array
Código
  1. const int max = 3;

de la linea 9 a la 14 definimos la estructura de datos que utilizaremos como un nuevo tipo de variable
Código
  1. typedef struct{
  2. char nombre[20];
  3. char fecha[20];
  4. char numero[20];
  5. float saldo;
  6. }_persona;
  7.  

en la linea 22 usamos nuestra nueva variable y la hacemos un array
Código
  1. _persona personas[max];// variable de tipo _persona
  2.  

en las funciones agregar y mostrar es algo que ya sabes como se hace creo...


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 05:00 am
Estoy conciente del uso de punteros y estructuras pero siempre suelo tener muchos errores con ellos, por ejemplo a la hora de modificar las cuentas como podria continuar el codigo, y otra cosa que note es que al ejecutar el programa y dar a la opcion 2, me manda el menu nuevamente. Por que es esto?


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 05:08 am
eso es porque en el caso 2 lo único que hace es imprimir la información almacenada y cuando acaba de imprimirla en pantalla vuelve al menú


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 05:12 am
Si, lo note, le agregue un getch(); para que hiciera una pausa, ahora bien, al modificar los datos como puedo reanudar con el codigo para que me elija uno de los 3?


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 05:17 am
El criterio para modificar es que introduzca un numero de cuenta, y el que coincida debe modificar todo


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 05:24 am
tal y como tienes ahora mismo el código tendrías que hacer otro switch dentro del caso 3
tomando el numero de cuenta ingresado por el usuario y para cada caso todos los números de cuenta almacenados pero si lo haces con estructuras y arrays solo tienes que recorrer el array en comparando el dato miembro del dato a buscar


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 05:36 am
No te entiendo a lo que dices de recorrer el array, como podria realizar esto?


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 05:49 am
si tienes el código echo con una estruct y un arrar
Código
  1. typedef struct{
  2. char nombre[20];
  3. char fecha[20];
  4. char numero[20];
  5. float saldo;
  6. }_persona;
  7.  
  8. _persona personas[max];
  9.  

puedes recorrer el array personas con un ciclo for
Código
  1. for(i=0; i<max; i++){
  2. if(personas[i].numero == buscar){
  3. /*mostrar los datos de la persona*/
  4. }
  5. }
  6.  


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 06:09 am
ok intente agregarle la funcion buscar de la manera en que me indicase pero no me imprime los datos. Sabes donde esta mi error?

#include <stdio.h>
#include<stdlib.h>
#include<conio.h>

#define p printf
#define cls system("cls");

const int max = 10;

typedef struct{
   char nombre[20];
   char fecha[20];
   char numero[20];
   float saldo;
}_persona;

void buscar(_persona personas[max]);
void agregar(_persona* personas);
void mostrar(const _persona* personas);


int main(int argc, char* argv[]){
   int op, opc=0;
   _persona personas[max];
   do{
        cls;
      p("1.Agregar saldos\n");
      p("2.-Ver saldos\n");
      p("3.-Modificar saldos\n");
      p("4.-Buscar saldos\n");
      p("5.-Salir\n");
      p("Que opcion desea ejecutar?\n ");
      scanf("%d",&op);

      switch(op){
         case 1:
             cls;
            agregar(personas);
         break;
         case 2:
            mostrar(personas);
            getch();
         break;
         case 3:
            p("Ha elegido Modificar saldos...\n");
            buscar(personas);
         break;
      }
   }while(opc != 5);
}

void agregar(_persona* personas){
   cls;
   int i;
   for(i=0; i<max; i++){
      p("Digite su nombre: ");
      fflush(stdin);
      scanf("%s", personas.nombre);
      p("Digite su num. de cuenta: ");
      fflush(stdin);
      scanf("%s", personas.numero);
      p("Digite la fecha(dd-mm-aaaa)");
      fflush(stdin);
      scanf("%s", personas.fecha);
      p("Digite el primer saldo:%c",36);
      fflush(stdin);
      scanf("%f",&personas.saldo);
      p("Su primer saldo es de: %c%.2f\n",36,personas.saldo);
   }
}

void mostrar(const _persona* personas){
    cls;
   int i;
   p("Ha elegido ver los saldos...\n");
   for(i=0; i<max; i++){
      p("Nombre: %s \n",personas.nombre);
      p("Numero de cuenta %s \n:",personas.numero);
      p("La fecha es %s \n:",personas.fecha);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
   }
}


void buscar(_persona* personas){
    cls;
    int y,i;
    p("Introduzca numero de cuenta:");
    scanf("%d",&y);
    for(i=0; i<max; i++){
   if(personas.numero == y){
        p("Nombre: %s \n",personas.nombre);
      p("Numero de cuenta %s \n:",personas.numero);
      p("La fecha es %s \n:",personas.fecha);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
        }
    }
}


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 06:16 am
El número de cuenta en el struc esta declarado como un char* (string) y en la función buscar lo capturas como un int ya sea que lo cambies en el estruct como un int o en la función como un char* y lo compares con la función strcmp () de la biblioteca string.h


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 06:32 am
jamas habia usado la funcion de strcmp, ya que apenas estamos en lo basico, lo implemente de esta forma pero el program deja de funcionar, no estoy seguro si de lo implemente bien, tu que opinas?



void buscar(_persona* personas){
    cls;
    int i,c;
    char y[20];
    p("Introduzca numero de cuenta:");
    scanf("%d",&y);
    c = strcmp( y, personas.numero);
    if (c = 0)
        for(i=0; i<max; i++){
        if(personas.numero == y){
            p("Nombre: %s \n",personas.nombre);
            p("Numero de cuenta %s \n:",personas.numero);
            p("La fecha es %s \n:",personas.fecha);
            p("Su saldo es de: %c%.2f\n",36,personas.saldo);
        }
    if (c != 0)
        p("El numero de cuenta no se encuentra");
    }
}


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 06:49 am
la funcion int strcmp(const char *str1, const char *str2) recibe dos parámetros si el valor de Retorno <0 indica que str1 es menor que str2. si Valor de retorno> 0 indica que str2 es menor que str1. si el valor de Retorno = 0 indica que str1 es igual a str2.

ademas de que cuando capturas el string lo haces mal
Código
  1. p("Introduzca numero de cuenta:");
  2.    scanf("%d",&y);
  3.  
cuando deberia de ser
Código
  1. p("Introduzca numero de cuenta:");
  2.    scanf("%s", y);
  3.  

pero si nunca has usado esta función mejor te recomiendo que cambies el tipo de variable a int en el struc de esa forma te sera mas fácil


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 06:56 am
Es que igual con el %s me sigue cerrando el programa. y cambiando el tipo de variable en el struct, como quedaria el codigo en la funcion de buscar?


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 07:09 am
si en el struct
Código
  1. typedef struct{
  2.   char nombre[20];
  3.   char fecha[20];
  4.   int numero[20]; //lo cambiamos a int
  5.   float saldo;
  6. }_persona;
  7.  

entonces para buscarlo seria tan fácil como
Código
  1. for(i=0; i<max; i++){
  2. if(personas[i].numero == buscar){
  3. /*mostrar los datos de la persona*/
  4.                break; //esto es para que pare de buscar
  5. }
  6. }
  7.  

pero ten en cuenta que al cambiar el tipo de variable las funciones
Código
  1. void agregar(_persona* personas);
  2. void mostrar(const _persona* personas);
  3.  

se verán afectadas


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 07:21 am
Vale, pero pese a ya corregir las funciones me sigue sin imprimir los datos al buscar, por que no sale ?, que estoy haciendo mal?


#include <stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

#define p printf
#define cls system("cls");

const int max = 10;

typedef struct{
   char nombre[20];
   char fecha[20];
   int numero[20];
   float saldo;
}_persona;

void buscar(_persona* personas);
void agregar(_persona* personas);
void mostrar(const _persona* personas);


int main(int argc, char* argv[]){
   int op, opc=0;
   _persona personas[max];
   do{
        cls;
      p("1.Agregar saldos\n");
      p("2.-Ver saldos\n");
      p("3.-Modificar saldos\n");
      p("4.-Buscar saldos\n");
      p("5.-Salir\n");
      p("Que opcion desea ejecutar?\n ");
      scanf("%d",&op);

      switch(op){
         case 1:
             cls;
            agregar(personas);
         break;
         case 2:
            mostrar(personas);
            getch();
         break;
         case 3:
             getch();
            p("Ha elegido Modificar saldos...\n");
            getch();
            buscar(personas);
            getch();
         break;
      }
   }while(opc != 5);
}

void agregar(_persona* personas){
   cls;
   int i;
   for(i=0; i<max; i++){
      p("Digite su nombre: ");
      fflush(stdin);
      scanf("%s", personas.nombre);
      p("Digite su num. de cuenta: ");
      fflush(stdin);
      scanf("%d", personas.numero);
      p("Digite la fecha(dd-mm-aaaa)");
      fflush(stdin);
      scanf("%s", personas.fecha);
      p("Digite el primer saldo:%c",36);
      fflush(stdin);
      scanf("%f",&personas.saldo);
      p("Su primer saldo es de: %c%.2f\n",36,personas.saldo);
   }
}

void mostrar(const _persona* personas){
    cls;
   int i;
   p("Ha elegido ver los saldos...\n");
   for(i=0; i<max; i++){
      p("Nombre: %s \n",personas.nombre);
      p("Numero de cuenta %d \n:",personas.numero);
      p("La fecha es %s \n:",personas.fecha);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
   }
}


void buscar(_persona* personas){
    cls;
    int i,c,bus;
    p("Introduzca numero de cuenta:");
    scanf("%s",&bus);
    for(i=0; i<max; i++){
   if(personas.numero == bus){
        p("Nombre: %s \n",personas.nombre);
      p("Numero de cuenta %d \n:",personas.numero);
      p("La fecha es %s \n:",personas.fecha);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
      break;
        }
    }
}


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 9 Mayo 2018, 11:19 am
Consegui avanzar demasiado, ahora este es el problema, al borrar datos y volverlos a mostrar me imprime basura, y no se como arreglar eso, mira...


#include <stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define p printf
#define cls system("cls");

const int max = 2;

typedef struct{
   char nombre[20];
   char fecha[20];
   char numero[20];
   float saldo;
}_persona;

void buscar(_persona* personas);
void agregar(_persona* personas);
void mostrar(const _persona* personas);
void modificar(_persona* personas);
void borrar(_persona* personas);

int main(int argc, char* argv[]){
   int op, opc=0,band,max=2,j=0;

   _persona personas[max];
   do{
        cls;
      p("1.Agregar saldos\n");
      p("2.-Ver saldos\n");
      p("3.-Buscar saldos\n");
      p("4.-Modificar saldos\n");
      p("5.-Borrar\n\n");
      p("Que opcion desea ejecutar?\n ");
      scanf("%d",&op);

      switch(op){
         case 1:
             cls;
            agregar(personas);
         break;
         case 2:
            mostrar(personas);
            getch();
         break;
         case 3:
            p("Ha elegido Buscar saldos...\n");
            getch();
            buscar(personas);
            getch();
            break;
            case 4:
                p("Ha elegido Modificar saldos...\n");
                getch();
                modificar(personas);
                getch();
                break;
            case 5:
                p("Ha elegido Borrar Datos....\n");
                getch();
                borrar(personas);
                getch();
                break;
      }
   }while(opc != 6);
}

void agregar(_persona* personas){
   cls;
   int i,j;
   for(i=0; i<max; i++){
      p("Digite su nombre: ");
      fflush(stdin);
      scanf("%s", personas.nombre);
      p("Digite su num. de cuenta: ");
      scanf("%s", personas.numero);
      p("Digite la fecha(dd-mm-aaaa)");
      fflush(stdin);
      scanf("%s", personas.fecha);
      p("Digite el saldo:%c",36);
      fflush(stdin);
      scanf("%f",&personas.saldo);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
   }
}

void mostrar(const _persona* personas){
    cls;
   int i,h,j;
   p("Ha elegido ver los saldos...\n");
   for(i=0; i<max; i++){
        p("Nombre: %s \n",personas.nombre);
      p("Numero de cuenta:%s \n",personas.numero);
      p("La fecha es: %s\n",personas.fecha);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
        }
}


void buscar(_persona* personas){
    int band;

    int i,comp;
    char jaja[20];
    p("Introduzca numero de cuenta:");
    fflush(stdin);
    scanf("%s",&jaja);
    band=0;
    for(i=0; i<max; i++){
    if(strcmp(personas.numero,jaja)==0){
        p("Nombre: %s \n",personas.nombre);
      p("Numero de cuenta %s \n:",personas.numero);
      p("La fecha es %s \n:",personas.fecha);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
      band=1;
   }


    }
        if(band!=1)
            p("\n No encontrado\n");
        else
            p("\n Encontrado \n");

}


void modificar(_persona* personas){
    int band;

    int i,comp;
    char jaja[20];
    p("Introduzca numero de cuenta:");
    fflush(stdin);
    scanf("%s",&jaja);
    band=0;
    for(i=0; i<max; i++){
    if(strcmp(personas.numero,jaja)==0){
        p("Nombre: %s \n",personas.nombre);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
      p("\nDatos Nuevos \n");
        p("Digite su nombre nuevo: ");
      fflush(stdin);
      scanf("%s", personas.nombre);
      p("Digite su nuevo num. de cuenta: ");
      scanf("%s", personas.numero);
      p("Digite la nueva fecha(dd-mm-aaaa)");
      fflush(stdin);
      scanf("%s", personas.fecha);
      p("Digite el nuevo saldo:%c",36);
      fflush(stdin);
      scanf("%f",&personas.saldo);
      p("Su saldo es de: %c%.2f\n",36,personas.saldo);
      band=1;
    }


    }
        if(band!=1)
            p("\n No se pudo modificar los datos\n");
        else
            p("\n Modificación Exitosa\n");

}

void borrar(_persona* personas){
    int band;

    int z, i,com,j;
    char jaja[20];
    p("Introduzca numero de cuenta a borrar:");
    fflush(stdin);
    scanf("%s",&jaja);
    band=0;
    for(i=0; i<max; i++){
    if(strcmp(personas.numero,jaja)==0){
        strcpy(personas.nombre,"");
        strcpy(personas.numero,"");
        strcpy(personas.fecha,"");
        personas.saldo=0;
      band=1;
      j=j+1;
      for(;i<max;i++){
      z=i+1;
      strcpy(personas.nombre,personas[z].nombre);
        strcpy(personas.numero,personas[z].numero);
        strcpy(personas.fecha,personas[z].fecha);
        personas.saldo=personas[z].saldo;}

   }


    }
        if(band!=1)
            p("\n Datos no eliminados\n");
        else
            p("\n Datos eliminados exitosamente\n");

}


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 9 Mayo 2018, 16:49 pm
lo de borrar datos es mas sencillo dado que estamos usando una constante que nos define el largo de nuestro array tendremos que poner un dato extra en nuestra estructura
Código
  1. typedef struct{
  2.   char nombre[20];
  3.   char fecha[20];
  4.   char numero[20];
  5.   float saldo;
  6.   int estado;//->nuevo dato miembro de nuestra estructura
  7. }_persona;
  8.  

este nuevo datos solo podrá contener dos valores 1 para vacio y 0 para en uso de este modo cuando estés borrando datos lo único que tienes que hacer es poner el la variable estado a 1 pero tendremos que modificar las demás funciones para que estas se integren con el nuevo dato

Código
  1. void buscar(_persona* personas);/*esta funcion solo buscara datos que tengan un estado de 0*/
  2. void agregar(_persona* personas);/*esta funcion agregara datos con que tengan un estado diferente(!=) a 0 */
  3. void mostrar(const _persona* personas);/*esta funcion unica mente mostrara datos que tengan un estado de 0*/
  4. void modificar(_persona* personas); /*esta funcion solo modifica datos que tengan un estado de 0*/
  5.  



Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 10 Mayo 2018, 03:34 am
Logre borrar los datos, lo ultimo que me queda por hacer es lograr que ordene por el metodo burbuja los numeros de cuenta pero no lo hace, sabes donde eta mi error?



void ordenar(_persona* personas){
    int z, i,aux,j,k;

    for(i=0;i<max;i++){
            if(personas.numero>personas[i+1].numero){
               strcpy(aux,personas.numero);
                strcpy(personas.numero,personas[i+1].numero);
                strcpy(personas[i+1].numero,aux);
        }

    }
}


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 10 Mayo 2018, 04:57 am
el método de la burbuja se compone de dos ciclos for

Código
  1. void burbuja(_persona* array){
  2. int i, j;
  3. _persona aux;
  4. for(i=1; i<max; i++){//comenzamos el iterador i desde el indice 1(pos 2)
  5. for(j=0; j<max-i; j++){//comenzamos el iterador j desde el indice 0(pos 1)
  6. if(array[j] > array[j+1]){/*si el que esta a la derecha del indice j es mayor hacemos el cambio*/
  7. aux = array[j+1];
  8. array[j+1] = array[j];
  9. array[j] = aux;
  10. }
  11. }
  12. }
  13. }
  14.  


Título: Re: Ayuda con codigo de banco
Publicado por: MrAxelLag en 10 Mayo 2018, 04:59 am
No encuentro como comparar la cadena para saber cual numero es mayor como hago eso?


void ordenar(_persona* personas){
    int z, i,j,k;
    char aux[20];
    for(i=0;i<=max;i++){
            for(j=0;j<=max;j++){
            if(personas[j].numero>personas[j+1].numero){
                strcpy(personas[j].numero,aux);
                strcpy(personas[j+1].numero,personas[j].numero);
                strcpy(aux,personas[j+1].numero);
                }
            }
    }
}


Título: Re: Ayuda con codigo de banco
Publicado por: Kenji-chan en 10 Mayo 2018, 05:20 am
Código
  1. void ordenar(_persona* personas){
  2.    int z, i,j,k;//-> las variavles z y k las declaras pero no las usas
  3.    char aux[20];//-> este auxiliar es para un estring y lo que queremos es intercambiar variavles de tipo _persona
  4.    for(i=0;i<=max;i++){//-> el <=max hace que nos salgamos del rango de memoria reservada para el array
  5.            for(j=0;j<=max;j++){//-> lomismo a qui
  6.            if(personas[j].numero>personas[j+1].numero){/*-> personas.[j].numero es una variable de tipo char* para comparar dos char* se usa la funcion int strcmp(const char *str1, const char *str2)*/
  7. /*en este trozo de codigo lo unico que haces es intercambiar la variable numero pero los demas datos se mantienen en la misma pocicion, tienes que intercambiar toda la estructura para que el ordenamiento sea correcto*/
  8.                strcpy(personas[j].numero,aux);
  9.                strcpy(personas[j+1].numero,personas[j].numero);
  10.                strcpy(aux,personas[j+1].numero);
  11.                }
  12.            }
  13.    }
  14. }
  15.