/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema con un algoritmo

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
mar5



Registrado: 18 Ene 2011
Mensajes: 21

MensajePublicado: 10/03/2011 1:51 pm
Título: Problema con un algoritmo

Hola me gustaria saber si me podeis hechar una mano con un problema que tengo,es una bobada pero no me sale...

Lo que tengo es una matriz p[i][j] donde i va hasta N componentes y j<3 y lo que quiero es calcular la resta p[i][0]-p[i][0] entendiendo que el segundo indice i no puede ser igual que el primero,es decir si N es 3 quiero saber
p[0][0]-p[1][0]
p[0][0]-p[2][0]

p[0][1]-p[1][1]
p[0][1]-p[2][1]

p[0][2]-p[1][2]
p[0][2]-p[2][2]
como puedo escribir un algoritmo que me lo escriba?
muchas gracias
Volver arriba
Pantalàimon_



Registrado: 17 Jul 2007
Mensajes: 961

MensajePublicado: 10/03/2011 5:05 pm
Título:

Hola mar5.

i == i tome el valor que tome i. Con lo cual p[i][0] == p[i][0] siempre.

De los ejemplos que pones puedo deducir que lo que realmente quieres obtener es las restas p[i][k] - p[j][k] donde i es distinto de j. También supongo que i y j toman valores entre 0 i N y k toma valores entre 0 i 2.

Así que para encontrar todas las posibles restas hay que usar for's para recorrer cada indice i,j y k en sus respectivos rangos. Hay que evitar hacer la resta cuando i == j. Esto se puede hacer comprobando que i != j dentro de un if.

Un saludo!
Volver arriba
mar5



Registrado: 18 Ene 2011
Mensajes: 21

MensajePublicado: 11/03/2011 1:11 am
Título:

Muchas gracias por la respuesta.
Efectivamente eso es lo que quiero hacer y lo que me dices es lo que ya habia estado probando pero si suponemos por ejemplo que k<1 y i,j<3
Código:


  for(i=0;i<3;i++)
      for(j=0;j<3;j++)
          for(k=0;k<1;k++){ 
     
             if(i!=j){   
     
                x[i]=(p[i][k]-p[j][k]);
            }
            }


En teoria ,lo que yo quiero que me salga es lo siguiente pero no me sale

p[0][0]-p[1][0]
p[0][0]-p[2][0]

p[1][0]-p[0][0]
p[1][0]-p[2][0]

p[2][0]-p[0][0]
p[2][0]-p[1][0]

supongo que el error esta en x[i],pero ya he probado a llamar x con otro indice y tampoco salen todos los valores que deberian salir

un saludo
Volver arriba
Pantalàimon_



Registrado: 17 Jul 2007
Mensajes: 961

MensajePublicado: 11/03/2011 4:16 am
Título:

Tomo tu bucle de ejemplo y lo modifico un poco:

Código:
  for(i=0;i<3;i++)
      for(j=0;j<3;j++)
          for(k=0;k<1;k++){
     
             if(i!=j){   
     
                printf(" p[%d][%d] - p[%d][%d] = %d\n", i,k,j,k, (p[i][k]-p[j][k]);
            }
            }


Si lo sustituyes en tu código verás que las restas las hace todas. Lo que ocurre es que si lo guardas en un vector x recorriendo el indice i, se te superpondrán unas restas encima de las otras y cuando muestres el resultado, no será el deseado. Hay varias maneras de guardar todos los resultado en el vector x pero haciendo x[i] = no es una de ellas.

Edit: piensa que para tu bucle hay 6 restas posibles y tu las guardas en un vector con indices que solo van del 0 al 2.

Un saludo!
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com