Advertisement
sashachca

задание 3 (пункт 3)

Jun 16th, 2018
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.78 KB | None | 0 0
  1. function task3_3(X)
  2.  
  3.     % ПУНКТ 3
  4.  
  5.   X = [-2.9, 0.01, 4.915, -15.05, 0, -0.35, -0.364, 67, 0.6, -0.22, -0.192, 1, 0, -0.04, 0.092, -37.6, 0];
  6.   len = length(X);
  7.  
  8.   printf(' Входной массив X:\n\n');
  9.   disp(X);
  10.  
  11.   k = 0;
  12.   for i = 1:len
  13.     ifNotZero(X(i)); % формируем массив из ненулевых элементов и при этом подсчитываем количество нулей
  14.   endfor
  15.  
  16.   X = sorting(Y, len-k); % сортируем массив из ненулевых элементов
  17.  
  18.   while k > 0
  19.     X = [0, X]; % добавляем столько нулей в начало отсортированного массива X, сколько насчитали функцией ifNotZero
  20.     k -= 1;
  21.   endwhile
  22.  
  23.   printf('\n Отсортированный массив X с нулями в начале:\n\n');
  24.   disp(X);
  25.  
  26.  
  27.   %___________________________________________________________________
  28.    
  29.   function ifNotZero(x) % т.к. эта функция объявляется внутри основной фукнции, передавать Y и k необязательно
  30.  
  31.     if x ~= 0
  32.       Y(end+1) = x; % Y - массив, наполняющийся ненулевыми элементами
  33.     else
  34.       k += 1; % считаем количество нулей
  35.     endif
  36.  
  37.   endfunction
  38.  
  39.   %___________________________________________________________________
  40.  
  41. endfunction
  42.  
  43.  
  44. function X = sorting(X, len) % сортировка пузырьком; на вход: массив и его длина
  45.  
  46.   for j = 1:len-1
  47.     for i = 1:len-1
  48.       if X(i) > X(i+1)
  49.         temp = X(i);
  50.         X(i) = X(i+1);
  51.         X(i+1) = temp;
  52.       endif
  53.     endfor
  54.   endfor
  55.  
  56.  
  57. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement