Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2020, 20:09   #1
SwissMan
Новичок
Джуниор
 
Регистрация: 07.01.2020
Сообщений: 1
Печаль Помощь с доделыванием проекта Scilab

Я пытаюсь построить алгоритм определения количества элементов, принадлежащих множеству A \ B (разность A-B) и больше установленного значения.

Например:
A = {1,2,3,5,8}, B = {0,1,3,4,8,9,10} и установленное значение равно 3. A \ B = {2,5}, но есть один элемент
больше 3. Это значение 5.

Знаю что в scilab есть функция setdiff, только мне нужно сделать схожую свою.

Написал на JavaScript код, он делает всё что нужно, только никак не могу понять как перенести его в Scilab.
Код:
function diff_sort_arr(array_1,array_2, set_value)
    {
        var n = array_1.length, m = array_2.length, i = 0, k = 0, j = 0, array_3 = [];
        while ((i < n) && (j < m)) // until we reached the end of the array 
        {
            if (array_1[i] == array_2[j] || array_1[i]<set_value)
            { 
                i++,j++;
            } else {
                if (array_1[i] < array_2[j]) {
                    array_3[k] = array_1[i];
                    k++;
                    i++; // shift position in the first array
                } else {
                    j++; // move the position in the second array
                }
            }
        }
      let ret_arr=[];
        while (i < n) {
        array_3[k] = array_1[i];
        k++, i++;
        }
        return array_3;
    } 
 
 
    console.log(diff_sort_arr([1,2,3,5,8,10,12], [0,1,3,4,8,9,10], 3)); // at the exit [2, 5]  / [5]
Есть набросок Scilab, он немного сложнее(делал его с колегами), пожалуйста кто сможет мне его нормально обьяснить или помочь в составлении блок-схемы.
Код:
 function [a, ka] = srty(a, b, orien) // returns a values which are not in b
    // orien="r"|"c" added, including the hypermat case

    rhs = argn(2);

    // CHECKING INPUT ARGUMENTS
    // ========================
    if rhs < 2 | rhs > 3 then
        msg = gettext("%s: Wrong number of input argument(s): %d or %d expected.\n");
        error(msprintf(msg, "setdiff", 2, 3));
    end
    // Trivial case _whatever is b_
    if a==[]
        ka = []
        return
    end
    // orien
    if ~isdef("orien","l") then
        orien = 0
   end

    // PROCESSING
    // ==========
    // "r" or "c"
    // ----------

        // by element
        // ----------
    [a,ka] = unique(a);
    na = size(a,"*");

    b = unique(b(:));

    [x,k] = gsort([a(:); b], "g", "i");
    d = find(x(2:$)==x(1:$-1));  //index of common entries in sorted table
    if d <> [] then
        k([d;d+1]) = [];
    end

    keep = find(k <= na);
    a = a(k(keep));
    ka = ka(k(keep));

   endfunction

 function h = serialize_hypermat(h, orien)
    if orien==1 then
        dims = 1:ndims(h)
        dims([1 2]) = [2 1]
        h = permute(h, dims)
    end
    h = matrix(h, size(h,1), -1)
endfunction
a = [1,2,3,5,8,10];
b = [0,1,3,4,8,9,10];
k = 3; //indicated number
G = srty(a,b)
H = G(G>k)
disp(H) //Shows a number greater than the given
Если кому будет нужен псевдокод
Код:
Goal: Calculate (A-B)
Input: Set A, Set B;
BEGIN:
    Create Empty Set C to contain (A-B).
    for each element a in Set A:
        if a does not exist in Set B:
            Add a to Set C;
    Return Set C;
END;
SwissMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в реализации проекта, не бесплатно АндрейКол Фриланс 3 27.07.2018 13:59
Помощь в написании курсового проекта Асинхронный FTP под Linux С/C++, C# hugoincer Фриланс 2 07.05.2016 23:29
Помощь в разработке проекта Dux Фриланс 0 21.11.2015 18:25
необходима помощь в программировании в среде Scilab MrLoe Помощь студентам 1 25.01.2015 00:45
нужна помощь в создании проекта elpilasgsm Общие вопросы C/C++ 15 09.04.2009 11:36