aboutsummaryrefslogtreecommitdiffstats
path: root/ee1301/wk3
diff options
context:
space:
mode:
Diffstat (limited to 'ee1301/wk3')
-rw-r--r--ee1301/wk3/hw3_directory/strap012_HW3A.cpp62
-rw-r--r--ee1301/wk3/hw3_directory/strap012_HW3B.cpp65
-rw-r--r--ee1301/wk3/hw3_directory/strap012_HW3C.cpp51
-rw-r--r--ee1301/wk3/lab3/RootBabylon2.cpp40
-rw-r--r--ee1301/wk3/lab3/RootBabylonOG.cpp34
-rw-r--r--ee1301/wk3/lab3/fib.cpp21
-rw-r--r--ee1301/wk3/lab3/gcd.cpp36
-rw-r--r--ee1301/wk3/lab3/multTable.cpp18
-rw-r--r--ee1301/wk3/lab3/mysteryBox.cpp12
-rw-r--r--ee1301/wk3/lab3/primeFactor.cpp26
-rw-r--r--ee1301/wk3/lab3/strap012_lab3_decimal_roman_conv.cpp58
11 files changed, 423 insertions, 0 deletions
diff --git a/ee1301/wk3/hw3_directory/strap012_HW3A.cpp b/ee1301/wk3/hw3_directory/strap012_HW3A.cpp
new file mode 100644
index 0000000..42aae10
--- /dev/null
+++ b/ee1301/wk3/hw3_directory/strap012_HW3A.cpp
@@ -0,0 +1,62 @@
+/*
+27 Feb 2019
+Matthew Strapp
+5449340
+EE1301
+Spring 2019
+Homework 3A
+One-armed Bandit Simulator
+*/
+
+#include <iostream>
+#include <stdlib.h>
+#include <cmath>
+#include <iomanip>
+
+int spin_the_wheels(int d, int w);
+
+int main () {
+ srand(time(NULL));
+ int w, d, winCount, winTest;
+ for (w=3; w<=6; w++) {
+ winCount=0;
+ for (d=9; d<=27; d++) {
+ winCount=0;
+ for (long n=1000000; n>0; n--) { //The simulation is always done 1,000,000 times
+ winTest = spin_the_wheels(d, w);
+ winCount+=winTest;
+ }
+ if (w==6) {
+ std::cout << std::scientific;
+ }
+ std::cout << "w=" << w << ", d=" << d
+ << ": Simulated probability = m/n = " << (winCount / 1000000.0) * 100.0 << "%. "
+ << "Theoretical probability = " << (d / (pow(d, w))) * 100 << "%." << std::endl;
+ d+=2;
+ }
+ }
+}
+
+// Function: spin_the_wheels
+// ---------------------------
+// Simulates the one-armed bandit from the previous HW
+// d: the number of options on the spinner
+// w: the number of spinners
+// returns: Either 1 for win or 0 for loss
+
+int spin_the_wheels(int d, int w) {
+ int spinOG=0, spinNew=0, win=0;
+ spinOG = ( (rand() % d) + 1); //Original spin is always the same
+ w-=1; //The first wheel was spun as spinOG
+ for (int i=0; i<w; i++) {
+ spinNew = ( (rand() % d) + 1);
+ if (spinOG==spinNew) {
+ win++;
+ }
+ }
+ if (win==w) { //The only win condition is if every wheel matches
+ return 1;
+ } else {
+ return 0;
+ }
+} \ No newline at end of file
diff --git a/ee1301/wk3/hw3_directory/strap012_HW3B.cpp b/ee1301/wk3/hw3_directory/strap012_HW3B.cpp
new file mode 100644
index 0000000..16785bd
--- /dev/null
+++ b/ee1301/wk3/hw3_directory/strap012_HW3B.cpp
@@ -0,0 +1,65 @@
+/*
+27 Feb 2019
+Matthew Strapp
+5449340
+EE1301
+Spring 2019
+Homework 3B
+Character Detection
+*/
+
+#include <iostream>
+#include <stdlib.h>
+#include <cmath>
+#include <iomanip>
+
+int charTest (char character);
+
+int main () {
+using namespace std;
+ int test;
+ char character;
+ bool isAlphaNumeric=true;
+ while (isAlphaNumeric) {
+ cout << "Enter a single digit or an alphabetic character: ";
+ cin >> character;
+ cout << "You entered " << character << ", ";
+ test = charTest(character);
+ if (test==0) {
+ isAlphaNumeric=false;
+ cout << "which is not a letter or a number.";
+ }
+ if (test==1) {
+ cout << "which is a number.";
+ }
+ if (test==2) {
+ cout << "which is a lower case letter.";
+ }
+ if (test==3) {
+ cout << "which is an upper case letter.";
+ }
+ cout << endl;
+ }
+}
+
+// Function: charTest
+// ---------------------------
+// Tests to see what kind of character was inputted
+// input: character from prompt in main
+// returns: 1 if number, 2 if lower case, 3 if upper case, 0 if not any of the previous
+
+int charTest (char character) {
+ if (character >= '0' && character <= '9') {
+ return 1;
+ } else {
+ if (character>='a' && character<='z') {
+ return 2;
+ } else {
+ if (character>= 'A' && character<='Z') {
+ return 3;
+ } else {
+ return 0;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/ee1301/wk3/hw3_directory/strap012_HW3C.cpp b/ee1301/wk3/hw3_directory/strap012_HW3C.cpp
new file mode 100644
index 0000000..6886106
--- /dev/null
+++ b/ee1301/wk3/hw3_directory/strap012_HW3C.cpp
@@ -0,0 +1,51 @@
+/*
+27 Feb 2019
+Matthew Strapp
+5449340
+EE1301
+Spring 2019
+Homework 3C
+Character Detection
+*/
+
+#include <iostream>
+#include <stdlib.h>
+#include <cmath>
+#include <iomanip>
+using namespace std;
+
+void swapCase(char s);
+
+int main() {
+ char character;
+ do { //This loops until '@' is entered
+ cout << "Please enter a character that is an ASCII letter in the range [A-Za-z]: ";
+ cin >> character;
+ if (character!='@') {
+ swapCase(character);
+ }
+ } while (character!='@');
+}
+
+// Function: swapCase
+// ---------------------------
+// Swaps the case of a latin ASCII character and prints an error if not one
+// s: the character inputted
+// Outputs: Nothing, the function just outputs the response
+
+void swapCase(char s) {
+ char New;
+ cout << "You entered " << s;
+ if ( (s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') ) {
+ cout << ", I respond with ";
+ if (s >= 'A' && s <= 'Z') {
+ New = s + 32; //32 is the difference between capital and lowercase ASCII characters
+ } else {
+ New= s - 32;
+ }
+ cout << New;
+ } else {
+ cout << ", which is not a valid character.";
+ }
+ cout << endl;
+} \ No newline at end of file
diff --git a/ee1301/wk3/lab3/RootBabylon2.cpp b/ee1301/wk3/lab3/RootBabylon2.cpp
new file mode 100644
index 0000000..1053cab
--- /dev/null
+++ b/ee1301/wk3/lab3/RootBabylon2.cpp
@@ -0,0 +1,40 @@
+#include <iostream>
+#include <iomanip>
+#include <cmath>
+using namespace std;
+
+double gennewGuess(double n, double old_guess) {
+ double real, old;
+ real=sqrt(n);
+ double new_guess = ( old_guess + n / old_guess ) / 2;
+ old=new_guess;
+ if (((new_guess-real)/real)>0.01) { //This will be true if the difference between the real root and guess is more than 1%.
+ // cout << old << endl;
+ return gennewGuess(n, old);
+ } else {
+ // cout << old << endl;
+ return new_guess;
+ }
+}
+int main () {
+ double temp;
+ char cont;
+ do {
+ cout << "enter a value: ";
+ cin >> temp;
+ int n=temp;
+ if (temp<=0) {
+ cout << "Please enter a valid input(Positive Integer)." << endl;
+ return sqrt(-1);
+ }
+ //cout << "Guessing..." << endl;
+ temp = gennewGuess(temp, 1.0);
+ cout << fixed << setprecision(0) << "square root of " << n << " is " << temp << endl
+ << "continue? (y/n): ";
+ cin >> cont;
+ if (cont!='n'&&cont!='y') {
+ return -1;
+ }
+} while (cont!='n');
+ // << "Actual Value: " << real << endl;
+}
diff --git a/ee1301/wk3/lab3/RootBabylonOG.cpp b/ee1301/wk3/lab3/RootBabylonOG.cpp
new file mode 100644
index 0000000..530a1bf
--- /dev/null
+++ b/ee1301/wk3/lab3/RootBabylonOG.cpp
@@ -0,0 +1,34 @@
+#include <iostream>
+#include <cmath>
+using namespace std;
+
+double gennewGuess(double n, double old_guess) {
+ double new_guess = ( old_guess + ( n / old_guess ) ) / 2;
+ return new_guess;
+ }
+
+double BabylonRoot(double n) {
+ double real, guess=1; //Initial guess is set to 1
+ real=sqrt(n);
+ do {
+ guess = gennewGuess(n,guess);
+ cout << guess << endl;
+ } while (abs(guess-real)/real>0.01); //Keep guessing unitl within 1% of the actual square root
+ return guess;
+}
+
+int main () {
+ double n, guess;
+ cout << "Enter the Number to find square root: ";
+ cin >> n;
+ if (n<=0) {
+ cout << "Please enter a valid input(Positive Integer)." << endl;
+ return 2;
+ }
+ cout << "Guessing..." << endl;
+ double real=sqrt(n);
+ guess = BabylonRoot(n);
+ cout << "The Final Guess: " << guess << endl
+ << "Actual Value: " << real << endl;
+ return 0;
+} \ No newline at end of file
diff --git a/ee1301/wk3/lab3/fib.cpp b/ee1301/wk3/lab3/fib.cpp
new file mode 100644
index 0000000..57be3a2
--- /dev/null
+++ b/ee1301/wk3/lab3/fib.cpp
@@ -0,0 +1,21 @@
+#include <iostream>
+using namespace std;
+int main()
+{
+ unsigned long long fib1=0, fib2=1, count, fib3=1;
+ cout << "How many Fibonacci numbers should be computed? ";
+ cin >> count;
+ bool firstRun=true;
+ for (int i=1; i<(count+1); i++) {
+ if (!firstRun) { //The contents are run when i is not 1.
+ fib3=fib1+fib2;
+ fib1=fib2;
+ fib2=fib3;
+ }
+ firstRun=false;
+ cout << fib3 << " ";
+ if (i%10==0 && i!=0)
+ cout << endl;
+ }
+ cout << endl;
+}
diff --git a/ee1301/wk3/lab3/gcd.cpp b/ee1301/wk3/lab3/gcd.cpp
new file mode 100644
index 0000000..4e127d9
--- /dev/null
+++ b/ee1301/wk3/lab3/gcd.cpp
@@ -0,0 +1,36 @@
+#include <iostream>
+#include <cmath>
+using namespace std;
+
+int GCD(int a, int b) {
+ int gcd=1;
+ a=abs(a); b=abs(b);
+ if (a>b) {
+ //do nothing
+ } else {
+ if (b>a) {
+ int foo=a; a=b; b=foo;
+ } else {
+ return -1;
+ }
+ }
+ gcd=(a%b);
+ while (gcd!=0) {
+ return GCD(b,gcd);
+ }
+ return b;
+
+}
+int main () {
+ int a=0, b=0;
+ char cont;
+ do {
+ cout << "enter two integer values: ";
+ cin >> a >> b;
+ cout << "greatest common divisor is: " << GCD(a,b) << endl;
+ cout << "continue? (y/n): ";
+ cin >> cont;
+ cout << endl;
+ } while (cont!='n');
+
+}
diff --git a/ee1301/wk3/lab3/multTable.cpp b/ee1301/wk3/lab3/multTable.cpp
new file mode 100644
index 0000000..4253980
--- /dev/null
+++ b/ee1301/wk3/lab3/multTable.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+using namespace std;
+int main() {
+ int r=1, c=1;
+ for (r; r<=10; r++) {
+ for (c=10; c>0; c--) {
+ int ans = r*c;
+ if (ans!=100) {
+ cout << " ";
+ }
+ if (ans<10) {
+ cout << " ";
+ }
+ cout << ans;
+ }
+ cout << endl;
+ }
+}
diff --git a/ee1301/wk3/lab3/mysteryBox.cpp b/ee1301/wk3/lab3/mysteryBox.cpp
new file mode 100644
index 0000000..c1aefee
--- /dev/null
+++ b/ee1301/wk3/lab3/mysteryBox.cpp
@@ -0,0 +1,12 @@
+#include <iostream>
+using namespace std;
+
+int main () {
+ int sum = 0;
+ for(int i=0; i<=100; i++)
+ {
+ if(i % 7 == 0)
+ sum++;
+ }
+cout << sum;
+}
diff --git a/ee1301/wk3/lab3/primeFactor.cpp b/ee1301/wk3/lab3/primeFactor.cpp
new file mode 100644
index 0000000..093a0be
--- /dev/null
+++ b/ee1301/wk3/lab3/primeFactor.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <cmath>
+using namespace std;
+
+void factorFinder (unsigned long long n) {
+ unsigned long long i=2;
+ while (pow(i,2)<=n) {
+ if (n%i==0) {
+ cout << i << "*";
+ n/=i;
+ } else {
+ i++;
+ }
+ }
+ if (n>1) {
+ cout << n << endl;
+ }
+}
+
+int main () {
+ unsigned long long n;
+ cout << "Input a positive integer: ";
+ cin >> n;
+ cout << "Factors: ";
+ factorFinder(n);
+}
diff --git a/ee1301/wk3/lab3/strap012_lab3_decimal_roman_conv.cpp b/ee1301/wk3/lab3/strap012_lab3_decimal_roman_conv.cpp
new file mode 100644
index 0000000..f6aa568
--- /dev/null
+++ b/ee1301/wk3/lab3/strap012_lab3_decimal_roman_conv.cpp
@@ -0,0 +1,58 @@
+//Matthew Strapp
+//5449340
+//20 February 2018
+//Lab 3 Workout
+
+#include <iostream>
+using namespace std;
+int main () {
+ int decimal;
+ cout << "Enter an integer value from 1 to 999: ";
+ cin >> decimal;
+ if (decimal<1 || decimal>999) {
+ cout << " Invalid Input. Program terminated." << endl;
+ return 1453;
+ } else {
+ cout << "Roman numeral equivalent: ";
+ while (decimal!=0) {
+ if (decimal>900 && decimal<1000) {
+ cout << "CM"; decimal-=900;
+ }
+ if (decimal>=500 && decimal<900) {
+ cout << "D"; decimal-=500;
+ }
+ if (decimal>=400 && decimal<500) {
+ cout << "CD"; decimal-=400;
+ }
+ if (decimal>=100 && decimal<400) {
+ cout << "C"; decimal-=100;
+ }
+ if (decimal>=90 && decimal<100) {
+ cout << "XC"; decimal-=90;
+ }
+ if (decimal>=50 && decimal<90) {
+ cout << "L"; decimal-=50;
+ }
+ if (decimal>=40 && decimal<50) {
+ cout << "XL"; decimal-=40;
+ }
+ if (decimal>=10 && decimal<40) {
+ cout << "X"; decimal-=10;
+ }
+ if (decimal==9) {
+ cout << "IX"; decimal-=9;
+ }
+ if (decimal>=5 && decimal<9) {
+ cout << "V"; decimal-=5;
+ }
+ if (decimal==4) {
+ cout << "IV"; decimal-=4;
+ }
+ if (decimal>=1 && decimal<4) {
+ cout << "I"; decimal-= 1;
+ }
+ }
+ }
+ cout << endl;
+ return 0;
+}