Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function task3_2(X)
- % ПУНКТ 2
- % необходимо перемножить элементы массива между первым встретившимся
- % положительным элементом и первым встретившимся отрицательным элементом (включительно)
- X = [0, -2.9, -0.01, -4.915, -15.05, -5, 0.35, -0.364, 67, 0.6, -0.22, -0.192, 1, 0, -0.04, 0.092, -37.6];
- printf(' Входной массив X:\n\n');
- disp(X)
- len = length(X);
- [n1, n2] = findIndecies(X, len);
- y = 1;
- if n1 ~= 0 && n2 ~= 0 && n2 > n1 + 1
- for n = n1:n2-1
- y *= X(n);
- endfor
- endif
- printf('\n Произведение элементов от 1-го отриц. до 1-го полож.: %i\n\n', y);
- endfunction
- function [n1, n2] = findIndecies(X, len) % подпрограмма для процедуры отыскания n1 и n2
- n1 = n2 = 0;
- for i = 1:len
- if n1 == 0
- if X(i) > 0
- break % т.к. индекс положительного элемента должен быть больше индекса отрицательного (по условию n2 > n1 + 1), сначала нужно найти отрицательный:
- endif
- if X(i) < 0
- n1 = i; % нашли первый отрицательный
- continue
- endif
- else % теперь ищем положительный:
- if X(i) > 0
- n2 = i; % нашли первый положительный
- break
- endif
- endif
- endfor
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment