Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Dano1952 en 8 Junio 2018, 01:27 am



Título: Vector con puntero, obtener la posición de un determinado elemento.
Publicado por: Dano1952 en 8 Junio 2018, 01:27 am
Hola, ¿como están?
Dude mucho antes de hacer este post, pero me plantie ¿si uno no pide ayuda como aprende?,-
Bueno eso es todo, dejo todo el programa ya que es corto y tal vez a alguien le sirva de consulta.-
Lo que necesito es para aplicar en el printf de la línea 61, -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define ELEMENT 20
  6.  
  7. void rellenar( int *ptrVec );
  8. void ordenar ( int *ptrVec );
  9. void buscar ( int *ptrVec );
  10.  
  11. int main(int argc, char *argv[]){
  12. int vector[ELEMENT], i;
  13.  
  14. rellenar ( vector );
  15. ordenar ( vector );
  16. buscar ( vector );
  17.  
  18. return 0;
  19. }
  20.  
  21. void rellenar( int *ptrVec ){
  22. int numero, i;
  23. srand( time(NULL) );
  24.  
  25. for ( i=0; i<ELEMENT; i++){
  26. numero = rand() % 101;
  27. *( ptrVec + i) = numero;
  28. }
  29. }
  30.  
  31. void ordenar ( int *ptrVec ){
  32. int i, j, tmp, menor, pos;
  33.  
  34. for ( i=0; i<ELEMENT-1; i++ ){
  35. menor = *(ptrVec+i);
  36. tmp = menor;
  37. pos = i;
  38. for ( j=i; j<ELEMENT-1; j++ ){
  39. if ( menor > *(ptrVec +j+1) ){
  40. menor = *(ptrVec +j+1);
  41. pos = j+1;
  42. }
  43. }
  44. if ( tmp != menor ){
  45. *(ptrVec+i) = menor;
  46. *(ptrVec+pos) = tmp;
  47. }
  48. }
  49. }
  50.  
  51. void buscar ( int *ptrVec ){
  52. int centro,inf=0,sup=ELEMENT-1,buscar=15;
  53.  
  54. for (int i=0; i<ELEMENT; i++){
  55. printf ( "%d ", *(ptrVec+i) );
  56. }
  57.  
  58. while( inf<=sup ){
  59. centro=((sup-inf)/2)+inf;
  60. if(*(ptrVec+centro) == buscar){
  61. printf ( "\n Encontrado en la posicion...: %d", 2 );
  62. break;
  63. }
  64. else if(buscar < *(ptrVec+centro)){
  65. sup=centro-1;
  66. }
  67. else{
  68. inf=centro+1;
  69. }
  70. }
  71. }
Saludos.
Dano


Título: Re: Vector con puntero, obtener la posición de un determinado elemento.
Publicado por: MAFUS en 8 Junio 2018, 02:07 am
¿centro?


Título: Re: Vector con puntero, obtener la posición de un determinado elemento.
Publicado por: Dano1952 en 8 Junio 2018, 03:04 am
Hola.
Sigo embotado con esto y no logro la claridad, haber si entiendo, centro contiene un valor y lo que yo necesito es el número de elemento donde reside ese valor. - 

(http://i66.tinypic.com/30kd5p4.png)

Si estoy buscando el 51 ¿como obtengo el 7?

Saludos.
Dano


Título: Re: Vector con puntero, obtener la posición de un determinado elemento.
Publicado por: MAFUS en 8 Junio 2018, 05:42 am
Pues eso, centro.
centro todo el rato marca en qué posición del array estás. Cuándo has encontrado la coincidencia centro deja de actualizarse guardando la posición del array con el elemento que se busca.


Título: Re: Vector con puntero, obtener la posición de un determinado elemento.
Publicado por: Dano1952 en 8 Junio 2018, 16:17 pm
Por algo me plantee que estaba obnubilado, era tan sencillo, mil disculpas por tu tiempo MAFUS (parecería que hice un copiar/pegar ;D ;D ;D),-

Dano.


Título: Re: Vector con puntero, obtener la posición de un determinado elemento.
Publicado por: Serapis en 8 Junio 2018, 17:49 pm
Pero si llamas adecuadamente a las variables, resultará más asequible entender su propósito...

En vez de llamarla 'centro', porque no la llamas 'indice', o 'posicion' ?. Porque INDICA su POSICION.
...usar el nombre de 'centro' sería acorde si refiriera exactamente la posición central (o uno arriba/abajo del centro si fuera de tamaño par).


Título: Re: Vector con puntero, obtener la posición de un determinado elemento.
Publicado por: Dano1952 en 8 Junio 2018, 18:26 pm
Hola.
Lo voy a tener en cuenta, ha sido de mucha ayuda lo que dices.-

Saludos.