Определить по введенным данным сколько из отрезков можно собрать треугольников - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно написать программу ,которая будет определять по введенным данным (данные=длины отрезков),сколько из этих отрезков можно собрать треугольников .Вся сложность состоит в том,что отрезков можем ввести от 3 до 10000(я так понимаю надо список list) и как потом сделать ,чтобы программа прогоняла все отрезки между собой(вот тут я думаю for подойдет).Будьте добры напишите программу,хотя бы в краткой форме

Решение задачи: «Определить по введенным данным сколько из отрезков можно собрать треугольников»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX_BEAM 10000
  5. #define null -1
  6.  
  7. int cmp(const void *a, const void *b) {
  8.     return *(int*)a - *(int*)b;
  9. }
  10. int Sort(int a[MAX_BEAM], int n) {
  11.     qsort(a, n, sizeof *a, cmp ); // СОРТИРУЕМ
  12.     return a[n];
  13. }
  14. int main(int argc, char * argv []) {
  15.     int arrSize = 0;
  16.     int lengthBeam[MAX_BEAM] = {null};
  17.     int inputScan = 0;
  18.     int i;
  19.     int ntr=0;
  20.     printf("Dliny otr: \n");
  21.     while(arrSize<= MAX_BEAM) {
  22.         inputScan = scanf("%d", &lengthBeam[arrSize]);
  23.         if (!inputScan) {
  24.             printf("Error.\n");//ИСПРАВИТЬСЯ НА НЕПРАВИЛЬНЫЙ ВВОД
  25.             return 0;
  26.         }// if was string on input
  27.         if ( feof(stdin) ) {
  28.             break;
  29.         }// if was on input "end of line"
  30.         if (lengthBeam[arrSize] <= 0) {
  31.             printf("Error.\n");//ИСПРАВИТЬСЯ НА НЕПРАВИЛЬНЫЙ ВВОД
  32.             return 0;
  33.         }
  34.         arrSize++;
  35.     }
  36.     if (arrSize < 3 ) {
  37.         printf("Error.\n");//ИСПРАВИТЬСЯ НА НЕПРАВИЛЬНЫЙ ВВОД
  38.         return 0;
  39.     }// if was values less than 3
  40.     else {
  41.         Sort(lengthBeam, arrSize);//СОРИРУЕМ
  42.         int length_i=-1;
  43.         for (i = 0; i<=arrSize-2; ++i) {
  44.             int length_j=-1;
  45.             int j;
  46.             if (lengthBeam[i] == length_i)
  47.                 continue;
  48.             length_i=lengthBeam[i];
  49.             int length_k=-1;
  50.             int k;
  51.             for (j =i+1; j<=arrSize-1; ++j) {
  52.                 if ((lengthBeam[j] == length_j))
  53.                     continue;
  54.                 length_j = lengthBeam[j];
  55.                 for (k= j+1; k<=arrSize; ++k) {
  56.                     if ((lengthBeam[k]= length_k))
  57.                         continue;
  58.                     length_k = lengthBeam[k];
  59.                     if ((lengthBeam[i] + lengthBeam[j])>lengthBeam[k] && (lengthBeam[i] + lengthBeam[k])>lengthBeam[j] && (lengthBeam[k] + lengthBeam[j])>lengthBeam[i]) {
  60.                         ++ntr;
  61.                     }
  62.                 }
  63.             }
  64.         }
  65.     }
  66.  
  67.     printf("Trejuholniki: %d\n", ntr);//ПИШЕМ КОЛИЧЕСТВО ТРЕУГОЛЬНИКОВ
  68.     system("pause");
  69.     return 0;
  70. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы