0% found this document useful (0 votes)
13 views

Oopj Assignment

The document discusses a problem involving self-driven marbles moving in concentric circular tracks. It presents the problem, provides code to simulate the marbles' positions over time in both clockwise and counter-clockwise directions, and considers the conditions under which the marbles would fall in the same line.

Uploaded by

garka7795
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Oopj Assignment

The document discusses a problem involving self-driven marbles moving in concentric circular tracks. It presents the problem, provides code to simulate the marbles' positions over time in both clockwise and counter-clockwise directions, and considers the conditions under which the marbles would fall in the same line.

Uploaded by

garka7795
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Name: Arka Prabho Ghosh

Cse 40 2205972
OOPJ ASSIGNMENT 1

Q. There are 5 self-driven marbles in the concentric circles given below. The diameter of the total circle is 40 em and width of
each track is 2 cm. The speed of the marble is (1.5 +0.1"t)cm/s, where t represents the track number.

(a) Write a program in Java to generate the position of each marble after every 2s, if initially each marble was top vertical
position initially.

Solution:
Input:
public class SelfDrivenMarbles1 {
public static void main(String[] args) {
double diameter = 40.0;
double trackWidth = 2.0;
int numTracks = (int) (diameter / trackWidth);

double[] positions = new double[numTracks];

for (int time = 0; time <= 10; time += 2) {


for (int track = 0; track < numTracks; track++) {
double speed = 1.5 + 0.1 * (track + 1);
positions[track] += speed * time;
positions[track] %= diameter;
}

System.out.println("Positions after " + time + " seconds:");


for (int track = 0; track < numTracks; track++) {
System.out.println("Marble " + (track + 1) + ": " + positions[track] + " cm");
}
System.out.println();
}
}
}
Output:
Positions after 0 seconds:
Marble 1: 0.0 cm
Marble 2: 0.0 cm
Marble 3: 0.0 cm
Marble 4: 0.0 cm
Marble 5: 0.0 cm
Marble 6: 0.0 cm
Marble 7: 0.0 cm
Marble 8: 0.0 cm
Marble 9: 0.0 cm
Marble 10: 0.0 cm
Marble 11: 0.0 cm
Marble 12: 0.0 cm
Marble 13: 0.0 cm
Marble 14: 0.0 cm
Marble 15: 0.0 cm
Marble 16: 0.0 cm
Marble 17: 0.0 cm
Marble 18: 0.0 cm
Marble 19: 0.0 cm
Marble 20: 0.0 cm

Positions after 2 seconds:


Marble 1: 3.2 cm
Marble 2: 3.4 cm
Marble 3: 3.6 cm
Marble 4: 3.8 cm
Marble 5: 4.0 cm
Marble 6: 4.2 cm
Marble 7: 4.4 cm
Marble 8: 4.6 cm
Marble 9: 4.8 cm
Marble 10: 5.0 cm
Marble 11: 5.2 cm
Marble 12: 5.4 cm
Marble 13: 5.6 cm
Marble 14: 5.800000000000001 cm
Marble 15: 6.0 cm
Marble 16: 6.2 cm
Marble 17: 6.4 cm
Marble 18: 6.6 cm
Marble 19: 6.800000000000001 cm
Marble 20: 7.0 cm

Positions after 4 seconds:


Marble 1: 9.600000000000001 cm
Marble 2: 10.2 cm
Marble 3: 10.8 cm
Marble 4: 11.399999999999999 cm
Marble 5: 12.0 cm
Marble 6: 12.600000000000001 cm
Marble 7: 13.200000000000001 cm
Marble 8: 13.799999999999999 cm
Marble 9: 14.399999999999999 cm
Marble 10: 15.0 cm
Marble 11: 15.600000000000001 cm
Marble 12: 16.200000000000003 cm
Marble 13: 16.799999999999997 cm
Marble 14: 17.400000000000002 cm
Marble 15: 18.0 cm
Marble 16: 18.6 cm
Marble 17: 19.200000000000003 cm
Marble 18: 19.799999999999997 cm
Marble 19: 20.400000000000002 cm
Marble 20: 21.0 cm

Positions after 6 seconds:


Marble 1: 19.200000000000003 cm
Marble 2: 20.4 cm
Marble 3: 21.6 cm
Marble 4: 22.799999999999997 cm
Marble 5: 24.0 cm
Marble 6: 25.200000000000003 cm
Marble 7: 26.400000000000002 cm
Marble 8: 27.599999999999998 cm
Marble 9: 28.799999999999997 cm
Marble 10: 30.0 cm
Marble 11: 31.200000000000003 cm
Marble 12: 32.400000000000006 cm
Marble 13: 33.599999999999994 cm
Marble 14: 34.800000000000004 cm
Marble 15: 36.0 cm
Marble 16: 37.2 cm
Marble 17: 38.400000000000006 cm
Marble 18: 39.599999999999994 cm
Marble 19: 0.8000000000000043 cm
Marble 20: 2.0 cm
(b) Generate the positions of each marble if the every alternate marble moves in clockwise and anti- clockwise direction,
with the innermost marble moving in clockwise direction.

Solution:
Input:
public class Main {
public static void main(String[] args) {
int totalTracks = 5;
double diameter = 40.0;
double trackWidth = 2.0;
double[] speeds = new double[totalTracks];
boolean[] directions = new boolean[totalTracks];

for (int i = 0; i < totalTracks; i++) {


speeds[i] = 1.5 + 0.1 * i;
directions[i] = (i % 2 == 0);
}

double[] positions = new double[totalTracks];


double circumference = Math.PI * diameter;
double[] trackRadii = new double[totalTracks];
for (int i = 0; i < totalTracks; i++) {
trackRadii[i] = diameter / 2.0 - (i * trackWidth);
}

double time = 0.0;


double maxTime = circumference / speeds[0];
while (time < maxTime) {
for (int i = 0; i < totalTracks; i++) {
double distance = speeds[i] * time;
double position = distance % circumference;
if (!directions[i]) {
position = circumference - position;
}
positions[i] = position;
}
System.out.println("Time: " + time + "s");
for (int i = 0; i < totalTracks; i++) {
System.out.println("Marble " + (i + 1) + " position: " + positions[i] + "cm");
}
System.out.println();
time += 0.1;
}
}
}

Output:
Time: 1.0999999999999999s
Marble 1 position: 1.65cm
Marble 2 position: 123.90370614359172cm
Marble 3 position: 1.8699999999999997cm
Marble 4 position: 123.68370614359172cm
Marble 5 position: 2.09cm

Time: 2.0000000000000004s
Marble 1 position: 3.000000000000001cm
Marble 2 position: 122.46370614359172cm
Marble 3 position: 3.400000000000001cm
Marble 4 position: 122.06370614359173cm
Marble 5 position: 3.8000000000000007cm

Time: 3.0000000000000013s
Marble 1 position: 4.500000000000002cm
Marble 2 position: 120.86370614359173cm
Marble 3 position: 5.100000000000002cm
Marble 4 position: 120.26370614359172cm
Marble 5 position: 5.700000000000002cm

Time: 4.000000000000002s
Marble 1 position: 6.000000000000003cm
Marble 2 position: 119.26370614359172cm
Marble 3 position: 6.8000000000000025cm
Marble 4 position: 118.46370614359172cm
Marble 5 position: 7.600000000000003cm

Time: 5.099999999999998s
Marble 1 position: 7.649999999999997cm
Marble 2 position: 117.50370614359173cm
Marble 3 position: 8.669999999999996cm
Marble 4 position: 116.48370614359173cm
Marble 5 position: 9.689999999999996cm

(C) Find the condition when each ball will move in a such way that they will fall in same line.

Solution:
Input:
public class Main {
public static void main(String[] args) {
int totalTracks = 5;
double[] speeds = new double[totalTracks];
double[] trackRadii = new double[totalTracks];

for (int i = 0; i < totalTracks; i++) {


speeds[i] = 1.5 + 0.1 * i;
trackRadii[i] = 20.0 - (i * 2.0);
}

double[] times = new double[totalTracks];


for (int i = 0; i < totalTracks; i++) {
double omega = speeds[i] / trackRadii[i];
double n = 1;
times[i] = n * 2 * Math.PI / omega;
}

boolean sameLine = true;


for (int i = 1; i < totalTracks; i++) {
if (Math.abs(times[i] - times[0]) > 1e-9) {
sameLine = false;
break;
}
}

if (sameLine) {
System.out.println("All balls will fall in the same line.");
System.out.println("Time taken for all balls to fall in the same line: " + times[0] + " seconds");
} else {
System.out.println("All balls will not fall in the same line.");
}
}
}
Output:
All balls will not fall in the same line.

Process finished with exit code 0

You might also like