2014-02-01 5 views
1

Я студент-студент первого курса и не могу заставить свою функцию работать правильно. Я получаю нераскрытые ошибки и не знаю почему.Алгоритм сортировки пузырьков - Scilab

У меня было это работает, но он не отобразил список в конце или разрешил мне использовать% T и% F для моей логической переменной escape.

Любые мысли?

function x=sort(n,y); 
disp("Enter numbers"); 
for i = 1:n 
    x(i) = input(''); 
end 

escape = 0; 

if y == 1 then 
    while escape == 0 
     escape = 1; 
     for i = 1:n 
      if x(i+1) < x(i) then 
       temp = x(i); 
       x(i) = x(i+1); 
       x(i+1) = temp; 
       escape = 0; 
      end 
     end 
    end 
end 

if y == 2 then 
    while escape == 0 
     escape = 1; 
     for i == 1:n 
      if x{i+1} > x{i} then 
       temp = x{i}; 
       x{i} = x{i+1}; 
       x{i+1} = temp; 
       escape = 0; 
      end 
     end 
    end 
end 

disp(x(:)); 
endfunction; 

a=input("Enter the number of values to sort: "); 
b=input("Enter 1 for ascending, 2 for descending: ") 
disp(sort(a,b)); 

ответ

0

Это, вероятно, потому, что у вас есть неправильный синтаксис на разных местах (дополнительную запятая, == оператора вместо = оператора для постановки, {} кронштейна где () кронштейны должны быть, и т.д.). Кроме того ваш for цикл должен быть от 1 к n-1, чтобы избежать ошибки «неверный индекс»

function x=sort(n,y) 
disp("Enter numbers") 
for i = 1:n 
    x(i) = input('') 
end 

escape = %f 

if y == 1 then 
    while escape == %f 
     escape = %t 
     for i = 1:n-1 
      if x(i+1) < x(i) then 
       temp = x(i) 
       x(i) = x(i+1) 
       x(i+1) = temp 
       escape = %f 
      end 
     end 
    end 
end 

if y == 2 then 
    while escape == %f 
     escape = %t 
     for i = 1:n-1 
      if x(i+1) > x(i) then 
       temp = x(i) 
       x(i) = x(i+1) 
       x(i+1) = temp 
       escape = %f 
      end 
     end 
    end 
end 

endfunction 

a=input("Enter the number of values to sort: ") 
b=input("Enter 1 for ascending, 2 for descending: ") 
disp(sort(a,b)) 
+0

Вы прекрасный человек. Я только начал использовать Scilab вчера для проекта, потратив годы на Pascal и Java, это неудобный переход. – Ben

Смежные вопросы