Autor
|
Tema: Tratamiento de dos tablas a la vez (Leído 4,007 veces)
|
muymuyperdido
Desconectado
Mensajes: 45
|
Lo puse en otro post, pero no sé si está bien explicado asique aqui lo pongo más claro Tengo dos tablas y tengo que tratar cada fila de una de ellas con todas las filas de la otra. Asi 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 La fila 1 2 3 con 11 12 13, con 14 15 16, y con 17 18 19. La 4 5 6 con 11 12 13, con 14 15 16, y con 17 18 19. Y la 7 8 9 con 11 12 13, con 14 15 16, y con 17 18 19. Seria calcular la distancia euclidea como si fuesen ejes coordenados, es decir la raiz de la suma de las diferencias al cuadrado (en una funcion) No pongo codigo porque no sé por donde empezar, es decir, que bucle hago para hacer esa relacion?
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Hola! vas a necesitar 3 bucles anidados:
-El indice del primer bucle maneja las filas de la tabla 1 -El indice del segundo bucle maneja las filas de la tabla 2 -El indice del tercer bucle maneja las columnas de ambas tablas
Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
flony
Desconectado
Mensajes: 584
|
arrancar por usar la biblioteca standar para sacar las raices y potencias...lo de la tabla seria con 2 vectores de tamaño 2(corre desde 0 a 2 y suma 3)... info de biblioteca http://www.cplusplus.com/reference/cmath/....jaajaja lo lindo de la programacion hay mas de una manera de llegar al mismo rsultado
|
|
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
muymuyperdido
Desconectado
Mensajes: 45
|
Hola! vas a necesitar 3 bucles anidados:
-El indice del primer bucle maneja las filas de la tabla 1 -El indice del segundo bucle maneja las filas de la tabla 2 -El indice del tercer bucle maneja las columnas de ambas tablas
Saludos
Esto es lo que necesitaba! Muchas gracias^^ Lo he planteado asi for(z=0;z<m;z++){ for(i=0;i<m;i++){ dist[z] =0; for(j=0;j<m;j++){ dist[z]=dist[z]+((tabla1[j]-tabla2[j])(tabla1[j]-tabla2[j])) } dist[z]=sqrt(dist[z]); } } No lo he comprobado pero creo, ...creo, que está bien. Para ordenar cada columna de forma independiente como seria?
|
|
|
En línea
|
|
|
|
flony
Desconectado
Mensajes: 584
|
yo decia hacer algo asi... #include <iostream> #include <math.h>
using namespace std;
float main() { int vector[2]; int vector1[2]; float vector2[2]; int i=0; for (int i = 0; i < 2; i++) { vector2[i]=sqrt( pow(vector[i]-vector1[i], 2)); } cin.get(); return 0; }
es solo para que te hagas la idea...supongo que los datos de las tablas las tenes en algun lado, y esa area todavia no la uso bien
|
|
« Última modificación: 30 Diciembre 2012, 02:52 am por flony »
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
muymuyperdido
Desconectado
Mensajes: 45
|
for(z=0;z<m;z++){ for(i=0;i<m;i++){ dist[z]=0; for(j=0;j<m;j++){ dist[z][i]=dist[z][i]+((tabla1[j]-tabla2[j])(tabla1[j]-tabla2[j])) } } }
¿No podria ser así? Almacenandose todas las distancias en una tabla bidimensional?
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Una pregunta: dist es un arreglo o una matriz???
Si es una matriz esto dist[z]=0 es un error, nose si lo compilaste o no pero trata de prestar atencion a los errores que te marca el compilador...
El tamaño de la tabla para almacenar los resultados debe ser igual a las combinaciones que se generan, segun el ejemplo debe ser de 3x3 ya que se van a generar 9 resultados
Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Seria calcular la distancia euclidea como si fuesen ejes coordenados, es decir la raiz de la suma de las diferencias al cuadrado (en una funcion) No pongo codigo porque no sé por donde empezar, es decir, que bucle hago para hacer esa relacion?
A ver si así te aclaras un poquito más. te he puesto un par de cosas para que veas como va el código, aunque sólo con la parte de CALCULO DE CUADRADO DE DISTANCIA tienes lo que realmente quieres:#include <stdio.h> #include <math.h> int main() { int v1[3][3]={{1,2,3}, {4,5,6}, {7,8,9}}, v2[3][3]={{2,4,8}, {6,9,18}, {3,4,5}}, i,j,k; float d[3][3]={0}; /******ESTO PARA VER COMO SE RESTAN LAS LINEAS*************/ for (i=0;i<3;i++){ for (j=0;j<3;j++){ for (k=0;k<3;k++){ d[i][j]+=v2[i][k]-v1[j][k]; } } } for (i=0;i<3;i++){ for (j=0;j<3;j++){ printf ("%g ",d[i][j]); }puts ("\n"); } puts ("\n"); /*****************CALCULO DE CUADRADO DE DISTANCIAS****ESTO SOLO YA TE VALE****************/ for (i=0;i<3;i++){ for (j=0;j<3;j++){d[i][j]=0; for (k=0;k<3;k++){ d[i][j]+=pow (v2[i][k]-v1[j][k],2); }/* d[i][j]=sqrt (d[i][j]);<== para calcular aqui las distancias y quitando CALCULO DE DISTANCIAS */ } } for (i=0;i<3;i++){ for (j=0;j<3;j++){ printf ("%g ",d[i][j]); }puts ("\n"); } /*****************CALCULO DE DISTANCIAS********************/ for (i=0;i<3;i++){ for (j=0;j<3;j++){ d[i][j]=sqrt (d[i][j]); } } for (i=0;i<3;i++){ for (j=0;j<3;j++){ printf ("%g ",d[i][j]); }puts ("\n"); } return 0; }
Saluditos!. ... y Feliz 2013
|
|
« Última modificación: 31 Diciembre 2012, 19:36 pm por leosansan »
|
En línea
|
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
tratamiento de errores en VB
Programación Visual Basic
|
^kazike^
|
1
|
1,400
|
24 Enero 2008, 15:19 pm
por Hans el Topo
|
|
|
tratamiento de cadenas
Programación Visual Basic
|
inproboj
|
1
|
1,947
|
13 Mayo 2010, 20:26 pm
por inproboj
|
|
|
Consulta tratamiento de imágenes en python
Programación General
|
achu08
|
1
|
1,886
|
7 Mayo 2016, 18:53 pm
por MCKSys Argentina
|
|
|
Tratamiento de variables Script Linux
Scripting
|
Rav3nS
|
3
|
2,588
|
12 Junio 2016, 02:51 am
por Echizen
|
|
|
¿Por qué sucede lo siguiente con el tratamiento de punteros?
Programación C/C++
|
mester
|
1
|
1,692
|
14 Septiembre 2016, 12:43 pm
por do-while
|
|