1) ingreso de datos
2) mostrar datos
3) buscar datos por nombre
4) mostrar los clientes con mejores salarios
El problema se da cuando, termino de ingresar los datos y pongo "Mostrar todos los datos" que es la función 2., el programa se rompe, ahora si elimino la función 4. todo funciona con normalidad, ¿que es lo que puede estar mal?.
Código:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#define N 5
/*
void ingresar(struct CLIENTES[], int); //terminado
void buscar_datos(struct CLIENTES[], int); //terminado
void mostrar_datos(struct CLIENTES[], int); //terminado con error!
void ordenamiento_alfabetico(clientes); // no terminado
void ordenamiento_sexo(clientes); //no terminado
void ordenamiento_saldo(struct CLIENTES[], int); terminado
void ordenamiento_hombres_mejor_saldo(clientes); //no terminado
void ordenamiento_mujeres_mejor_saldo(clientes); //no terminado
*/
struct CLIENTES {
char nombre[30];
char apellido[30];
char sexo;
int DNI;
int telefono;
float saldo;
int n_cuenta;
char direccion[30];
};
//PROTOTIPOS///////////////////////////
void ingresar(struct CLIENTES[], int);
void buscar_datos(struct CLIENTES[], int);
void mostrar_datos(struct CLIENTES[], int);
void ordenamiento_saldo(struct CLIENTES[], int);
//////////////////////////////////////////////////
int main() {
struct CLIENTES clientes[N];
int opcion;
while (opcion != 5)
{
printf("Ingrese una Opcion : ");
printf("\n\n");
printf("Opcion 1: Ingresar los datos de los clientes :\n");
printf("\n\n");
printf("Opcion 2: Mostrar todos los datos de todos los clientes :\n");
printf("\n\n");
printf("Opcion 3: Buscar datos de clientes por nombre :\n");
printf("\n\n");
printf("Opcion 4: Mostrar los datos de los clientes ordenados por saldo de mayor a menor :");
printf("\n\n");
printf("Opcion 5 : Salir!");
printf("\n\n");
scanf("%i", &opcion);
switch (opcion) {
case 1: ingresar(clientes,N); break;
case 2: mostrar_datos(clientes,N); break;
case 3: buscar_datos(clientes,N); break;
case 4: ordenamiento_saldo(clientes,N); break;
case 5: break;
default: printf("La opcion es incorrecta :"); break;
}
}
return 0;
}
void ingresar(struct CLIENTES client[],int NUM) {
int i;
for (i = 0; i<NUM; i++) {
printf("Ingrese su nombre :");
scanf("%s", &client[i].nombre);
printf("Ingrese su Apellido :");
scanf("%s", &client[i].apellido);
printf("Ingrese su sexo : M/F : ");
scanf("%s", &client[i].sexo);
printf("Ingrese el DNI :");
scanf("%i", &client[i].DNI);
printf("Ingrese su Telefono :");
scanf("%i", &client[i].telefono);
printf("Ingrese el saldo de su cuenta : ");
scanf("%f", &client[i].saldo);
printf("Ingrese su Numero de Cuenta :");
scanf("%i", &client[i].n_cuenta);
printf("Ingrese su direccion :");
scanf("%s", &client[i].direccion);
}
}
void mostrar_datos(struct CLIENTES dats[], int NUM) {
int j;
for (j = 0; j<NUM; j++) {
printf("Nombre : %s", dats[j].nombre);
printf("\n\n");
printf("Apellido :%s ", dats[j].apellido);
printf("\n\n");
printf("Sexo : %c", dats[j].sexo);
printf("\n\n");
printf("DNI :%i", dats[j].DNI);
printf("\n\n");
printf("Numero de Cuenta : %i", dats[j].n_cuenta);
printf("\n\n");
printf("Saldo : %f",dats[j].saldo);
printf("\n\n");
printf("Direccion : %s", dats[j].direccion);
printf("\n\n");
}
}
void buscar_datos(struct CLIENTES buscar[], int NUM) {
int k;
char nombre_a_buscar[30];
printf("Ingrese el nombre a buscar : ");
scanf("%s", &nombre_a_buscar);
for (k = 0; k<NUM; k++) {
if (strcmp(buscar[k].nombre, nombre_a_buscar) == 0) {
printf("Nombre : %s", buscar[k].nombre);
printf("\n");
printf("Apellido :%s ", buscar[k].apellido);
printf("\n");
printf("Sexo : %c",buscar[k].sexo );
printf("\n");
printf("DNI :%i", buscar[k].DNI);
printf("\n");
printf("Numero de Cuenta : %i", buscar[k].n_cuenta);
printf("\n");
printf("Saldo : %f",buscar[k].saldo);
printf("\n");
printf("Direccion : %s", buscar[k].direccion);
}
}
}
void ordenamiento_saldo(struct CLIENTES ordenamiento_client[],int NUM) {
struct CLIENTES AUX;
int i,j;
for(i=0;i<NUM;i++){
for(j=0;j<NUM-i-1;j++)
if(ordenamiento_client[j].saldo > ordenamiento_client[j+1].saldo){
AUX = ordenamiento_client[j];
ordenamiento_client[j] = ordenamiento_client[j+1];
ordenamiento_client[j+1] = AUX;
}
}
printf("Los Clientes con mejores salarios son : ");
printf("\n");
for(i=5;i<0;i--){
printf("Nombre : %s",ordenamiento_client[i].nombre);
printf("\n");
printf("Saldo : %f",ordenamiento_client[i].saldo);
printf("\n");
}
getch();
}