Проработка алгоритма

Никак не могу придумать, суть проста есть 2 массива допустим vector x и vector y, это значения координат, они стоят упорядоченно, то есть значению x соответствует значение y по номерам, мне нужно найти индекс самого ближайщего значение стоящее к 0/0, как это можно сделать не объединяя два вектора?
8 ответов

создай лучше пару
std::pair
и складывай элементы пары. x.first+x.second чем меньше сумма тем она ближе к 0-0


Как-то так, думаю... 1) сперва создадим переменные: min1, min2 Инициализируем их предельными значениями. 2) потом создадим переменную, в которой будет в итоге хранится мин. индекс 3) инициализируем счетчик цикла (цикл пусть будет for. 4) пока не будет достигнут последний индекс проводим итерации 5) если abs(x[i]) < min1 && abs(y[i]) < min2, то мин. индекс=i, min1=x[i], min2=y[i] иначе след. итерация/Если есть огрехи в алгоритме, заранее извиняюсь, писал второпях.Senarist, а что ближе к 0:0? кордината 3:0 или 2:1 ?


Ferrari F1 смотря что в задаче требуется. Можно доп условие к такому случаю написать


Senarist,Ferrari F1, я сделал данный алгоритм, но как сделать чтобы он весь вектор просматривал, просто вывод получился вот такой, хотя там есть значения в 4 номере ближе подходящие
n: 3
n: 4
n: 1
Data x: 10
Data topp: 3
Data topp: 5
Data topp: 7
Data topp: 1
Data y: 22
Data left: 4
Data left: 6
Data left: 8
Data left: 2
#include <cstdlib>
#include <vector>
using namespace std;
 
int main()
{
    vector <int> x;
    vector <int> y;
    x.push_back(10);
    y.push_back(22);
    x.push_back(3);
    y.push_back(4);
    x.push_back(5);
    y.push_back(6);
    x.push_back(7);
    y.push_back(8);
    x.push_back(1);
    y.push_back(2);
    
    int min1 = 300;
    int min2 = 300;
    int n = 0;
    for (int i = 0; i < 4; i++) {
        if(abs(x[i]) < min1 && abs(y[i]) < min2){
            n = i;
            min1 = x[i];
            min2 = y[i];
        }
    }
    printf("n: %d\n",min1);
    printf("n: %d\n",min2);
     printf("n: %d\n",n);
     printf("Data x: %d\n",x[0]);
     printf("Data topp: %d\n",x[1]);
     printf("Data topp: %d\n",x[2]);
     printf("Data topp: %d\n",x[3]);
     printf("Data topp: %d\n",x[4]);
    
     printf("Data y: %d\n",y[0]);
     printf("Data left: %d\n",y[1]);
     printf("Data left: %d\n",y[2]);
     printf("Data left: %d\n",y[3]);
     printf("Data left: %d\n",y[4]);
 
}


ostrich не пойму в чем задача? Вывести просто самую ближнюю точку к 0-0 и ее индекс? А если таких 2 как писал феррари?


Senarist, нет 2 там быть не может, но вот просто там не самая ближняя выводится вот в чём проблема была


а разве не нужно вычислять расстояние от точки (0,0) до точки А (x,y)??? Ferrari F1, Вам встречный вопрос: какая точка ближе к (0,0): (3,0) или (1,1)? по Вашему алгоритму выйдет (3,0).


mat_for_c,
Если есть огрехи в алгоритме, заранее извиняюсь, писал второпях.