Re: Redirecting input

*To*: mathgroup at smc.vnet.net*Subject*: [mg92419] Re: Redirecting input*From*: David Bailey <dave at Remove_Thisdbailey.co.uk>*Date*: Tue, 30 Sep 2008 21:49:25 -0400 (EDT)*References*: <gbl2vp$m00$1@smc.vnet.net> <gbnph9$psa$1@smc.vnet.net> <gbqct3$e91$1@smc.vnet.net>

Ignacio Plazeta wrote: >> This is one of those questions where I feel it would be helpful to know >> more about what you are doing. > > Dear Friends > > I'm developing a package for math exams. > You are asked, by example, : > "What's the derivative of Sin[x] ?" > and answering > > "Cos[x] Enter" > > is nicer than > > "myAnswer[ Cos[x] ] Enter". > > Many thanks for your replies. > > Ignacio Plazeta > > Set up a data structure containing your entire exam: exam = {{"2+2", 4}, {"Derivative of Sin[x]", Cos[x]}, {"Derivative of Cos[x]", -Sin[x]}}; Now define a function that asks a question: ask[pair_] := Module[{answer}, answer = Input[pair[[1]]]; If[answer == pair[[2]], correctAnswers++;] ]; Finally, apply this function to each question-answer pair in turn: correctAnswers = 0; Map[ask, exam]; MessageDialog[StringForm["`` correct answers", correctAnswers]] Note that this is a very simple setup - you could elaborate it in all sorts of ways - such as creating a single GUI window to perform the whole exam - but this is a reasonable starting point. One important point is that the definition of the questions has been totally separated from the code that asks the questions. David Bailey http://www.dbaileyconsultancy.co.uk