2013-05-13 2 views
1

Что я сделалНаписать программу, которая использует для цикла суммировать все четные целые числа меньше, чем N (MATLAB)

N = input ('N='); 
x = 1:N 

for x= (1:N) 
    if mod(x,2) == 0 
     t = x; 
     b = sum(t) 
    end 
end 

Правильно ли это?

Почему он продолжает давать мне это сообщение об ошибке?

"??? Индекс превышает размеры матрицы

Ошибка в ==> examPractise1 в 7

Ь = сумма (т)."

+0

'B = сумма (A) возвращает суммы вдоль различных размеров с array.' --http : //www.mathworks.com/help/matlab/ref/sum.html Итак, ваш оператор 'b = sum (t)' неверен. – Bill

ответ

3
N = input ('N='); 
b=0; 
for x= (1:N-1) 
    if (mod(x,2) == 0) 
     b=b+x; 
    end 
end 
disp(b); 

Несколько пунктов:

  1. Очистить b в начале вашей программы, иначе предыдущий расчет будет влиять на cu
  2. ко в ой то
  3. Matlab является векторной системой, когда вы сделали 1:N это сделал вектор, такой как [1 2 3 4], когда вы сделали for петли вы действительно 1:(1:N), который сбивает с толку в лучшем случае. Должно быть 1:N.
  4. Не знаю, почему вам нужна переменная t
  5. sum следует заменить стандартной + операции.
  6. Не забывайте, что x будет идти до последнего числа конкретных, и, следовательно, вы должны избегать на самом деле добавления N
Смежные вопросы