• Кому реально нужны правила по использованию cookie на сайте?

    @wadimko81
    Моё мнение, что этим сообщения о использовании кук, просто издевательство над посетителем, и владельцем сайта.

    На самом деле, в любом браузере, есть настройки безопасности.
    Есть так называемые уровни безопасности. При желании, пользователь может настроить свой браузер, таким образом, чтобы ему показывал сообщения именно его браузер о том, какие данные о нём собираются на данном сайте.

    При том, тут пугали разными версиями сайта, при разном сборе данных.
    Как раз, для браузеров, есть расширения, которые фильтруют содержимое страницы.
    Не загружают всё те же скрипты, Гугл аналитикс, и так далее. Всякие счётчики.
    Есть расширение, которое вообще отключает какие либо скрипты, либо определённые.

    Пользователь, если его беспокоит собственная безопасность, анонимность, может настроить это так, как ему нужно. При том, с различными уровнями, для различных сайтов. То есть, запретить определённым счётчикам собирать о себе данные, а определённым разрешить.

    На мой взгляд дело всё в том, что подобные вещи делаются, как бы это сказать.
    Для людей, с ограниченными умственными способностями в определённой области, которые по какой-то причине не считают необходимым настроить свой ПК так, как нужно.
    И на самом деле, подстройка по подобные гриппы лиц весьма неприятная тенденция и в чём-то опасная.

    Например, в браузере Файрфокс, убрали из настроек возможность отключать скрипты, мотивируя это, на официальном сайте тем, что пользователи этой кнопкой “ломают их браузер, который становистя не пригодным для просмотра” или как-то примерно так.

    На самом деле, если кого-то, на самом деле, из тех, кто разрабатывает и продвигает подобные вещи, заботит безопасность конфиденциальности граждан своей страны, то имело бы более действенно прописать немного другие механизмы. А именно. Например, для локализованной под определённую страну, то есть язык, браузер. Ну к пмриеру, когда пользователь устанавливает на свой ПК Оперу, выбирает при установки язык, чтобы вместе с этим, автоматически прописывались настройки по умолчанию по информировании пользователя о том, какие данные о нём собираются.
    То есть, пользователь установивший Оперу, на французиком, при посещении любого сайта, будет получать такое же сообщение, как сейчас, не на размытое, а конкретное, о том, какие данные переданы, какие крипты запущены, какая информация о нём собиралась, и какой именно файл записан, где он находится на его ПК. Кнопку удалить, принять и так далее.
    Чтобы это можно было отключить, и настроить по желанию пользователя.
    На самом деле, это можно сделать и сейчас, при желании. Но суть проблемы, чтобы было включено по умолчанию, и при желании можно было отключить.

    А отображения окошка на сайте, которое не кто не читает, и нажимает “ОК”
    Это, какое-то, не знаю, похоже на бутафорию и издевательство.

    Про слежку за пользователями через куки, а как же лог сервера?
    Получается, лог сервера, программы его обработки, тоже своего рода слежка.
    При том, от этого уже не откажешься не как.

    Когда пользователь, пользуется чем-то, например тем же ПК, он для пользования этим, должен иметь определённый набор навыков и знаний.
    Но почему-то, в капиталистическом обществе, стала развиваться опасная тенденция, подстраиваться под группу людей, которая не считает нужным получать какие либо навыки. И это негативно сказывается на тех, кто имеет такие навыки и хочет их улучшить. Как пример, всё с тем же удалением возможности отключить скрипты в файрфоксе.
    Да и вообще, интерфейс многим программ в последнее время становится своеобразным.

    На самом деле, браузеров, которым пользуются люди, можно сказать около 10 шт.
    Файрфокс, Опера, Хром и так далее. Обязать прописывать там настройки безопасности по умолчанию, в 10 программах, гораздо эффективнее, чем на все сайты, вешать таблички, которые не кто не читает.

    Тему эту ещё можно продолжить в данном русле, но и так много текста.
    Специально зарегистрировался, чтобы ответить на этот вопрос.
    Всё написанное, это личное мнение, на истину не претендует.

    На вопрос, кому это нужно, вероятно тем, кому выгодно создавать проблемы людям.
    Вероятно какой-то способ подавить конкурентов, какими-то требованиями.
    Ничего общего с заботой о людях, это на практике, как кажется не имеет.
    p.s Если некая программа, загружает массив данных на ваш пк...
    Сработает файрвол, правила доступа к папкам, правила учётной записи, на установку программ, сработает файрвол, антивирус, и так далее.
    Ответ написан
    1 комментарий
  • Как правильно сделать функцию для повторяющихся действий?

    profesor08
    @profesor08
    Ну вот тебе дали три функции, тебе их надо проверить на четность. Гуглишь что такое четные и нечетные функции. Далее пишешь некий код, который это проверяет. Для каждой функции пишешь функцию, потом сверяешь результаты их выполнения. Потом останется проверить результаты на множестве цифр (массив), если проверка для каждого значение вернет один и тот-же результат, тогда можно делать выводы что это за функция, четная или нет, если результаты разные, то ни та ни другая.

    public class Program
        {
            
            delegate double Fn(double x);
            
            static int Check(Fn f, double x) {
                if ( f(x) == f(-x) ) {
                    return 1;
                }
                else if ( f(-x) == -f(x) ) {
                    return -1;
                }
                else {
                    return 0;
                }
            }
            
            static string Result(string name, int result) {
                switch (result) {
                    case 1: return name + "четная";
                    case 0: return name + "никакая";
                    case -1: return name + "не четная";
                }
                
                return name + "unknown result";
            }
            
            public static void Main(string[] args)
            {
                double num = 6.0;
                
                Fn fn1 = x => x * x * x;
                Fn fn2 = x => x * x * x + 1;
                Fn fn3 = x => 1 / (1 + x * x);
                
                Console.WriteLine(Result("Fn1: ", Check(fn1, num)));
                Console.WriteLine(Result("Fn2: ", Check(fn2, num)));
                Console.WriteLine(Result("Fn3: ", Check(fn3, num)));
            }
        }
    Ответ написан
    1 комментарий
  • Как правильно сделать функцию для повторяющихся действий?

    MrMureno
    @MrMureno
    VR for all
    Вы не поверите, но просто взять и сделать отдельным методом/функцией))

    параметры для функции определить не можете?? ..разбирайте тогда примеры попроще, учитесь. разве не для этого такие задания/лабораторные работы делают
    Ответ написан
    4 комментария
  • Как правильно сделать функцию для повторяющихся действий?

    FoggyFinder
    @FoggyFinder
    Попробуйте рассматривать функцию в программировании как некоторый участок кода который выполняет определенное действие.

    Давайте разберем на примере вашего задания:

    Заданы три функции y1=x^3, y2=x^3+1, y3= 1/(1+x^2). Определить, являются ли эти функции четными или нечетными.


    Вас может смущать число "три" в формулировке, отбросьте его как не существенное, тогда будет проще понять как правильно поступить. Переформулируем, оставив только самую суть:

    Определить четность функций.


    Возьмем определение "четности":

    Нечётными и чётными называются функции, обладающие симметрией относительно изменения знака аргумента.


    Так как функция может быть произвольная, то можно лишь говорить о свойствах на некотором интервале с заданным шагом.

    Определим тип функции в виде перечисления:

    public enum FuncType { Odd, Even, Unknown };

    Нам понадобиться функция которая будет определять тип функции для конкретной точки:

    Func<double, FuncType> isEven = v =>
    {
        var y1 = func(v);
        var y2 = func(-v);
    
        if (y1 == y2)
            return FuncType.Even;
        if (y1 == -y2)
            return FuncType.Odd;
    
        return FuncType.Unknown;
    };


    и функция для суммирования двух состояний:

    Func<FuncType, FuncType, FuncType> add = (v1, v2) =>
    {
        if (v1 == v2) return v2;
        return FuncType.Unknown;
    };


    теперь, чтобы не делать ненужные проверки, нужен способ вернуть результат сразу как только станет понятно, что функция не является ни четной ни нечетной:

    Для начала нужно определить "состояние" функции для первой точки (a) и, если, однозначного ответа нет, то можно возвращать результат - в дальнейших вычислениях нет необходимости:

    var funcType = isEven(a);
    if (funcType == FuncType.Unknown)
        return FuncType.Unknown;


    теперь, когда предварительная обработка сделана, можно писать цикл:

    for (double x = a + step; x <= b; x += step)
        {
            var funcTypeNext = isEven(x);
            funcType = add(funcType, funcTypeNext);
            if (funcType == FuncType.Unknown)
                return FuncType.Unknown;
         }


    и в итоге нужно вернуть funcType.

    Полностью функция выглядит так:

    public static FuncType IsEvenFunction(Func<double, double> func, double a, double b, double step)
    {
    
        Func<double, FuncType> isEven = v =>
        {
            var y1 = func(v);
            var y2 = func(-v);
    
            if (y1 == y2)
                return FuncType.Even;
            if (y1 == -y2)
                return FuncType.Odd;
    
            return FuncType.Unknown;
        };
    
        Func<FuncType, FuncType, FuncType> add = (v1, v2) =>
        {
            if (v1 == v2) return v2;
            return FuncType.Unknown;
        };
    
        var funcType = isEven(a);
        if (funcType == FuncType.Unknown)
            return FuncType.Unknown;
    
        for (double x = a + step; x <= b; x += step)
        {
            var funcTypeNext = isEven(x);
            funcType = add(funcType, funcTypeNext);
            if (funcType == FuncType.Unknown)
                return FuncType.Unknown;
        }
    
        return funcType;
    }


    Проверка:

    Func<double, double> fn1 = x => x * x * x;
    Func<double, double> fn2 = x => x * x * x + 1;
    Func<double, double> fn3 = x => 1 / (1 + x * x);
    
    Console.WriteLine("Fn1: {0}", IsEvenFunction(fn1, 1, 10, 0.01));
    Console.WriteLine("Fn2: {0}", IsEvenFunction(fn2, 1, 10, 0.01));
    Console.WriteLine("Fn3: {0}", IsEvenFunction(fn3, 1, 10, 0.01));


    Теперь что касается вывода как у вас примере, попробуйте добавить функцию .ToString() для форматирования перечисления. А также добавить описание для функции. Можно использовать кортеж - (описание, функция).

    Если возникнут вопросы - не стесняйтесь спрашивать, буду рад помочь.
    Ответ написан
    1 комментарий
  • C++ как заполнить вектор рандом?

    BacCM
    @BacCM
    C++ почти с рождения
    Всё как у тебя только
    int iArr[size] = { 0 };

    заменить на
    vector<int> iArr(size);

    И всё будет работать так же.
    Ответ написан
    Комментировать
  • C++ как заполнить вектор рандом?

    @xxx3Vxxx
    Программист C++
    #include <vector>
    #include <random>
    #include <algorithm>
    #include <iterator>
    #include <iostream>
    
    using namespace std;
    
    vector<int> randomVector(size_t size)
    {
        vector<int> v(size);
        random_device r;
        generate(v.begin(), v.end(), [&]{return r();});
        return v;
    }
    
    int main()
    {
        vector<int> v(randomVector(100));
        copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
        return 0;
    }
    Ответ написан
    Комментировать
  • Как сделать на С++ подобное?

    myjcom
    @myjcom Куратор тега C++
    #include<iostream>
    #include<sstream>
    #include<string>
    #include<vector>
    #include<algorithm>
    #include<iterator>
    
    using namespace std;
    
    int main()
    {
        string s = "10 20 30   50 99         786 521        3";
        istringstream is(s);
        vector<int> c;
    
        copy(istream_iterator<int>(is), {}, back_inserter(c));
    
        for(int i : c)
        {
          cout << i << ' ';
        }
    
        int j = c[1] + c[2];
    
        cout << "j == " << j;
    }
    Ответ написан