-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWhile3.pg
More file actions
89 lines (66 loc) · 2.3 KB
/
While3.pg
File metadata and controls
89 lines (66 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
##DESCRIPTION
## This problem is meant to have students write brief pieces of code to solve problems that have a specific numerical answer.
##ENDDESCRIPTION
##KEYWORDS('programming', 'code')
## DBsubject('Programming')
## DBchapter('')
## DBsection('')
## Date('6/7/2016')
## Author('')
## Institution('')
## TitleText1('')
## EditionText1('')
## AuthorText1('')
## Section1('')
## Problem1('')
########################################################################
DOCUMENT();
loadMacros(
"PG.pl",
"PGauxiliaryFunctions.pl",
"PGbasicmacros.pl",
"PGchoicemacros.pl",
"MathObjects.pl",
"problemRandomize.pl",
"PGanswermacros.pl",
"PGgraphmacros.pl",
"PGnumericalmacros.pl",
"PGstatisticsmacros.pl",
"answerHints.pl"
);
TEXT(beginproblem());
$showPartialCorrectAnswers = 1;
# How many attempts before a hint?
$showHint = 10;
#Allow the student to generate a new (re-randomized) problem
#AFTER they have submitted a correct answer.
ProblemRandomize(onlyAfterDue=>0);
##############################################################
$N0 = random(60,95);
$x = random(0.0001,0.0009,0.0001);
$n = $N0;
while (abs(50-$n) > $x){
if($n > 100) {$n = $n/2}
else {$n = $n + 50};
}
##############################################################
#
# Text
#
#
Context()->texStrings;
BEGIN_TEXT
Consider a mathematical process where we take a number, and if it is larger than 100, we divide it by two, while if it is equal to or smaller than 100, we add 50. Then we do this process again and again. For example if we start with 90, this is smaller than 100, so we add 50 to get 140. Then because 140 is larger than 100, we divide this by 2, and get 70. Then because 70 is smaller than 100 we add 50 to get 120. Then because 120 is larger than 100, we divide this by 2 and get 60. Then because 60 is less than 100 we add 50 and get 110.
$PAR
Write MATLAB program that starts with the number $N0 and follows this procedure. Have your program continue this process until we have a number that is within $x of 50. What number do we end up with? In other words, if we continue this process, what is the first number that we get which is less than $x away from 50?
$PAR
\{ans_rule(15)\}
$PAR
END_TEXT
ANS(num_cmp($n,tol=>$x/10));
##############################################################
#
# Answers
#
#
ENDDOCUMENT();