Question: Question 1 Create a C program ( collatz _ sequence.c ) that generates a collatz sequence for a given initial start number. The

Question 1
Create a C program ("collatz_sequence.c") that generates a collatz sequence for a given initial start number. The
Collatz conjecture concerns what happens when we take any positive integer n and apply the following algorithm:
n=2n,ifnis even
n=3n+1n=3n+1,ifnis odd
The conjecture states that when this algorithm is continually applied, all positive integers will eventually reach 1.
For example, if n=35, the sequence is 35,106,53,160,80,40,20,10,5,16,8,4,2,1.
The program will use parent and child processes to create this sequence. The parent process will read a list of
starting numbers from the file "start_numbers.txt" and store them in an array. For each number, the parent will
create a collatz sequence and create a shared-memory object between the parent and child processes to pass the
sequence to the child. The child will open the shared-memory object, output/print the sequence, and complete
itself. Because the memory is shared, any changes the parent makes will also be reflected in the child process.
The parent process will progress through the following steps for each number read from the "start_numbers.txt"
file:
a. Establish the shared-memory object (shm_open(), ftruncate(), and mmap()).
b. Create a collatz sequence for the read number.
c. Save the sequence to a shared-memory object.
d. Create the child process and wait for it to terminate.
The parent will spawn multiple child processes (equal to the start numbers provided in the "start_numbers.txt")
and pass different collatz sequence numbers to each child.
The child will progress through the following steps:
a. Establish the shared-memory object (shm_open(), ftruncate(), and mmap()).
b. Output the contents of shared memory.
c. Remove the shared-memory object.
The program exits when all sequences equal to start_numbers are printed on the console.
Use makefile to compile the program written above. The instructions to use and contents of the makefile have
been provided on the MyLS course page. The other implementation details are at your discretion, and you are free
to explore.
To invoke the program, use the command: ./collatz_sequence start_numbers.txt in the terminal OR use the
command: make runq1 via makefile.
The expected output for Question 2:
$ make runq1
./collatz_sequence start_numbers.txt
Parent Process: The positive integer read from file is 10
Child Process: The generated collatz sequence is 105168421
Parent Process: The positive integer read from file is 53
Child Process: The generated collatz sequence is 53160804020105168421
Parent Process: The positive integer read from file is 99
Child Process: The generated collatz sequence is 992981494482241125628147221134175226134020105168421
Note: When submitting the source code files for Question 1, name them like:
collatz_sequence.c
# Makefile for collatz_sequence.c
# Compiler
CC = gcc
# Compiler Flags
CFLAGS =-Wall -Wextra -std=c99
# Executable Name
TARGET = collatz_sequence
# Source Files
SRC = collatz_sequence.c
# Default Target
all: $(TARGET)
# Build the target executable
$(TARGET): $(SRC)
$(CC) $(CFLAGS)-o $(TARGET) $(SRC)-lrt
# Clean up build files
clean:
rm -f $(TARGET)*.o
# Run the program
run:
./$(TARGET) start_numbers.txt
# Phony targets
.PHONY: all clean run
 Question 1 Create a C program ("collatz_sequence.c") that generates a collatz

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!