Professional Documents
Culture Documents
Class Projects 181
Class Projects 181
//Project: P0118a
//Date: Jan. 18, 2018
//Author:
//Purpose:
class Point {
double x, y;
class Line {
Point p1, p2;
class LineSeg {
Point p1, p2;
class Circle {
class Rectangle {
class Triangle {
if (n12*n23*n31 == 0)
return true;
return (n12 == n23 && n23 == n31);
}
//Course: CSC191
//Project: P0125a
//Date: Jan. 25, 2018
//Author:
//Purpose:
import java.util.Scanner;
import java.util.Random;
public class P0125a {
static void loopCount(int n) {
int cnt = 0;
for (int i = 1; i <= n; i++)
cnt++;
System.out.println(cnt); //100
cnt = 0;
for (int i = 1; i <= n; i*=2)
cnt++;
System.out.println(cnt); //7
//i = 1, 2, 4, 8, 16, 32, 64
cnt = 0;
for (int i = 2; i <= n*n; i*=i)
cnt++;
System.out.println(cnt); //4
//i = 2, 4, 16, 256
cnt = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cnt++;
System.out.println(cnt); //10000
cnt = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= i; j++)
cnt++;
System.out.println(cnt); //10000
//i j reps
//1 1 - 1 1
//2 1 - 2 2
//3 1 - 3 3
//
//100 1 - 100 100
cnt = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= i; j*=2)
cnt++;
System.out.println(cnt); //10000
//i j reps
//1 1 1
//2 1, 2 2
//3 1, 2 2
//4 1,2,4 3
//5 1,2,4 3
//6
//7
//8 1,2,4,8 4
//100 1 - 100 100
cnt = 0;
for (int i = 1; i <= n; i*=2)
for (int j = 1; j <= i; j++)
cnt++;
System.out.println(cnt); //10000
//i j reps
//1 1 1
//2 1, 2 2
//4 1-4 4
//8 1-8 8
//16 1-16 16
//32 32
//64 64
}
//Fibonacci numbers
//1,1,2,3,5,8,13,21,34,50,...
static int getFibo(int n){
int f1 = 1, f2 = 1, f3 = 1;
for (int i = 3; i <= n; i++) {
f3 = f1+f2;
f1 = f2;
f2 = f3;
}
return f3;
}
//check if n is a power of 2
static boolean isPow(int n) {
while (n > 1) {
if (n%2 == 1)
return false;
n /= 2;
}
return true;
}
//check if n is a prime
static boolean isPrime(int n) {
int sq = (int)Math.sqrt(n);
for (int p = 2; p <= sq; p++)
if (n%p == 0)
return false;
return true;
}
//check if n is a prime
static boolean isPalin(String s) {
int n = s.length();
for (int i = 0; i < n/2; i++)
if (s.charAt(i) != s.charAt(n-1-i))
return false;
return true;
}
//decimal to binary
static String dToB(int n) {
String r = "";
while (n > 0) {
r = n%2 + r; //r += n%2 won't work
n /= 2;
}
return r;
}
//binary to decimal
static int bToD(String b) {
int r = 0;
for (int i = 0; i < b.length(); i++)
r = r*2 + (b.charAt(i)-'0');
return r;
}
//octal to decimal
static int oToD(String b) {
int r = 0;
for (int i = 0; i < b.length(); i++)
r = r*8 + (b.charAt(i)-'0');
return r;
}
//decimal to Hexa
static String dToH(int n) {
String r = "";
while (n > 0) {
//10 -> A
//11 -> B
//12 -> C
//13 -> D
//14 -> E
//15 -> F
int t = n%16;
if (t < 10)
r = t + r;
else
r = (char)(t-10+'A') + r;
n /= 16;
}
return r;
}
if (c > 0)
h3 = c+h3;
return h3;
}
//run-length coding
//if s = "abbbbbbbbccd", r = "ab8ccd"
static String compress(String s) {
String r= "";
char ch = s.charAt(0);
int cnt = 1;
for (int i = 1; i < s.length(); i++)
if (s.charAt(i) == ch)
cnt++;
else {
if (cnt == 1)
r += ch;
else if (cnt == 2)
r = r + ch + ch;
else
r = r + ch + cnt;
ch = s.charAt(i);
cnt = 1;
}
if (cnt == 1) //last char
r += ch;
else if (cnt == 2)
r = r + ch + ch;
else
r = r + ch + cnt;
return r;
}
//encode
//p = "abc xyz" and key = "bbc" changed to
//c = "abc xyz"
//k = "bbcbbcb"
//c = "cdfbzaa"
//evalAS
//123-45+6+78-31
//1-2-3
static int evalAS(String e) {
int r = 0, n = 0;
char op = '+';
for (int i = 0; i < e.length(); i++) {
if (e.charAt(i) >= '0' && e.charAt(i) <= '9')
n = n*10 + (e.charAt(i)-'0');
else {
if (op == '+')
r += n;
else
r -= n;
n = 0;
op = e.charAt(i);
}
}
if (op == '+')
r += n;
else
r -= n;
return r;
}
//evalAS
//123/45*6*78/31
//12/2/3
static int evalMD(String e) {
int r = 1, n = 0;
char op = '*';
for (int i = 0; i < e.length(); i++) {
if (e.charAt(i) >= '0' && e.charAt(i) <= '9')
n = n*10 + (e.charAt(i)-'0');
else {
if (op == '*')
r *= n;
else
r /= n;
n = 0;
op = e.charAt(i);
}
}
if (op == '*')
r *= n;
else
r /= n;
return r;
}
//+, -, *, / but no (, )
//12*4/10-5*60+25/6-20
static int evalE(String e) {
int r = 0;
String n = "";
char op = '+';
for (int i = 0; i < e.length(); i++) {
if (e.charAt(i) == '+' || e.charAt(i) == '-') {
if (op == '+')
r += evalMD(n);
else
r -= evalMD(n);
n = "";
op = e.charAt(i);
}
else
n += e.charAt(i);
}
if (op == '+')
r += evalMD(n);
else
r -= evalMD(n);
return r;
}
/*
//loopCount(100);
System.out.println(fact1(600));
System.out.println(fact2(600));
System.out.println(getGcd(105, 60));
System.out.println(getGcd(60, 105));
System.out.println(dToH(15));
System.out.println(dToH(16));
*/
//System.out.println(addH("567", "99"));
//System.out.println(addH("", "12"));
//System.out.println(addH("FFFF", "FF"));
System.out.println(mulH("567", "99"));
System.out.println(mulH("1AF", "1"));
System.out.println(mulH("FFFF", "FF"));
}
}
/*
course: CSC190
project: P0213a
date: 2/13/18
author: (your name)
purpose: arrays
*/
import java.util.Scanner;
import java.util.Random;
class MyArray {
final int MAXSIZE = 10;
int a[];
int n;
MyArray() {
a = new int[MAXSIZE];
n = 0;
}
void readA() {
Scanner in = new Scanner(System.in);
n = 0;
System.out.print("Enter a positive integer(-1 to stop): ");
int key = in.nextInt();
while (key > 0) {
a[n++] = key;
if (n >= MAXSIZE) {
System.out.println("array full...");
break;
}
System.out.print("Enter a positive integer(-1 to stop): ");
key = in.nextInt();
}
}
void generateA() {
Random rnd = new Random();
n = rnd.nextInt(MAXSIZE)+1;
for (int i = 0; i < n; i++)
a[i] = rnd.nextInt(100);
}
void printA() {
for (int i = 0; i < n; i++)
System.out.print(a[i]+" ");
System.out.println();
}
int maxA() {
int max = a[0];
for (int i = 1; i < n; i++)
if (a[i] > max)
max = a[i];
return max;
}
//how to find the 2nd largest number
void reverseA() {
//a[0], a[n-1]
//a[1], a[n-2]
//.
//a[n/2-1], a[ ]
for (int i = 0; i < n/2; i++) {
int t = a[i];
a[i] = a[n-1-i];
a[n-1-i] = t;
}
}
void rotateA() {
Scanner in = new Scanner(System.in);
String res;
do {
System.out.println("l. to left: ");
System.out.println("r. to right: ");
res = in.next();
switch (res.charAt(0)) {
case 'l': case 'L':
rotateL();
break;
case 'r': case 'R':
rotateR();
break;
}
} while (res.toLowerCase().charAt(0) != 'm');
}
//rotate left
//a = 1,2,3,4,5
//a = 2,3,4,5,1 after rotate left
void rotateL() {
int t = a[0];
for (int i = 1; i < n; i++)
a[i-1] = a[i];
a[n-1] = t;
}
//rotate right
//a = 1,2,3,4,5
//a = 5,1,2,3,4 after rotate right
void rotateR() {
int t = a[n-1];
for (int i = n-2; i <= 0; i--)
a[i+1] = a[i];
a[0] = t;
}
void bubble() {
for (int stage = n-2; stage >= 0; stage--) {
boolean isSwap = false;
for (int i = 0; i <= stage; i++)
if (a[i] > a[i+1]) {
isSwap = true;
int t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
if (!isSwap)
break;
}
}
//2 5 4 1 6 3
//2 5 4 1 6 3 after inserting 5
//2 4 5 1 6 3 after inserting 4
//1 2 4 5 6 3 after inserting 1
//1 2 4 5 6 3 after inserting 6
//1 2 3 4 5 6 after inserting 3
//2 5 4 1 6 3
//2 5 4 1 3 6
//2 3 4 1 5 6
//2 3 1 4 5 6
//2 1 3 4 5 6
//1 2 3 4 5 6
void selection() {
for (int stage = n-1; stage >= 1; stage--) {
int maxInd = 0;
for (int i = 1; i <= stage; i++)
if (a[i] > a[maxInd])
maxInd = i;
//swap a[maxInd] and a[n-1]
int t = a[maxInd];
a[maxInd] = a[stage];
a[stage] = t;
}
}
boolean isSorted() {
for (int i = 0; i <= n-2; i++)
if (a[i] > a[i+1])
return false;
return true;
}
void sortA() {
Scanner in = new Scanner(System.in);
String res;
do {
System.out.println("b. bubble sort: ");
System.out.println("i. insertion sort: ");
System.out.println("s. selection sort: ");
res = in.next();
switch (res.charAt(0)) {
case 'b': case 'B':
bubble();
break;
case 'i': case 'I':
insertion();
break;
case 's': case 'S':
//selection();
break;
}
} while (res.toLowerCase().charAt(0) != 'm');
}
return -1;
}
String res;
do {
System.out.println("s. sequential search: ");
System.out.println("b. binary search: ");
System.out.println("select: ");
res = in.next();
switch (res.charAt(0)) {
case 's': case 'S':
System.out.print("Enter a key: ");
int key = in.nextInt();
int p = sequential(key);
if (p == -1)
System.out.println(key+" not found!");
else
System.out.println(key+" found at "+p);
break;
case 'b': case 'B':
if (!isSorted()) {
System.out.println("array not presorted!!!");
break;
}
System.out.print("Enter a key: ");
key = in.nextInt();
p = binary(key);
if (p == -1)
System.out.println(key+" not found!");
else
System.out.println(key+" found at "+p);
break;
}
} while (res.toLowerCase().charAt(0) != 'm');
}
}
int n;
String res;
do {
System.out.println("1. read array: ");
System.out.println("2. generate array: ");
System.out.println("3. print array: ");
System.out.println("4. max: ");
System.out.println("5. reverse array: ");
System.out.println("6. rotate array: ");
System.out.println("7. sort array: ");
System.out.println("8. search array: ");
System.out.println("select: ");
res = in.next();
switch (res.charAt(0)) {
case '1':
ma.readA();
break;
case '2':
ma.generateA();
break;
case '3':
ma.printA();
break;
case '4':
System.out.println("max = "+ma.maxA());
break;
case '5':
ma.reverseA();
break;
case '6':
ma.rotateA();
break;
case '7':
ma.sortA();
break;
case '8':
ma.searchA();
break;
}
} while (res.toLowerCase().charAt(0) != 'q');
}
}
/*
course: CSC191
project: P0213b
date: 2/13/18
author: (your name)
purpose: 2d arrays
*/
import java.util.Scanner;
import java.util.Random;
class My2DArray {
final int MAXROW = 10;
final int MAXCOL = 10;
int a[][];
int nR, nC;
My2DArray() {
a = new int[MAXROW][MAXCOL];
nR = nC = 0;
}
void readA() {
Scanner in = new Scanner(System.in);
System.out.print("number of rows: ");
nR = in.nextInt();
System.out.print("number of cols: ");
nC = in.nextInt();
void generateA() {
Random rnd = new Random();
nR = rnd.nextInt(MAXROW)+1;
nC = rnd.nextInt(MAXCOL)+1;
for (int r = 0; r < nR; r++)
for (int c = 0; c < nC; c++)
a[r][c] = rnd.nextInt(100);
void printA() {
for (int r = 0; r < nR; r++) {
for (int c = 0; c < nC; c++)
System.out.printf("%4d", a[r][c]);
System.out.println();
}
}
//a
//1 2 3
//4 5 6
//7 8 9
//matrix multiplication
//magic square
void rotateR() {
for (int c = 0; c < nC; c++) {
int t = a[0][c];
for (int r = 1; r < nR; r++)
a[r-1][c] = a[r][c];
a[nR-1][c] = t;
}
}
void transpose() {
if (nR != nC)
return;
for (int r = 0; r < nR; r++)
for (int c = r+1; c < nC; c++) {
//switch a[r][c] with a[c][r]
int t = a[r][c];
a[r][c] = a[c][r];
a[c][r] = t;
}
}
// 1 2 3 4 1 2 50 60
// 5 6 7 8 * 3 4 = ?? ??
// 9 10 11 12 5 6 ?? ??
// 7 8
}
return m3;
}
void getMagicSquare(int n) {
if (n%2 == 0)
return;
nR = nC = n;
int r = 0, c = n/2;
a[r][c] = 1;
for (int i = 2; i <= n*n; i++) {
a[r][c] = i;
}
}
myA.readA();
myA.printA();
myA1.readA();
myA1.printA();
//myA.transpose();
myA.multiply(myA, myA1).printA();
//myA.printA();
}
}