Dev - C++ - por que la funcion de buscar no lo reliza de forma correcta

 
Vista:
sin imagen de perfil

por que la funcion de buscar no lo reliza de forma correcta

Publicado por andres (4 intervenciones) el 12/09/2022 05:52:36
No se por que la funcion de buscar (en la linea 25)no reconoce de forma correcta lo que se pide yo creo que teiene que ser algo relacionado con lo que esta en la linea 54 pero en el compilador no me dice nada
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <time.h>
typedef struct {
    int anio;
	int mes;
	int dia;
}fecha;
typedef struct {
  int hora;
  int minutos;
}hora;
typedef struct{
	int id;
	char mascota[20];
	fecha  fechaAlimentacion[10];
	hora horaAlimentacion;
	char decripcionAlimento[50];
	float cantidad;
	int estado;
}Alimentacion;
int registrar(Alimentacion*personal,int n);
void presentar(int i,Alimentacion*animales);
int buscar (int *id,Alimentacion*animales,int i);// declaracion o prototipo
void verAnimales(Alimentacion x);
 
int main(){
	char op=' ',resp=' ';
	int n=0,i=0,posicion=0;
	int id [11];
		Alimentacion *animales=NULL;
	char mensaje[]="\nAnimales a alimentar\n[1] Registro  \n[2] Presentar Todos \n[3] Buscar por id\n[4] Buscar por mascota y cantidad de comida\n[5]Actualizar\n[6]Elimniar\n[o]Salir\n " ;
     do{
     	printf("Cuantas mascotas van a ser aliemtadas: ");
     	scanf("%d",&n);fflush(stdin);
	 }while(n<=0);
 
	 animales=(Alimentacion *)malloc(n*sizeof(Alimentacion)); //arreglo dinamico
     i=0;
	 do{
     	printf("%s",mensaje);
     	scanf("%c",&op);fflush(stdin);
     	switch(op){
     		case '1':if(i<n){
                     i=registrar (animales ,i);
				}else{
					printf("Ya no hay cupos para atencion");
				}
			break;
     		case'2': presentar(i,animales);  break;
            case'3': printf("Ingrse la id a buscar: ");
			         scanf("%d",id);fflush(stdin);
					 posicion=buscar(id,animales,i);
					 if(posicion!=1){
					 	  printf("\nEl animal con id  %d es: ",id);
					      verAnimales(animales[posicion]);
					 }else
					 printf("Ciudadano con cedula %d no se encuentra ",id);
 
					          break;
     		case'4':          break;
            case'5':          break;
            case'6':printf("Ingrese el id del animal");
			        scanf("%d",id);fflush(stdin);
			        posicion=buscar(id,animales,i);
			        if(posicion!=-1){
			        	   verAnimales(animales[posicion]);
			        	   printf("\nQuiere eliminar de la lista al animal a dar baja: ");
			        	   scanf("%c",&resp);fflush(stdin);
					      if(resp='1'){
                               animales[posicion].estado=0;
					            printf("Animal %s eliminado ",animales[posicion].mascota);
				}
				}
				 break;
		 }
	 }while(op!='0');
      free(animales);
     return 0;
}
 
int registrar (Alimentacion*personal,int i){
 
	printf("Id:  ");
	scanf("%d",&personal[i].id);fflush(stdin);
	printf("Mascota:  ");
	scanf("%s",personal[i].mascota);fflush(stdin);
//	printf("hora de deayuno:  ");
//	scanf("%s",personal[i].horaAlimentacion.desayuno);fflush(stdin);
//	printf("\nhora de almuerzo");
//	scanf("%s",personal[i].horaAlimentacion.almuerzo);fflush(stdin);
//	printf("\nhora de cenar");
//	scanf("%s",personal[i].horaAlimentacion.cena);fflush(stdin);
	printf("Descripcion del alimento: ");
	scanf("%s",personal[i].decripcionAlimento);fflush(stdin);
    printf("Cantidad de alimento: ");
	scanf("%f",personal[i].cantidad);fflush(stdin);
 
	personal[i].estado=1;i++;
	return i;
	}
	void presentar(int n,Alimentacion*personal){
		int i=0;
		for(i=0;i<n;i++){
			if(personal[i].estado==1){
			printf("Id:%d",personal[i].id);
//			printf("\nMascota: %s",personal[i].mascota);
//			printf("\nHora de desayunar: %s",personal[i].horaAlimentacion.desayuno);
//			printf("\nHora de almorzar",personal[i].horaAlimentacion.almuerzo);
//			printf("\nHora de cenar",personal[i].horaAlimentacion.cena);
			printf("\nDescripcion del alimento %s",personal[i].decripcionAlimento);
			printf("\nCantidad de alimento %f",personal[i].cantidad);
 
 
			}
		}
	}
int buscar (int *id,Alimentacion*animales,int n){
	int i=0,bandera=0;// 1 es encontrado, 0 es No encontrado
	int posicion=-1;// -1 no existe
	for(i=0;i<n&&bandera==0;i++){
	    if((id,animales[i].id)==0){
	       posicion=i;
		   bandera=1;
		}
	}
	return posicion;
}
void verAnimales(Alimentacion x){
	      printf("\n Id: %d",x.id);
//	      printf("\nCedula: %s",x.cedula);
//	      printf("\nEdad: %d",x.edad);
 
 
 
 
 
 
 
 
	   if(x.estado==0)
	     printf("\nNo se lo va a alimentar.");
}
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