C/Visual C - ¿Que tengo mal?

   
Vista:

¿Que tengo mal?

Publicado por carlos (63 intervenciones) el 10/12/2017 16:42:09
Hola a todo el mundo, mi problema es que tengo un ejercicio en el que me pide que se guarden los datos en 5 registros( a estas alturas que voy tendria que ser facil) la cosa es que al terminar el programa sale casi 1 docena de 0, y se supone que no debe imprimirlo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct{
   char nombre[20];
   int nacimiento;
   int mes;
   int ano;
   }persona[8];
   int auxiliar=1;
int main()
{
 
    printf("Introduzca nombre");
    gets(persona[1].nombre);
    printf("\n Introduzca el dia de nacimiento");
    scanf("%d",&persona[1].nacimiento);
    fflush(stdin);
    printf("\n Introduzca el mes");
   scanf("%d",&persona[1].mes);
   fflush(stdin);
      printf("\n Introduzca el ano");
    scanf("%d",&persona[1].ano);
    fflush(stdin);
    //printf("%s",auxiliar);    s
    //printf("%d",&persona.edad);
    printf("Introduzca nombre");
    gets(persona[2].nombre);
    printf("\n Introduzca el dia de nacimiento");
    scanf("%d",&persona[2].nacimiento);
    fflush(stdin);
    printf("\n Introduzca el mes");
   scanf("%d",&persona[2].mes);
   fflush(stdin);
      printf("\n Introduzca el ano");
    scanf("%d",&persona[2].ano);
    fflush(stdin);
    while(auxiliar!=0){
    printf("Que mes buscas");
    scanf("%d",&auxiliar);
    int i=1;
    while(i<8){
        if(auxiliar==persona[i].mes){
            printf("%s\n",persona[i].nombre);
            printf("%d\n",persona[i].nacimiento);
            printf("%d\n",persona[i].mes);
            printf("%d\n",persona[i].ano);
            i++;
        }else
            i++;
 
        }
    }
  system("PAUSE");
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dionicio

re: ¿Que tengo mal?

Publicado por Dionicio (21 intervenciones) el 11/12/2017 02:16:11
No tengo el tiempo suficiente para explicarte algunas cosas pero te dejaré tu mismo código solo que un poco más legible con algunos comentarios. Espero te sea de ayuda.

Cualquier duda, no dudes en publicarla en el foro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

¿Que tengo mal?

Publicado por Thanatos (18 intervenciones) el 11/12/2017 19:10:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>  // fgets(), getchar()
 
#define SIZE_NOM 20
#define SIZE_PER  5
 
struct Fecha {
    int dia;
    int mes;
    int anio;
};
 
struct Persona {
    char nombre[SIZE_NOM];
    struct Fecha fecha;
};
 
int main(void) {
    struct Persona p[SIZE_PER] = { 0 };
    int mes = 1;
    int i = 0;
 
    printf("Ingrese los siguientes datos:\n\n");
    while (i < SIZE_PER) {
        printf("Nombre de la persona #%d ---> ", i + 1);
        (void) fgets(p[i].nombre, SIZE_NOM, stdin);
 
        printf("F. Nacimiento (dd/mm/aa) --> ");
        scanf("%d/%d/%d", &p[i].fecha.dia, &p[i].fecha.mes, &p[i].fecha.anio);
 
        (void) getchar();
        printf("\n");
        ++i;
    }
 
    while (mes != 0) {
        printf("Que mes buscas? (salir = 0): ");
        scanf("%d", &mes);
 
        i = 0;
        while (mes != 0 && i < SIZE_PER) {
            if (mes == p[i].fecha.mes) {
                printf(
                    "Nombre:  %sF. Nac.: %02d/%02d/%d\n\n",
                    p[i].nombre, p[i].fecha.dia, p[i].fecha.mes, p[i].fecha.anio
                );
            }
            ++i;
        }
    }
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Que tengo mal?

Publicado por carlos (63 intervenciones) el 20/12/2017 00:10:05
(void) fgets(p[i].nombre, SIZE_NOM, stdin);

¿Que se supone que es una llamada a la funcion fgets de la libreria?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar