Связь между собой 2-х человек с помощью 4 радиостанций: дополнить программу для любого количества радиостанций - C (СИ)

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

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

Добрый вечер. Программа считает возможность связи между собой 2-х человек с помощью 4 радиостанций. А надо 2 человека и количество радиостанций любое, какое введешь. Уже как месяц парюсь, и не получается никак. Могу разное количество станций задать, но фиксированно.
#include <conio.h>
#include <iostream.h>
#include <math.h>
 
struct point //структура координаты
{
        float x;
        float y;
};
 
struct stanc //структура станции
{
        point koor;
        int daln;
};
 
struct stanc m[4]; //массив из 4 станций
stanc ab1, ab2; //2 абонента
 
float rasst(a, b) //функция нахождения расстояния между координатами
point a, b;
{
        float res = sqrt(pow((a.x-b.x),2)+pow((a.y-b.y),2));
        return res;
}
 
int main()
{
        clrscr();
        cout<<"---Vvedite dannie po stanciyam, dalnost ne dolgna previshat 50 km:\n";
        for (int i = 1; i <= 4; i++) //ввод информации по станциям
        {
                cout<<"Stanciya N"<<i<<":\n";
                cout<<"Koordinata X: ";
                cin>>m[i].koor.x;
                cout<<"Koordinata Y: ";
                cin>>m[i].koor.y;
                do
                {
                        cout<<"Dalnost: ";
                        cin>>m[i].daln;
                }
                while (m[i].daln < 1 || m[i].daln > 50);
        }
        cout<<"---Vvedite dannie po abonentam:\n";
        cout<<"Abonent 1:\n"; //ввод информации по абоненту 1
        cout<<"Koordinata X: ";
        cin>>ab1.koor.x;
        cout<<"Koordinata Y: ";
        cin>>ab1.koor.y;
        do
        {
                cout<<"Dalnost: ";
                cin>>ab1.daln;
        }
        while (ab1.daln < 1 || ab1.daln > 50);
        cout<<"Abonent 2:\n"; //ввод информации по абоненту 2
        cout<<"Koordinata X: ";
        cin>>ab2.koor.x;
        cout<<"Koordinata Y: ";
        cin>>ab2.koor.y;
        do
        {
                cout<<"Dalnost: ";
                cin>>ab2.daln;
        }
        while (ab2.daln < 1 || ab2.daln > 50);
        if (rasst(ab1.koor, ab2.koor) <= ab1.daln && rasst(ab1.koor, ab2.koor) <= ab2.daln) //проверка возможности связи
        cout<<"Svyas megdy abonentami vozmogna!\n";
        else
        cout<<"Svyas megdy abonentami ne vozmogna!\n";
        int min = 50;
        int k = 1;
        for (int i = 1; i <= 4; i++) //определение ближайшей к абоненту 1 станции
        if (rasst(ab1.koor, m[i].koor) < min)
        {
                min = rasst(ab1.koor, m[i].koor);
                k = i;
        }
        cout<<"Bligayshaya k abonenty 1 stancya N"<<k<<"\n";
        min = 50;
        k = 1;
        for (int i = 1; i <= 4; i++) //определение ближайшей к абоненту 2 станции
        if (rasst(ab2.koor, m[i].koor) < min)
        {
                min = rasst(ab2.koor, m[i].koor);
                k = i;
        }
        cout<<"Bligayshaya k abonenty 2 stancya N"<<k<<"\n";
        cout<<"Nazhmite lyubuyu klavishu dlya vihoda...";
        getch();
}

Решение задачи: «Связь между собой 2-х человек с помощью 4 радиостанций: дополнить программу для любого количества радиостанций»

textual
Листинг программы
struct stanc //структура станции
{
    point koor;
    int daln;
    int stations[4];
    int subscribers[2];
};

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

  1. Структура stanc представляет собой станцию и содержит следующие поля:
    • koor (координаты станции)
    • daln (количество абонентов на станции)
    • stations[4] (массив, представляющий собой список радиостанций, связанных с данной станцией)
    • subscribers[2] (массив, представляющий собой список абонентов на станции)
  2. Необходимо дополнить программу для работы с любым количеством радиостанций.

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

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