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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


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

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con la comparacion de estructuras en C
« en: 17 Diciembre 2016, 15:45 pm »

El subprograma no da error  al compilar, pero no funciona correctamente. Lo que ocure es que no se porque pero  al meter los DNI en la estructura, no da ningun problema; los guarda correctamente.
Pero para dar de baja a un socio mediante el DNI, no consigo hacer que funcione(subprograma BajaSocios) para borrar el DNI que la persona te indique.

El código es el siguiente:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <string.h>
  5.  
  6. #define MAX_Socios 100
  7. #define MAX_Cursos 10
  8. #define TRUE 1
  9. #define FALSE 0
  10.  
  11. //Declaración de estructuras
  12.  
  13. struct estructura_datos_socio
  14. {
  15.    char nombre[40];
  16.    char DNI[10];
  17.    int TipoSocio;
  18.  
  19. }datos_socio[MAX_Socios];
  20.  
  21. //Variables Globales
  22.  
  23. int opcion,opcion1,opcion2,opcion3;
  24.  
  25. int contador=1;
  26.  
  27.  
  28.  
  29. //Prototipos de subprogramas
  30. int Menu();
  31. int GestSocios();
  32. int GestCursos();
  33. int InformesEconomicos();
  34. void AltaSocios(struct estructura_datos_socio *datos_socio,int contador);
  35. void BajaSocios(struct estructura_datos_socio *datos_socio, int contador);
  36. void ModificacionSocios();
  37. void ConsultaSocios(struct estructura_datos_socio *datos_socio,int contador);
  38. void PagoMensual();
  39. void SociosNormales();
  40. void SociosJubilados();
  41. void SociosINfantiles();
  42. void GeneralSocios();
  43.  
  44.  
  45.  
  46.  
  47. int main()
  48. {
  49.    setlocale( LC_ALL, "Spanish" );
  50.    Menu();
  51.    return 0;
  52. }
  53.  
  54. //Subprograma Menú
  55. int Menu()
  56. {
  57.    do{
  58.        printf("\n\t\tMENÚ PRINCIPAL");
  59.        printf("\n\n1.- Gestión de Socios");
  60.        printf("\n2.- Gestión de Cursos");
  61.        printf("\n3.- Informes Económicos");
  62.        printf("\n0.- Salir");
  63.        printf("\nOpcion a escoger: ");
  64.        scanf("%d",&opcion);
  65.        fflush(stdin);
  66.  
  67.        switch (opcion)
  68. {
  69.    case 1: system("cls");
  70.            GestSocios();
  71.            break;
  72.  
  73.    case 2: system("cls");
  74.            GestCursos();
  75.            break;
  76.  
  77.    case 3: system("cls");
  78.            InformesEconomicos();
  79.            break;
  80.  
  81.    case 0: system("cls");
  82.            printf("\n\n\t\tGracias por utilizar la aplicación de \"GEST-GYM\"\n\n\t\t");
  83.            break;
  84.  
  85.    default:
  86.        printf("\nOpcion incorrecta, introduzca otra...\n\n");
  87.        printf("\nPulse <intro> para volver al menu\n\n");
  88.        fflush(stdin);
  89.        getchar();
  90.        system("cls");
  91. }
  92.    }while(opcion!=0);
  93.    return (opcion);
  94. }
  95. /**************************************************************************************************************
  96.  
  97.                                     Subprograma de gestión de socios
  98.  
  99. ***************************************************************************************************************/
  100.  
  101. /***********************************************************************************
  102. Subprograma: GestSocios        Tipo: void
  103. Prerrequesitos: Opción 1 para ejecutar el subprograma
  104. Objetivo: Presenta en la pantalla el submenú de gestión de socios
  105. ************************************************************************************/
  106. int GestSocios()
  107. {
  108.    do
  109.        {
  110.            printf("\tSUBMENÚ \"GESTION DE SOCIOS\"");
  111.            printf("\n\n1.- Alta");
  112.            printf("\n2.- Baja");
  113.            printf("\n3.- Modificación de datos de un socio");
  114.            printf("\n4.- Consulta de datos de un socio");
  115.            printf("\n5.- Pago Mensual");
  116.            printf("\n6.- Listado de Socios normales");
  117.            printf("\n7.- Listado de Socios jubilados");
  118.            printf("\n8.- Listado de Socios infantiles");
  119.            printf("\n9.- Listado General de Socios");
  120.            printf("\n0.- Volver al Menú Principal");
  121.            printf("\nOpcion a escoger: ");
  122.            scanf("%d",&opcion1);
  123.            fflush(stdin);
  124.  
  125.  
  126.    switch (opcion1)
  127. {
  128.  
  129.    case 1: system("cls");
  130.            AltaSocios(datos_socio,contador);
  131.            contador++;
  132.            system("cls");
  133.            break;
  134.  
  135.    case 2: system("cls");
  136.            BajaSocios(datos_socio, contador);
  137.            contador--;
  138.            system("cls");
  139.            break;
  140.  
  141.    case 3: system("cls");
  142.            ModificacionSocios();
  143.            system("cls");
  144.            break;
  145.  
  146.    case 4: system("cls");
  147.            ConsultaSocios(datos_socio,contador);
  148.            system("cls");
  149.            break;
  150.  
  151.    case 5: PagoMensual();
  152.            break;
  153.  
  154.    case 6: SociosNormales();
  155.            break;
  156.  
  157.    case 7: SociosJubilados();
  158.            break;
  159.  
  160.    case 8: SociosInfantiles();
  161.            break;
  162.  
  163.    case 9: GeneralSocios();
  164.            break;
  165.  
  166.    case 0: ;
  167.            break;
  168.  
  169.    default:
  170.        printf("\nOpcion incorrecta, introduzca otra...\n\n");
  171.        printf("\nPulse <intro> para volver al menu\n\n");
  172.        fflush(stdin);
  173.        getchar();
  174.        system("cls");
  175. }
  176.    }while (opcion1!=0);
  177.  
  178. }
  179.  
  180. /**************************************************************************************************************
  181.  
  182.                                     Subprograma de gestión de cursos
  183.  
  184. ***************************************************************************************************************/
  185.  
  186. /***********************************************************************************
  187. Subprograma: GestCursos        Tipo: Submenú
  188. Prerrequesitos: Opción 2 para ejecutar el subprograma
  189. Objetivo: Presenta en la pantalla el submenú de gestión de cursos
  190. ************************************************************************************/
  191. int GestCursos()
  192. {
  193.    printf("\tSUBMENÚ \"GESTION DE CURSOS\"");
  194.    printf("\n\n1.- Alta");
  195.    printf("\n2.- Baja");
  196.    printf("\n3.- Modificación de datos de un curso");
  197.    printf("\n4.- Consulta de datos de un curso");
  198.    printf("\n5.- Listado General de Cursos");
  199.    printf("\n6.- Inscripción de socios a un curso");
  200.    printf("\n7.- Listado de socios que están apuntados a un curso");
  201.    printf("\n0.- Volver al Menú Principal");
  202.    printf("\nOpcion a escoger: ");
  203.    fflush(stdin);
  204.    scanf("%d",&opcion2);
  205.    system("cls");
  206. }
  207. /**************************************************************************************************************
  208.  
  209.                                     Subprograma de infomes económicos
  210.  
  211. ***************************************************************************************************************/
  212.  
  213. /***********************************************************************************
  214. Subprograma: InformesEconomicos        Tipo: Submenú
  215. Prerrequesitos: Opción 3 para ejecutar el subprograma
  216. Objetivo: Presenta en la pantalla el submenú de informes económicos
  217. ************************************************************************************/
  218. int InformesEconomicos()
  219. {
  220.    printf("\tSUBMENÚ \"INFORMES ECONOMICOS\"");
  221.    printf("\n\n1.- Informe Mensual(por cuotas básicas)");
  222.    printf("\n2.- Informe Mensual(de un curso)");
  223.    printf("\n3.- Informe Mensual(todos los cursos)");
  224.    printf("\n0.- Volver al Menú Principal");
  225.    printf("\nOpcion a escoger: ");
  226.    fflush(stdin);
  227.    scanf("%d",&opcion3);
  228.    system("cls");
  229.  
  230. }
  231.  
  232. /***********************************************************************************
  233. Subprograma: AltaSocios        Tipo: Procedimiento
  234. Prerrequesitos: Opción 1 para ejecutar el subprograma
  235. Objetivo: Pedir datos generales del socio(DNI,nombre y tipo)
  236. ************************************************************************************/
  237. void AltaSocios(struct estructura_datos_socio *datos_socio,int contador)
  238. {
  239.    int validacion;
  240.    char letraDNI;
  241.  
  242.    printf("\t\"Alta de socios\"");
  243.  
  244.  
  245.  
  246.    printf("\nIntroduzca su nombre: ");
  247.    fflush(stdin);
  248.    gets(datos_socio[contador].nombre);
  249.  
  250.  
  251.    do{
  252.  
  253.            printf("\nTipo de socio:");
  254.            printf("\n\n1.- Normal");
  255.            printf("\n2.- Jubilado");
  256.            printf("\n3.- Infantil");
  257.            printf("\tIntroduce el tipo de socio: ");
  258.            scanf("%d",&datos_socio[contador].TipoSocio);
  259.            fflush(stdin);
  260.  
  261.            if ((datos_socio[contador].TipoSocio >=1) && (datos_socio[contador].TipoSocio <=3))
  262.            {
  263.                validacion='v';
  264.                printf("\nTu tipo es %d", datos_socio[contador].TipoSocio);
  265.                getchar();
  266.            }
  267.  
  268.            else
  269.  
  270.            {
  271.                validacion='f';
  272.                printf("\nEl tipo introducido no es correcto");
  273.                getchar();
  274.                fflush(stdin);
  275.                system("cls");
  276.            }
  277.  
  278.    }while(validacion=='f');
  279.  
  280.  
  281.    do{
  282.  
  283.            printf("\nIntroduzca su DNI: ");
  284.            scanf("%s",datos_socio[contador].DNI);
  285.            fflush(stdin);
  286.  
  287.            if (strlen(datos_socio[contador].DNI)==9)
  288.  
  289.                {
  290.                validacion='v';
  291.                for (contador;datos_socio[contador].DNI<9;contador++)
  292.  
  293.                    printf("%c, %d\n", datos_socio[contador].DNI, isdigit(datos_socio[contador].DNI));
  294.                }
  295.  
  296.                else
  297.                {
  298.                validacion='f';
  299.                printf("\nEl DNI introducido no es correcto");
  300.                getchar();
  301.                fflush(stdin);
  302.                system("cls");
  303.                }
  304.  
  305.  
  306.    }while(validacion=='f');
  307.  
  308.  
  309.    printf("Su DNI es: %s",datos_socio[contador].DNI);
  310.    printf("\nPulse <intro> para volver al menú");
  311.    getchar();
  312.  
  313. }
  314. /***********************************************************************************
  315. Subprograma: BajaSocios        Tipo: Procedimiento
  316. Prerrequesitos: Opción 2 para ejecutar el subprograma
  317. Objetivo: Eliminar datos generales del socio(DNI,nombre y tipo)
  318. ************************************************************************************/
  319. void BajaSocios(struct estructura_datos_socio *datos_socio, int contador)
  320. {
  321.    int baja_socio;
  322.    int i=0;
  323.    int posicion;
  324.  
  325.    printf("\n\tBaja de socios");
  326.  
  327.  
  328.    printf("\n\n\tIntroduzca el DNI del socio a modificar");
  329.    scanf("%s", &baja_socio);
  330.  
  331.  
  332.    for (i=0; i>MAX_Socios; i++)
  333.    {
  334.        if (datos_socio[i].DNI  == baja_socio)
  335.        {
  336.            posicion=i;
  337.            for (i=posicion; i<MAX_Socios; i++)
  338.            {
  339.                datos_socio[i]= datos_socio[i+1];
  340.                fflush(stdin);
  341.                printf("\nSe ha borrado el socio correctamente.");
  342.                getchar();
  343.                system("cls");
  344.                break;
  345.            }
  346.            break;
  347.        }
  348.  
  349.        if ((datos_socio[i].DNI!= baja_socio) && (i=MAX_Socios-1))
  350.        {
  351.            printf("\nEste DNI no se encuentra en nuestro registro.");
  352.        }
  353.    }
  354.    fflush(stdin);
  355.    getchar();
  356.  
  357. }
  358. /***********************************************************************************
  359. Subprograma: ModificacionSocios        Tipo: Procedimiento
  360. Prerrequesitos: Opción 3 para ejecutar el subprograma
  361. Objetivo: Modificar datos generales del socio(DNI,nombre y tipo)
  362. ************************************************************************************/
  363. void ModificacionSocios()
  364. {
  365.  
  366. }
  367. /***********************************************************************************
  368. Subprograma: ConsultaSocios        Tipo: Procedimiento
  369. Prerrequesitos: Opción 4 para ejecutar el subprograma
  370. Objetivo: Pedir datos generales del socio(DNI,nombre y tipo)
  371. ************************************************************************************/
  372. void ConsultaSocios(struct estructura_datos_socio *datos_socio,int contador)
  373. {
  374.    for (contador=1;contador<MAX_Socios;contador++)
  375.    {
  376.        fflush(stdin);
  377.        printf("Socio %i:  %s",contador,datos_socio[contador].DNI);
  378.        getchar();
  379.    }
  380.  
  381. }
  382. /***********************************************************************************
  383. Subprograma: PagoMensual        Tipo: Procedimiento
  384. Prerrequesitos: Opción 5 para ejecutar el subprograma
  385. Objetivo: Pedir datos generales del socio(DNI,nombre y tipo)
  386. ************************************************************************************/
  387. void PagoMensual()
  388. {
  389.  
  390. }
  391. /***********************************************************************************
  392. Subprograma: SociosNormales        Tipo: Procedimiento
  393. Prerrequesitos: Opción 6 para ejecutar el subprograma
  394. Objetivo: Pedir el listado de socios normales
  395. ************************************************************************************/
  396. void SociosNormales()
  397. {
  398.  
  399. }
  400. /***********************************************************************************
  401. Subprograma: PagoMensual        Tipo: Procedimiento
  402. Prerrequesitos: Opción 7 para ejecutar el subprograma
  403. Objetivo: Pedir el listado de socios jubilados
  404. ************************************************************************************/
  405. void SociosJubilados()
  406. {
  407.  
  408. }
  409. /***********************************************************************************
  410. Subprograma: SociosInfantiles        Tipo: Procedimiento
  411. Prerrequesitos: Opción 8 para ejecutar el subprograma
  412. Objetivo: Pedir el listado de socios infantiles
  413. ************************************************************************************/
  414. void SociosInfantiles()
  415. {
  416.  
  417. }
  418. /***********************************************************************************
  419. Subprograma: PagoMensual        Tipo: Procedimiento
  420. Prerrequesitos: Opción 7 para ejecutar el subprograma
  421. Objetivo: Pedir datos generales del socio(DNI,nombre y tipo)
  422. ************************************************************************************/
  423. void GeneralSocios()
  424. {
  425.  
  426. }


« Última modificación: 17 Diciembre 2016, 16:35 pm por GameX » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con la comparacion de estructuras en C
« Respuesta #1 en: 17 Diciembre 2016, 15:51 pm »

usaste el debugger para ver si tienes un error logico?


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
GameX

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda con la comparacion de estructuras en C
« Respuesta #2 en: 17 Diciembre 2016, 15:56 pm »

Se puede decir que soy nuevo en programación, no tengo idea de lo que es el debugger :/
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con la comparacion de estructuras en C
« Respuesta #3 en: 17 Diciembre 2016, 15:58 pm »

el debugger es una de las herramientas más importantes de cualquier programador, te permite correr tu codigo paso a paso para ver el comportamiento de las variables y de la lógica, busca en google o youtube "usar debugger [nombre de tu IDE]"
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda comparacion de Sonido
Programación Visual Basic
Saok Dagon 3 1,862 Último mensaje 11 Diciembre 2007, 07:44 am
por Saok Dagon
Ayuda con comparación de ficheros en C++
Programación C/C++
Deby93 0 3,789 Último mensaje 1 Diciembre 2011, 22:19 pm
por Deby93
Ayuda Comparacion de cadenas
Java
charmedever 3 2,183 Último mensaje 16 Julio 2012, 05:19 am
por hucruz
ayuda con comparacion en sentencia
Programación C/C++
rod00x3 3 2,657 Último mensaje 7 Enero 2013, 19:33 pm
por rod00x3
[SOLUCIONADO] Busqueda de comparacion de cadenas con arreglo de estructuras
Programación C/C++
dato000 7 3,775 Último mensaje 13 Mayo 2015, 20:35 pm
por Blaster
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines