no suelo publicar mucho pero necesito ayuda en este problema.
tengo que hacer un programa que analize un arreglo dado, el cual tiene la longitudes de los lados de un triangulo.
Me piden que encuentre las tricas de numeros que forman el triangulo e imprima el numero de triangulos que se puede formar en dicho arreglo.
ejemplo si el arreglo es este{1,2,3,4,5}
me imprime
2,3,4
2,4,5
3,4,5
triangulos=3
la cantidad de triangulos es igual a la cantidad de elementos si son más de 3 elementos y si ninǵun elemento es 0
ejemplo {1,2,3,4}
1,2,3
2,3,4
3,4,1
4,1,2
recomiendo imprimir y usar el operador de modulo para "dar vueltas" dentro del array
Si lo que estas enumerando son nombres de elementos, y no la medida de los lados, podes usar los principios de básicos de conteo. Mas precisamente combinatorio.
Tenes 5 elementos, y queres ordenarlos de a 3, por la regla del producto eso es 5*4*3, para que quede mas facil, lo completo, dividiendo entre 2*1 y multiplicando por 2*1, eso nos deja 5*4*3*2*1/2*1 que es lo mismo que 5!/2!, pero que sucede, esto te toma {1,2,3} como diferente al {2,1,3} entonces, lo solucionamos, de cuantas maneras se pueden reordenar esto, pues 3!, entonces nos queda
5!/2!*3! lo que es igual a 10.
Espero haber entendido bien lo que planteabas, entonces el problema pasa a ser, programar la combinatoria.
Edito: Volvi a leer y vi que habias puesto que era la medida de los lados, entonces, mi razonamiento no es correcto.
no estoy seguro que intentaste plantear XD
Cita de: engel lex en 13 Diciembre 2016, 02:21 AM
no estoy seguro que intentaste plantear XD
Pense que "1" "2" ... "5" era una manera de distinguir los vertices, osea, 5 vertices, cuantos triangulos puedo formar, pero era la medida de los lados xD
al final esto fue lo que hice.
#include<stdio.h>
#include<math.h>
int main (void)
{
int ARRE[12]={2,3,4,5,9,12,15,16,17,20,22,50};
int i,j,n;
for(i=0;i<=12;i++)
{
for(j=i+1;j<=12;j++)
{
for(n=j+1;n<=12;n++){
if((ARRE[i]+ARRE[j])>ARRE[n]&&(abs(ARRE[i]-ARRE[j])<ARRE[n]))
printf("%d , %d , %d \n\t",ARRE[i],ARRE[j],ARRE[n]);
}
}
printf("\n");
}
printf("\n");
}
CoAdm: No hagas doble post
primer error
int ARRE[12]....
for(i=0;i<=12;i++)
ARRE tiene 12 elementos
el ciclo llegará a ARRE[12] que no existe
tambien tienes otro error si son los lados del triangulo deben seguir una regla que no tomas en cuenta a²+b²=c²