Modify input command to automate it?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
In older MATLAB, I was able to write a local input function so I could run code that tested another function that required input. Specifically, I had a subfunction like:
---
function out=input(a)
persistent incount;
if isempty(incount)
incount=1;
elseif incount==7
incount=1;
else
incount=incount+1;
end
if incount<7
out = 250+100*rand(1)
else
out=-1;
end
end
---
works like a dream in, say, 2014b. Seemingly doesn't work at all in 2017. Huge problem since I need my students to be able to run the code to check their work... Any ideas?
4 Kommentare
OCDER
am 3 Okt. 2017
How do you want to use input a? What is incount? Can you provide an example of a student code you want to test if it is correct via this subfunction?
Walter Roberson
am 3 Okt. 2017
Bearbeitet: Walter Roberson
am 3 Okt. 2017
I understand the purpose of the code. The code is intended to substitute for student calls to input(), faking the result of typing for input() statements. The normal parameter to input() is a prompt, which the marker does not care about, so the parameter is ignored.
incount is counting the number of times that input() has been called this way, so as to be able to change the output. Probably the assignment requirements call for the program to terminate when a -1 is read in to the program. However, there is a bug in the program: it will never emit -1. Better would be something like,
function out = input(varargin)
need_str = false;
if nargin > 1 && ischar(varargin{2}) && strcmp(varargin{2}, 's')
need_str = true;
elseif nargin > 1 && ~verlessthan('matlab', '9.1') && isstring(varargin{2}) && varargin{2} == 's'
need_str = true;
elseif nargin > 1
error('Error using input(): second parameter is given but is not ''s''');
end
persistent incount;
if isempty(incount)
incount=1;
out = 250+100*rand(1);
elseif incount==7
incount=1;
out = -1;
else
incount=incount+1;
out = 250+100*rand(1);
end
if need_str
out = num2str(out);
end
end
Antworten (0)
Siehe auch
Kategorien
Mehr zu Whos finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!