Линейный массив A содержит 2*N элементов, значения которых задаются по следующей формуле a[i]:=10*sin(N+i*i). Элементы массива нумеруются с единицы.
Найти количество точек, расположенных внутри прямоугольника, заданного координатами вершин одной из диагоналей, если значения элементов А[1] и А[2] - координаты первой точки, элементов А[3] и А[4] - второй точки и т. д. Стороны прямоугольника параллельны соответствующим осям системы координат.
Во входном потоке в первой строке дано натурально N (N <= 100), во
второй строке через пробел даны четыре целых числа - координаты вершин
диагонали прямоугольника X1 Y1 X2 Y2 (-15 < X1, X2, Y1, Y2 < 15)
например:
54
-8 10 7 4
например: 13
Привожу пример кода, онлайн-проверку не проходит. Прошу указать на что-то явное, что я упускаю.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,size,x1,y1,x2,y2,q=0;
cin >> n >> x1 >> y1 >> x2 >> y2;
size=2*n+1;
float arr[size];
for (int i=1;i<size;i++)
{
arr[i]=10*sin(n+i*i);
}
for (int i=1;i<size;i+=2)
{
if ((arr[i] > x1 && arr[i] < x2 && arr[i+1] < y1 && arr[i+1] > y2) ||
(arr[i] < x1 && arr[i] > x2 && arr[i+1] > y1 && arr[i+1] < y2 ))q++;
}
cout << q;
return 0;
}
Ваша проверка в if
рассматривает только одно положение диагонали (причем "альтернативное") - между левым-верхним и правым-нижним углом. Но в условии не сказано, что диагональ проходит именно так. Возможна и диагональ между левым-нижним и правым-верхним углом.
Чтобы покрыть все возможные варианты так, как вы уже взялись это делать, вам придется выписать четыре громоздких варианта условия в if
.
Но вместо того, чтобы городить многовариантный if
, лучше бы вам сразу нормализовать прямоугольник
std::tie(x1, x2) = std::minmax({ x1, x2 });
std::tie(y1, y2) = std::minmax({ y1, y2 });
и далее пользоваться простым if
if (arr[i] > x1 && arr[i] < x2 && arr[i+1] > y1 && arr[i+1] < y2)
++q;
Как уже не раз говорилось, такого
float arr[size];
в С++ нет.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Допустим у меня есть std::string strХочу ввести с клавиатуры текст, который скопируется в str
Есть map описывающий сущность, где пара это имя поля и его значениеПодскажите пожалуйста, есть ли какой нибудь инструмент который позволит...
break - выбрасывает вас из цикла либо же ключевое слово которое выходит из циклаЗавершить цикл раньше времени и тд