Определить по введенным данным сколько из отрезков можно собрать треугольников - C (СИ)
Формулировка задачи:
Нужно написать программу ,которая будет определять по введенным данным (данные=длины отрезков),сколько из этих отрезков можно собрать треугольников .Вся сложность состоит в том,что отрезков можем ввести от 3 до 10000(я так понимаю надо список list) и как потом сделать ,чтобы программа прогоняла все отрезки между собой(вот тут я думаю for подойдет).Будьте добры напишите программу,хотя бы в краткой форме
Решение задачи: «Определить по введенным данным сколько из отрезков можно собрать треугольников»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define MAX_BEAM 10000 #define null -1 int cmp(const void *a, const void *b) { return *(int*)a - *(int*)b; } int Sort(int a[MAX_BEAM], int n) { qsort(a, n, sizeof *a, cmp ); // СОРТИРУЕМ return a[n]; } int main(int argc, char * argv []) { int arrSize = 0; int lengthBeam[MAX_BEAM] = {null}; int inputScan = 0; int i; int ntr=0; printf("Dliny otr: \n"); while(arrSize<= MAX_BEAM) { inputScan = scanf("%d", &lengthBeam[arrSize]); if (!inputScan) { printf("Error.\n");//ИСПРАВИТЬСЯ НА НЕПРАВИЛЬНЫЙ ВВОД return 0; }// if was string on input if ( feof(stdin) ) { break; }// if was on input "end of line" if (lengthBeam[arrSize] <= 0) { printf("Error.\n");//ИСПРАВИТЬСЯ НА НЕПРАВИЛЬНЫЙ ВВОД return 0; } arrSize++; } if (arrSize < 3 ) { printf("Error.\n");//ИСПРАВИТЬСЯ НА НЕПРАВИЛЬНЫЙ ВВОД return 0; }// if was values less than 3 else { Sort(lengthBeam, arrSize);//СОРИРУЕМ int length_i=-1; for (i = 0; i<=arrSize-2; ++i) { int length_j=-1; int j; if (lengthBeam[i] == length_i) continue; length_i=lengthBeam[i]; int length_k=-1; int k; for (j =i+1; j<=arrSize-1; ++j) { if ((lengthBeam[j] == length_j)) continue; length_j = lengthBeam[j]; for (k= j+1; k<=arrSize; ++k) { if ((lengthBeam[k]= length_k)) continue; length_k = lengthBeam[k]; if ((lengthBeam[i] + lengthBeam[j])>lengthBeam[k] && (lengthBeam[i] + lengthBeam[k])>lengthBeam[j] && (lengthBeam[k] + lengthBeam[j])>lengthBeam[i]) { ++ntr; } } } } } printf("Trejuholniki: %d\n", ntr);//ПИШЕМ КОЛИЧЕСТВО ТРЕУГОЛЬНИКОВ system("pause"); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д