Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- // Структура за трапец
- typedef struct
- {
- double a; // първа основа
- double b; // втора основа
- double h; // височина
- } Trapezoid;
- // Функция за пресмятане на площта на трапец
- double calculateArea(Trapezoid t)
- {
- return ((t.a + t.b) * t.h) / 2;
- }
- // Функция за намиране на индекса на трапеца с най-малка площ
- int findMinAreaIndex(double areas[], int n)
- {
- int minIndex = 0;
- for (int i = 1; i < n; i++)
- {
- if (areas[i] < areas[minIndex])
- {
- minIndex = i;
- }
- }
- return minIndex;
- }
- // Функция за сортиране на трапеците по площ (плъзгаща сортировка)
- void sortTrapezoids(Trapezoid trapezoids[], double areas[], int n)
- {
- for (int i = 0; i < n - 1; i++)
- {
- for (int j = 0; j < n - i - 1; j++)
- {
- if (areas[j] > areas[j + 1])
- {
- // Размяна на площите
- double tempArea = areas[j];
- areas[j] = areas[j + 1];
- areas[j + 1] = tempArea;
- // Размяна на трапеците
- Trapezoid tempTrapezoid = trapezoids[j];
- trapezoids[j] = trapezoids[j + 1];
- trapezoids[j + 1] = tempTrapezoid;
- }
- }
- }
- }
- int main()
- {
- int n;
- // Въвеждане на броя на трапеците
- printf("Enter the number of trapezoids: ");
- scanf_s("%d", &n);
- // Динамично заделяне на памет за масивите
- Trapezoid* trapezoids = (Trapezoid*)malloc(n * sizeof(Trapezoid));
- double* areas = (double*)malloc(n * sizeof(double));
- // Въвеждане на данни за всеки трапец
- for (int i = 0; i < n; i++) {
- printf("\nEnter the bases and height for trapezoid %d:\n", i + 1);
- printf("Base a: ");
- scanf_s("%lf", &trapezoids[i].a);
- printf("Base b: ");
- scanf_s("%lf", &trapezoids[i].b);
- printf("Height h: ");
- scanf_s("%lf", &trapezoids[i].h);
- // Пресмятане на площта и съхраняване в масива
- areas[i] = calculateArea(trapezoids[i]);
- }
- // Намиране на трапеца с най-малка площ
- int minAreaIndex = findMinAreaIndex(areas, n);
- // Сортиране на трапеците по площ
- sortTrapezoids(trapezoids, areas, n);
- // Извеждане на данните
- printf("\nTrapezoids sorted by area:\n");
- for (int i = 0; i < n; i++) {
- printf("Trapezoid %d: a = %.2lf, b = %.2lf, h = %.2lf, Area = %.2lf\n",
- i + 1, trapezoids[i].a, trapezoids[i].b, trapezoids[i].h, areas[i]);
- }
- printf("\nTrapezoid with the smallest area:\n");
- printf("a = %.2lf, b = %.2lf, h = %.2lf, Area = %.2lf\n",
- trapezoids[minAreaIndex].a, trapezoids[minAreaIndex].b, trapezoids[minAreaIndex].h, areas[minAreaIndex]);
- // Освобождаване на заделената памет
- free(trapezoids);
- free(areas);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement