arreglos en c

Iniciado por megadethrust1, 12 Diciembre 2016, 23:39 PM

0 Miembros y 1 Visitante están viendo este tema.

megadethrust1

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

engel lex

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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Naimaderis

#2
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.

engel lex

no estoy seguro que intentaste plantear XD
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Naimaderis

#4
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

engel lex

primer error

Código (cpp) [Seleccionar]
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²

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.