-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
144 lines (124 loc) · 4.23 KB
/
main.js
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
function clearExercise(){
document.getElementById("exercise1").innerHTML = "";
}
function addTextToExcercise(newText){
document.getElementById("exercise1").innerHTML = document.getElementById("exercise1").innerHTML + newText;
console.log(newText);
}
function addTextToExcerciseSolution(newText){
addTextToExcercise('<span class="solutionText">Das Ergebnis ist ' + newText +"</span>");
}
function numberSystemExercise(){
var number = randomizer.randomNumber(20,200);
var originBase = randomizer.randomNumber(2, 16);
var originBaseNumber = numberSytems.decimalToBase(number, originBase);
var newBase = randomizer.randFromArray([2, 4, 8, 10, 16]);
while(newBase == originBase){
console.log("doh, that was the same base");
newBase = randomizer.randFromArray([2, 4, 8, 10, 16]);
}
// originBaseNumber = "54";
// originBase = 6;
// newBase = 10;
addTextToExcercise("Die Zahl " + originBaseNumber.toUpperCase() + "<sub>" + originBase + "</sub> soll in eine Zahl umgerechnet werden mit der Basis " + newBase + "<br/>");
addTextToExcerciseSolution(numberSytems.numberWithBaseToBase(originBaseNumber, originBase, newBase).toUpperCase()+"<sub>"+ newBase +"</sub>");
}
function ieeExercise(){
// Rand Number
// TODO decrease the randomnes for 0 - we want more 0s!!!
var n = randomizer.randomNumber(1,100);
// TODO REMOVE!
// n = 0;
// Comma Value
// TODO make functionality to add multiple of these numbers
n = n+randomizer.niceRandomCommaNumber();
// Negative
if(randomizer.randomNumber(1,2) == 1){
n = -n;
}
if(randomizer.randomYesNo()){
addTextToExcercise("Dezimal zu IEEE 754<br/>");
addTextToExcercise(n + "<br/>");
addTextToExcerciseSolution(toIEEE754SingleString(n) + "<br/>");
}else{
addTextToExcercise("IEEE 754 zu Dezimal<br/>");
addTextToExcercise(toIEEE754SingleString(n) + "<br/>");
addTextToExcerciseSolution(n + "<br/>");
}
}
function binExercise(){
// Rand Number
var n = randomizer.randomNumber(1,100);
if(randomizer.randomNumber(1,2) == 1){
n = -n;
}
if(randomizer.randomYesNo()){
addTextToExcercise("Dezimal zu Binär<br/>");
addTextToExcercise(n + "<br/>");
addTextToExcerciseSolution(numberSytems.decimalToBase(n, 2) + "<br/>");
}else{
addTextToExcercise("Binär zu Dezimal<br/>");
addTextToExcercise(numberSytems.decimalToBase(n, 2) + "<br/>");
addTextToExcerciseSolution(n + "<br/>");
}
}
function binCommaExercise(){
// Rand Number
var n = randomizer.randomNumber(1,100);
if(randomizer.randomNumber(1,2) == 1){
n = -n;
}
n = n + randomizer.niceRandomCommaNumber();
if(randomizer.randomYesNo()){
addTextToExcercise("Dezimal zu Binär<br/>");
addTextToExcercise(n + "<br/>");
addTextToExcerciseSolution(numberSytems.decimalToBase(n, 2) + "<br/>");
}else{
addTextToExcercise("Binär zu Dezimal<br/>");
addTextToExcercise(numberSytems.decimalToBase(n, 2) + "<br/>");
addTextToExcerciseSolution(n + "<br/>");
}
}
function twosComplementExercise(bit, max){
// Rand Number
var n = randomizer.randomNumber(1,max);
if(randomizer.randomNumber(1,2) == 1){
n = -n;
}
if(randomizer.randomYesNo()){
addTextToExcercise("Dezimal zu Zweier Komplement<br/>");
addTextToExcercise(n + "<br/>");
addTextToExcerciseSolution(twosComplement(n, bit) + "<br/>");
}else{
addTextToExcercise("Zweier Komplement zu Dezimal<br/>");
addTextToExcercise(twosComplement(n, bit) + "<br/>");
addTextToExcerciseSolution(n + "<br/>");
}
}
function addExerciseTitle(title){
addTextToExcercise("<br/><br/>");
addTextToExcercise("<b>"+title+"</b><br/>");
}
function newExercises(){
clearExercise();
addExerciseTitle("Aufgabe 1a) Binär - Dezimal:");
binExercise();
addExerciseTitle("Aufgabe 1b) Binär - Dezimal mit Komma:");
binCommaExercise();
addExerciseTitle("Aufgabe 2) Zahlensysteme:");
numberSystemExercise();
addExerciseTitle("Aufgabe 3a) Zweierkomplement (8bit):");
twosComplementExercise(8, 100);
addExerciseTitle("Aufgabe 3b) Zweierkomplement (16bit):");
twosComplementExercise(16, 1000);
addExerciseTitle("Aufgabe 4) IEEE 754:");
ieeExercise();
}
function showSolutions(){
var x = document.getElementsByClassName('solutionText');
for (var i = 0; i < x.length; i++) {
x[i].classList.toggle("showSolution");
}
// document.('solutionText').toggleClass("show")
}
newExercises();