Borrar filtros
Borrar filtros

Calculating the maintenance costs over (x) amount of years

3 visualizaciones (últimos 30 días)
Matthew Abarca
Matthew Abarca el 22 de Nov. de 2014
Respondida: Matthew Abarca el 23 de Nov. de 2014
Hey forum This is my first time using Mat-lab and the forums. I have been having trouble with both the conceptual aspect, Mat-lab syntax and the debugging the final solution the problem.
The question is asked as follows
A machine requires $2,000 in maintenance every 2 years, $3,500 maintenance every 5 years, and a major overhaul costing $11,300 every 7 years. Use a for-loop to determine the accumulated maintenance costs of the machine over the next x years. Assume that you are starting at Year 0 (i.e. first expense occurs at Year 2). Ex. accumYears(5) = 7500
Here is my attempt at a solution function
function sum = accumYears(x)
for i = 1:1:x
[q, r] = quorem(i,sym(2));
if r == 0
a(i) = 2000;
end
[q, r] = quorem(i,sym(5));
if r == 0
a(i) = a(i) + 5000;
end
[q, r] = quorem(i,sym(7));
if r == 0
a(i) = a(i) + 11300;
end
end
sum = sum(a);
end
I receive the error Undefined function or variable "sum".
Error in faccumYears (line 16) sum = sum(a);

Respuestas (2)

MA
MA el 22 de Nov. de 2014
sum is a built-in matlab function, you should name your function or matric something else like cost
cost = accumYears(x)
cost = sum(a)

Matthew Abarca
Matthew Abarca el 23 de Nov. de 2014
I've tried the suggested changes and part of the test suite returns fail. On Matlab the code works until the next if statement nested in the for loop. I've recently learned about the mod function but would still like to better understand the quorem function. Why does the second input have to be sym(n) instead of just integer n. This is the error I receive when running the code:
Attempted to access a(5); index out of bounds because numel(a)=4.
Error in accumYears (line 9) a(i) = a(i) + 5000;
As a side note, the sum as output was placed there by default for the course and it seems to be during a week where the profs were tired of students hacking the test suites so a new test suit was added to detect cheating.
code
function cost = accumYears(x)
for i = 1:x
[q, r] = quorem(i,sym(2));
if r == 0
a(i) = 2000;
end
[q, r] = quorem(i,sym(5));
if r == 0
a(i) = a(i) + 5000;
end
[q, r] = quorem(i,sym(7));
if r == 0
a(i) = a(i) + 11300;
end
end
cost = sum(a);
end

Categorías

Más información sobre Data Import and Analysis en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by