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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con codigo de banco
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con codigo de banco  (Leído 7,503 veces)
MrAxelLag

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con codigo de banco
« Respuesta #20 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");

}


En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Ayuda con codigo de banco
« Respuesta #21 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.  



En línea

MrAxelLag

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con codigo de banco
« Respuesta #22 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);
        }

    }
}
En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Ayuda con codigo de banco
« Respuesta #23 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.  
En línea

MrAxelLag

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Ayuda con codigo de banco
« Respuesta #24 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);
                }
            }
    }
}
En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Ayuda con codigo de banco
« Respuesta #25 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.  
En línea

Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
banco de imagenes
Diseño Gráfico
SAM N 2 2,105 Último mensaje 13 Marzo 2006, 01:40 am
por SAM N
ayuda con sistema banco
Java
batmanchillan 9 5,374 Último mensaje 16 Noviembre 2012, 00:26 am
por HalconEye
Ayuda con programa Banco y Cuentas
Java
pepeneitor33 1 8,039 Último mensaje 16 Abril 2013, 01:01 am
por javituni
Ayuda banco del tiempo
Desarrollo Web
txus93 0 1,555 Último mensaje 21 Noviembre 2013, 00:58 am
por txus93
Programa d eun Banco AYUDA!
Java
SMHEBER 2 3,002 Último mensaje 2 Octubre 2017, 17:10 pm
por PalitroqueZ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines