fork download
  1. #include <stdio.h> // Извикване на библиотеката за 'printf' и 'scanf' за да могат да се използват тези функции
  2. #include <math.h> // Извикване на библиотеката за математическите изчисления
  3.  
  4. #define PI 3.141592653 // Дефинираме числото PI
  5.  
  6. int m,i,x,y,z; // Задаваме променливи
  7. float t,rsum;
  8. float a[20],b[20],c[20]; // Масиви за страни на триъгълника като 'а' и 'b' се задават ръчно
  9. float A[20],B[20],C[20]; // Масиви за ъгли на триъгълника като 'А' се задава ръчно
  10. float r[20],p[20],S[20],r2[20]; // Масиви за радиус на вписаната в триъгълника окръжност 'r',полуметър 'p' и лице 'S'
  11.  
  12. int main()
  13. {
  14. printf("\n ****************LEGENDA****************\n");
  15. printf(" * No: - Nomer na triygylnika *\n");
  16. printf(" * a - Strana 'a' na triygylnika *\n");
  17. printf(" * b - Strana 'b' na triygylnika *\n");
  18. printf(" * c - Strana 'c' na triygylnika *\n");
  19. printf(" * A - Ygyl 'A' na triygylnika *\n");
  20. printf(" * B - Ygyl 'B' na triygylnika *\n");
  21. printf(" * C - Ygyl 'C' na triygylnika *\n");
  22. printf(" * r - Radius na wpisanata okryjnost *\n");
  23. printf(" ***************************************\n\n");
  24.  
  25. Nachalo: // Място от където да продължи ако условието за 'М' не е спазено
  26. printf(" Molq vyvedete broj triygylnici M:"); // Изписване на екрана
  27. scanf("%d",&m); // Усвояване на стойност за броя на триъгълниците
  28. if (m>19) // Проверка за М<20
  29. {
  30. printf(" Broq triygylnici trqbwa da e po malyk ot 20!\n\n"); // Изписване на екрана
  31. goto Nachalo; // Ако условието(М<20) не е спазено програмата се връща в началото
  32. }
  33. getchar(); // Изчакване за натискане на клавиш от клавиатурата
  34. for(i=1;i<=m;++i) // Цикъл за да може да се усвоят стойности за всички 'М' на брой триъгълника
  35. {
  36. printf(" Molq vyvedete na '%d' triygylnik strana 'a':",i); // Изписване на екрана
  37. scanf("%f",&a[i]); // Усвояване на стойност за страната 'а'
  38. printf(" Molq vyvedete na '%d' triygylnik strana 'b':",i); // Изписване на екрана
  39. scanf("%f",&b[i]); // Усвояване на стойност за страната 'b'
  40. printf(" Molq vyvedete na '%d' triygylnik ygyla 'A':",i); // Изписване на екрана
  41. scanf("%f",&A[i]); // Усвояване на стойност за ъгъла 'А'
  42. }
  43.  
  44. printf("\n\n Izchislqvane i vizualizirane na cqlata informaciq za triygylnicite:\n");
  45. getchar(); // Изчакване за натискане на клавиш от клавиатурата
  46. for (i=1;i<=m;++i) // Цикъл за изчисляване на стойностите
  47. {
  48. c[i]=sqrt(a[i]*a[i]+b[i]*b[i]-2*a[i]*b[i]*cos(A[i]*(PI/180.0))); // Изчисляваме дължината на страна 'c' по косинусова теорема c.c = a.a + b.b – 2a.b.cos(A)
  49. p[i]=(a[i]+b[i]+c[i])/2 ; // Изчисляваме полупериметъра на триъгълника p=(a+b+c)/2
  50. S[i]=sqrt(p[i]*(p[i]-a[i])*(p[i]-b[i])*(p[i]-c[i])); // Изчисляваме лице на този триъгълник е по формула на Херон S=sqrt(p*(p-a)*(p-b)*p-c))
  51. r[i]=S[i]/p[i]; // Изчисляваме радиус на вписана окръжност r = S/p
  52. B[i]=(acos((a[i]*a[i]+c[i]*c[i]-b[i]*b[i])/(2*a[i]*c[i]))*180.0)/PI; // Косинусова теорема за откриване радиуса на ъглите b.b = a.a + c.c – 2a.c.cos(B)
  53. C[i]=180-A[i]-B[i]; // Изчислява се като общия сбор на вътрешните ъгли на триъгълник трябва да е равно на 180
  54.  
  55. printf("\n No:%d a=%.2f b=%.2f c=%.2f A=%.2f B=%.2f C=%.2f r=%.2f\n",i,a[i],b[i],c[i],A[i],B[i],C[i],r[i]);
  56. }
  57.  
  58. //*****************************************
  59. printf("\n\n Podredba na triygylnicite po vazhodqsht red sprqmo radiusa na wpisanata okryjnost (r)\n");
  60.  
  61. for (i = 1; i <= m; i++) // Copying data from array 'r' to array 'r2
  62. {
  63. r2[i] = r[i];
  64. }
  65.  
  66. for(x=1; x<=m; ++x) // Сортиране чрез метода на мехурчето
  67. for(y=m; y>=x; --y)
  68. {
  69. if(r2[y-1] > r2[y]) // Сравняване на съседни елементи
  70. {
  71. t = r2[y-1];
  72. r2[y-1] = r2[y];
  73. r2[y] = t;
  74. }
  75. }
  76.  
  77. for( z=1; z<=m; z++){
  78. for( i=1; i<=m; i++){
  79. if (r2[z]==r[i]){
  80. printf("\n No:%d a=%.2f b=%.2f c=%.2f A=%.2f B=%.2f C=%.2f r=%.2f\n",i,a[i],b[i],c[i],A[i],B[i],C[i],r[i]); // Изписване на триъгълниците ж жъзходящ ред
  81. }
  82. }
  83. }
  84. rsum = 0;
  85. for (i = 1; i <=m ; i++)
  86. rsum = rsum + r[i]; // Събиране на радиусите
  87. printf("\n\n Obshtiq sbor na radiusa na wpisanata okryjnost: %.2f \n",rsum);
  88. getchar(); // Изчакване за натискане на клавиш от клавиатурата
  89.  
  90. return 0;
  91. }
Success #stdin #stdout 0s 2168KB
stdin
Standard input is empty
stdout
 ****************LEGENDA****************
 * No: - Nomer na triygylnika          *
 * a   - Strana 'a' na triygylnika     *
 * b   - Strana 'b' na triygylnika     *
 * c   - Strana 'c' na triygylnika     *
 * A   - Ygyl   'A' na triygylnika     *
 * B   - Ygyl   'B' na triygylnika     *
 * C   - Ygyl   'C' na triygylnika     *
 * r   - Radius na wpisanata okryjnost *
 ***************************************

 Molq vyvedete broj triygylnici M:

 Izchislqvane i vizualizirane na cqlata informaciq za triygylnicite:


 Podredba na triygylnicite po vazhodqsht red sprqmo radiusa na wpisanata okryjnost (r)


 Obshtiq sbor na radiusa na wpisanata okryjnost:  0.00