Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: megadethrust1 en 12 Diciembre 2016, 23:39 pm



Título: arreglos en c
Publicado por: megadethrust1 en 12 Diciembre 2016, 23:39 pm
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


Título: Re: arreglos en c
Publicado por: engel lex en 12 Diciembre 2016, 23:53 pm
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



Título: Re: arreglos en c
Publicado por: Naimaderis en 13 Diciembre 2016, 02:14 am
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.


Título: Re: arreglos en c
Publicado por: engel lex en 13 Diciembre 2016, 02:21 am
no estoy seguro que intentaste plantear XD


Título: Re: arreglos en c
Publicado por: Naimaderis en 13 Diciembre 2016, 04:07 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.

Código
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main (void)
  4. {
  5. int ARRE[12]={2,3,4,5,9,12,15,16,17,20,22,50};
  6. int i,j,n;
  7. for(i=0;i<=12;i++)
  8. {
  9. for(j=i+1;j<=12;j++)
  10. {
  11. for(n=j+1;n<=12;n++){
  12.  
  13. if((ARRE[i]+ARRE[j])>ARRE[n]&&(abs(ARRE[i]-ARRE[j])<ARRE[n]))
  14. printf("%d , %d , %d \n\t",ARRE[i],ARRE[j],ARRE[n]);
  15. }
  16.  
  17. }
  18. printf("\n");
  19. }
  20. printf("\n");
  21. }




CoAdm: No hagas doble post


Título: Re: arreglos en c
Publicado por: engel lex en 13 Diciembre 2016, 04:33 am
primer error

Código
  1. int ARRE[12]....
  2. for(i=0;i<=12;i++)
  3.  


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˛