• Sábado 27 de Abril de 2024, 19:11

Autor Tema:  El Centro De Un Vector  (Leído 1606 veces)

hygiliak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
El Centro De Un Vector
« en: Domingo 4 de Julio de 2004, 00:48 »
0
Hola que tal, les agradecería en exceso si me pueden ayudar con el algoritmo (para C), de calcular el centro de un vector, el problema es este:

Centro de un Vector

Considere un vector x cuyas coordenadas van de la 0 a la n y que contienen valores enteros. A una coordenada c (entre 0 y n) se le dice el centro de x si cumple que la suma desde i = 0 hasta i = c - 1 de (c - i) xi es igual a la suma desde i = c + 1 hasta n de (i - c) xi. Observe que la entrada en la coordenada c no participa en ninguna de las dos sumas. Por ejemplo, si x es el vector (6, 2, 3, 0, 1) entonces c = 1 es un centro de x, pues la primera suma (1 - 0) 6 es igual a la segunda suma (2 - 1) 3 + (3 - 1) 0 + (4 - 1) 1 (ambas valen 6). No todos los vectores tienen centro. Por ejemplo, el vector (1, 2, 1, 1) no tiene centro porque ninguna de sus coordenadas cumple que las dos sumas son iguales. Nota: El centro de un vector tiene interpretación física: Si se considera a los valores contenidos en el vector como pesos, entonces un centro del vector (si acaso existe) corresponde con el centro de gravedad.

Noel Solw

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: El Centro De Un Vector
« Respuesta #1 en: Domingo 4 de Julio de 2004, 10:39 »
0
En tu ejercicio esta sugerida la posibilidad de hacer un loop e ir calculando las sumas izquierda y derecha, hasta que sean iguales.

Yo te sugiero una solucion basada en los principios de fisica, recordando que la resultante de un conjunto de fuerzas pasa por el centro de gravedad, y que en dicho punto la sumatoria de los momentos es nula.

El momento de una fuerza F situada a una distancia d de un eje esta definido por la esprecion M = Fxd (con signo de acuerdo a la direccion del giro).

Si asignamos a cada elemento del vector un peso de acuerdo a su valor y una distancia al origen de acuerdo al valor del indice, lo que tenemos que hacer es :

calcular el peso total : sumatoria de los valores de los elementos del vector.
calcular el momento total al origen : sumatoria de los momentos parciales.
el valor del centro es : sumatoria de momentos / sumatoria de pesos.

la funcion que lo calcula podria ser :

float Process(int *a)
{
      int peso = 0,momento = 0;
      for(int i = 0;i < N;i++)
     {
            peso    += a;
            momento += a*i;
     }
     return float(momento)/peso;
}

pudiera se que el centro no sea un valor entero, en este caso, diriamos segun el enunciado de tu ejercicio que "el vector no tiene centro", aunque en realidad lo tiene pero su valor no coincide con un indice del vector.
Observa, que centro puede ser entero, pero esta ubicado exteriormente a los elementos del vector, supongo que en este caso tampoco hay que aceptarlo como
tal.

Exito ! ! !

hygiliak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: El Centro De Un Vector
« Respuesta #2 en: Martes 6 de Julio de 2004, 05:29 »
0
mil gracias por la ayuda, realmente no entendia muy bien del todo desde el mismo planteamiento del problema, ahora si ya puedo meterme con mayor detenimiento y calma a resolverlo.
Por cierto una pregunta extra, los   corchetes que pusiste en el código representan lo mismo que lo ( ) ??, perdón  si es algo tonta la pregunta pero soy lo que realmente se puede llamar un novato en C  de  6 semanas y nose mucho que digamos, más que la lógica básica

hygiliak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: El Centro De Un Vector
« Respuesta #3 en: Martes 6 de Julio de 2004, 07:31 »
0
otra vez dando molestias, estaba revisando con calma el cachito de código que pusiste y..
1. hasta donde se, es una función

2. la declaración de "i" supongo que se "escapó" por ahi,  también con "N".
 tomas como variable o como constante de la gravedad, o es el número de valores "n" del vector??

3. que tengo que escribir  al momento de llamar la función desde el main
pienso que puedo hacer otra variable (digamos "a")y asignarle el valor de momento /peso, pero, ¿al llamar a la función "process" lo haría algo así??:  "variable=process(a)" ??

Noel Solw

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: El Centro De Un Vector
« Respuesta #4 en: Martes 6 de Julio de 2004, 09:41 »
0
Con respecto a tu primer correo del 6/7/2004 los corchetes se usan para indicar los indices de un array.
Si tienes, por ejemplo, int a[3], que es un array de 3 elementos, estos estan designados como a[0],a[1] y a[2], o en genericamente a, donde i puede ser
0,1 o 2.

Con respecto a la segunda nota:

[1] : Si se trata de una funcion que recibe como input un array de enteros y devuelve como output el centro de gravedad.
[2] : la declaracion de i esta en for(int i ...........)
        N es una constante que esta declarada al principio del programa, y que entre otras cosas se usa para declarar el array a : int a[N]
[3] : correcto.

Dime, segun el horario del correo, trabajaste toda la noche ?
Sigo a tu disposicion por cualquier problema.
Exito ! ! !

hygiliak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: El Centro De Un Vector
« Respuesta #5 en: Miércoles 7 de Julio de 2004, 06:48 »
0
nuevamente gracias por atender a mis dudas.
ya medio entendí que onda con los corchetes pero el problema es que en clase todavía el profesor no enseña arrays o arreglos (creo  porque de lo contrario estoy muy mal en éste tema de programar) se supone que en la clase que de mañana, dijo que enseñará algo nuevo para poder resolver ésta tarea, asi  que supongo que es eso de array..

Con respecto al horario, es si y no, si estuve trabajando de noche pero no hasta las 6, curiosamente, después de leer tu respuesta vi las horas de los mensajes y no me "cuadraron"  y pensé exactamente lo mismo que me comentaste acerce de.

Total si trabajé en la noche pero réstale un par de horas al horario de los mensajes, (prefiero trabajar de noche, todo está más tranquilo, no crees??) asi que la hora que veas de éste mensaje  ya es la correcta.

ok, ahora sólo esperare a la clase de mañana a ver si me sirve algo y entiendo mejor las cosas, por que aparte el profesor, como buen Ing, en Sistemas, sabrá mucho, pero he notado que entre inges de esa carrera "no se entienden ni explican" bien.

Gracias por tu tiempo y tu conocimiento