C/Visual C - [AYUDA] Busqueda Binaria en C (¿Se puede encntrar +1valor?)

 
Vista:

[AYUDA] Busqueda Binaria en C (¿Se puede encntrar +1valor?)

Publicado por Mauricio Adrián Hebrard (3 intervenciones) el 08/07/2013 15:25:50
Gente... estoy preparando un TP para la facu y necesito saber si se puede informar más de un valor con la busqueda binaria y como hago esto... muchas gracias!!
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

[AYUDA] Busqueda Binaria en C (¿Se puede encntrar +1valor?)

Publicado por Chema (234 intervenciones) el 08/07/2013 19:18:53
Una Facu sin TP no puede ser, hay que hacerle una TP.

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
static const struct {
    const char   *producto;
    int	    	  indice;
    float        clavada;
} ArrList[] = {
{ "agua",	 			1,12.3 },
{ "agua con gas",	 	2,17.4 },
{ "agua del grifo",	 	3 ,13.4 },
{ "cafe con leche",	 	4 ,14.4 },
{ "cafe sin leche",	 	5,15.4  },
{ "bocata de choped",	 6 ,1.4 },
{ "bocata de crisis",	 7 ,3.4 },
{ "bocata de lechuga",	 8,1.4  },
{ "plato del dia",	 	9,13.4  },
{ "plato con binado",	 10,13.45  },
{ "plato con nada",	 	11,5.43  },
{ "tapa de calamar",	 12,15.46  },
{ "tapa de water",	 	13 ,19.4 },
};
 
 
static int Article(const char *str)
{
    int    start, end, cur;
    int    diff;
    start = 0;
    end = (sizeof(ArrList)/sizeof(ArrList[0])) - 1;
    do {
		cur = start + ((end - start) / 2);
		diff = strcmp(str, ArrList[cur].producto);
		if (diff == 0) {
			return (cur);
		} else if (diff < 0) {
			end = cur - 1;
		} else {
			start = cur + 1;
		}
    } while (start <= end);
 
    return (-1);
}
 
int main(void) {
	int result ;
	float total =0;
	result = Article("tapa de water");
	printf("Articulo:=%s ---------Precio :=%3.2f\n" ,ArrList[result].producto,ArrList[result].clavada);
	total+=ArrList[result].clavada;
	result = Article("agua");
	printf("Articulo:=%s -------------Precio :=%3.2f\n" ,ArrList[result].producto,ArrList[result].clavada);
	total+=ArrList[result].clavada;
	result = Article("bocata de crisis");
	printf("Articulo:=%s -----------Precio :=%3.2f\n" ,ArrList[result].producto,ArrList[result].clavada);
	total+=ArrList[result].clavada;
	printf("Gracias posu visita, vuelva usted mañana, total:=%3.2f\n",total );
 
	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

[AYUDA] Busqueda Binaria en C (¿Se puede encntrar +1valor?)

Publicado por Chema (234 intervenciones) el 08/07/2013 23:53:32
El código tiene un error ArrList debe estar por orden alfabético , condición indispensable para que la búsqueda binaria funcione. Los bocatas van entre el agua y el café.
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