Связь между собой 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];
};
Объяснение кода листинга программы
- Структура
stancпредставляет собой станцию и содержит следующие поля:- koor (координаты станции)
- daln (количество абонентов на станции)
- stations[4] (массив, представляющий собой список радиостанций, связанных с данной станцией)
- subscribers[2] (массив, представляющий собой список абонентов на станции)
- Необходимо дополнить программу для работы с любым количеством радиостанций.