Найти координаты вершин многоугольника, заданного системой неравенств aix + biy ≤ ci, i = 1, 2, ., n - C (СИ)

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

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

Найти координаты вершин многоугольника, заданного системой неравенств aix + biy ≤ ci, i = 1, 2, ..., n. Помогите пожалуйста.

Решение задачи: «Найти координаты вершин многоугольника, заданного системой неравенств aix + biy ≤ ci, i = 1, 2, ., n»

textual
Листинг программы
#include <stdio.h>
 
 
int main() {
    int i,n,a[n],b[n],c[n],x[n],y[n];
    float xv,yv,minx,miny;
    int j,q[j],w[j],e[j];
    
    printf("kilkist rivnjan(>2) typu ax+by=c: ");
    scanf("%d", &n);
    
    printf("koeficient a: \n");
for (i =0; i < n;i++)
   scanf ("%d", &a[i]);
   printf("koeficient b: \n");
for (i =0; i < n;i++)
   scanf ("%d", &b[i]);
   printf("koeficient c: \n");
for (i =0; i < n;i++)
   scanf ("%d", &c[i]);
   
  printf("ODZ :");  
    printf("\n x y :");
for (i =0; i < n;i++)
    {y[i]=c[i]/b[i];
    x[i]=c[i]/a[i];
     printf("\n %d %d ",x[i], y[i]);
    }
    minx=x[1];
    miny=y[1];
    for (i =0; i < n;i++)
    {if (minx>x[i]);
    {minx=x[i];}
    if (miny<y[i]);
    {miny=y[i];}}
     printf("\n min x min y");
    printf("\n   %.3f     %.3f",minx,miny);
    
    for(i=0;i<n;i++)
    {for(j=0;j<n;j++){
    q[j]=a[i];
    w[j]=b[i];
    e[j]=c[i];}}
        
    for(i=0;i<n-1;i++)
    {for(j=i+1;j<n;j++){ 
    yv=((q[j]*c[i])-(a[i]*e[j]))/((q[j]*b[i])-(w[j]*a[i]));
    xv=(c[i]-(b[i]*yv))/(a[i]);
     printf("\n Vershyna");
    if ((yv<=miny)&&(xv<=minx))
    {
    printf("\n y      x");
    printf("\n %.3f    %.3f",yv,xv);
    }
    else
    printf("\n ne ODZ  ");
     printf("\n y      x");
    printf("\n %.3f    %.3f",yv,xv);}}
    
    
    return 0;
};

Объяснение кода листинга программы

В этом коде реализуется алгоритм для поиска координат вершин многоугольника, заданного системой неравенств ax + by <= c, где a, b и c - это коэффициенты, заданные пользователем. Список действий, которые выполняются в коде:

  1. Пользователю предлагается ввести количество неравенств в многоугольнике (n).
  2. Затем пользователю предлагается ввести коэффициенты a, b и c для каждого неравенства.
  3. Вычисляются значения x и y для каждого неравенства, используя формулу x = c/a и y = c/b.
  4. Находится минимальное значение x и y среди всех вершин многоугольника.
  5. Вычисляются значения q, w и e, используя формулу q = a, w = b и e = c.
  6. Для каждого неравенства вычисляются значения yv, используя формулу yv = ((q[j]c[i])-(a[i]e[j]))/((q[j]b[i])-(w[j]a[i])).
  7. Если значение yv меньше или равно минимальному значению y, и значение xv меньше или равно минимальному значению x, то выводятся координаты вершины (yv, xv).
  8. Если значение yv больше минимального значения y или значение xv больше минимального значения x, то выводится сообщение не ODZ.
  9. Код повторяется для всех неравенств.
  10. Код завершается, и возвращается значение 0.

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


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

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

13   голосов , оценка 4 из 5
Похожие ответы