C++ Прямая на плоскости может быть задана уравнением ax+by=с, где a, b одновременно не равны нулю, а, b, с – целые. Пусть даны коэффициенты нескольких прямых a1, b1, c1, a2, b2, c2, ... , an, bn, cn. Определите, имеются ли сред...
C++ Прямая на плоскости может быть задана уравнением ax+by=с,
где a, b одновременно не равны нулю, а, b, с – целые. Пусть даны
коэффициенты нескольких прямых a1, b1, c1, a2, b2, c2, ... , an, bn,
cn. Определите, имеются ли среди этих прямых три, пересекаю-
щиеся в одной точке.
Ответ(ы) на вопрос:
Гость
#include
using namespace std;
int main() {
int a, b, c, n, i;
cout << "n = ";
cin >> n;
if (n < 3) {
cout << "Не может быть менее 3 прямых!" << endl;
return 2;
}
int aa[n], bb[n], cc[n];
cout << "Ввод в формате 'a b c'" << endl;
for (i = 0; i < n; i++) {
cout << "прямая " << i << ": ";
cin >> a >> b >> c;
if ((a == 0) && (b == 0)) {
cout << "Оба коэффициента равны 0, повторите ввод." << endl;
i--;
}
else {
aa[i] = a;
bb[i] = b;
cc[i] = c;
}
}
for (i = 0; i < n; i++) {
a = aa[i];
b = bb[i];
c = cc[i];
for (int j = 0; j < n; j++) {
if (j == i) continue;
if (aa[i] / aa[j] == bb[i] / bb[j]) {
for (int k = 0; k < n; k++) {
if ((k == i) || (k == j)) continue;
if (aa[i] / aa[k] == bb[i] / bb[k])
cout << "прямые " << i << ", " << j << " и " << k << " пересекаются." << endl;
return 0;
}
}
}
}
cout << "Среди данных прямых нет трёх пересекающихся." << endl;
return 1;
}
Не нашли ответ?
Похожие вопросы