Cannot calculate with Dynamic variables
- To: mathgroup at smc.vnet.net
- Subject: [mg128735] Cannot calculate with Dynamic variables
- From: Reinhard Simonovits <Reinhard.Simonovits at uni-graz.at>
- Date: Wed, 21 Nov 2012 19:51:15 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
Hi, I have a problem with Dynamic variables. This is a prototype of a grading scheme. In reality it is bigger. The 10 pts in initPtsPartAcome from the school. The output cell should be deployed as a CDF file for the teacher. The teacher enters the points of the students and gets a final mark. I have two questions. 1) How can I limit the InputField to allow for integer numbers between 0 and 10? If I enter anything else, say a negative number or a symbol, it should be cleared automatically. 2) In "Why don't the calculations work?" you see expressions with Dynamic variables which I need to work with. What is wrong? What is the solution? DynamicModule[ {mark4 = 1/3, mark3 = 0.51, mark2 = 0.68, mark1 = 0.80, initPtsPartA = { {10, 8, 10, 6}, {10, 5, 10, 5}, {10, 7, 10, 1}}, initPtsStudent, initPtsSchool, initPtsPartSum, numTable, SchoolAPts, StudentAPts, StudentMinAchieved }, numTable[x_, y_ /; OddQ[y]] := initPtsPartA[[x, y]]; numTable[x_, y_ /; EvenQ[y]] := InputField[Dynamic@initPtsPartA[[x, y]], Number, ContinuousAction -> True, FieldSize -> 1]; initPtsPartSum[x_, y_, col_] := Dynamic@Total[initPtsPartA[[x ;; y, col]]]; SchoolAPts = (Total[initPtsPartA[[1 ;; 3, #]]] &) /@ {1, 3}; StudentAPts = (initPtsPartSum[1, 3, #] &) /@ {2, 4}; Column[{Grid[ Append[ Array[numTable, {3, 4}], (initPtsPartSum[1, 3, #] &) /@ Range[4]]], {"Just Testing Values:", initPtsPartSum[1, 3, 1], initPtsPartSum[1, 3, 2], initPtsPartSum[1, 3, 3], initPtsPartSum[1, 3, 4], "Student Pts only:", StudentAPts}, {"Why don't the calculations work?", Dynamic[5*initPtsPartSum[1, 3, 2] + 10], Dynamic[initPtsPartSum[1, 3, 4] > 30], Dynamic[ Total[(initPtsPartSum[1, 3, #] &) /@ Range[4]] ], Dynamic[(Total@StudentAPts)]/(Total@SchoolAPts)}, {"Why don't the calculations work?", StudentMinAchieved = Dynamic[(StudentAPts[[1]]/SchoolAPts[[1]] > mark4) && (StudentAPts[[2]]/SchoolAPts[[2]] > mark4)]} }] ] Liebe Grüße, Best wishes, Reinhard -- ********************************************************* Dr. Reinhard Simonovits Handelsakademie | Karl Franzens University Math Department | Inst. for Mathematics Grazbachgasse 71 | Heinrichstrasse 36 A-8010 Graz, Austria Email: Reinhard.Simonovits at uni-graz.at ************************************************************