Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Write a program to approximate (using the Trapezoidal rule) the integral of using C p rogramming language and modify the attached program by using N

Write a program to approximate (using the Trapezoidal rule) the integral of using C programming language and modify the attached program

image text in transcribed

by using N processes to sum up n trapezoids (n>N).

N should vary in the range of 1 to 8, while n will be input by the user.

The parent process should create N ( [1, 8]), child processes using fork().

There should be N pairs of pipes through which the parent process assigns jobs to associated child processes, and receives results back from them when the calculation is completed.

More specifically, the parent process will initially assign the first N pieces to the N child processes to do their respective calculation. Whenever a process has done its calculation of the area of another trapezoid, it will send it back to the parent process. Upon receiving such a piece, the parent process will update the sum accordingly, and, if there are still un-calculated pieces, the parent will also assign the next piece to the just returned child process. After the parent has received all the n results, it prints out the final answer.

Some useful Points:

  1. Use atof() to convert from string to a numerica floating point value. Example: double d = atof(buffer);
  2. Use sprintf() to convert from numerica floating point value to a string. Example: sprintf(buffer,"%f", d);

#include #include char string0[] = "Hello, this is the parent process"; char string1[] = "Hi, this is the child process 1"; char string2[] = "Hi, this is the child process 2"; main(){ char buf[1024]; int i, fds0[2], fds1[2], fds2[2]; pipe(fds0); //pipe used by the parent process--zs pipe(fds1); //pipe used by the child 1 process--zs pipe(fds2); //pipe used by the child 2 process--zs //The first child process is created.--zs if(fork()==0) { close(fds0[1]); //read from the parent --zs read(fds0[0], buf, sizeof(string0)); printf("child 1 reads: %s ", buf); //write child message to parent via its pipe--zs close(fds1[0]); write(fds1[1], string1, sizeof(string1)); exit(0); } //The second child process--zs else if(fork()==0) { sleep(1); close(fds0[1]); //Get something from the parent process--zs read(fds0[0], buf, sizeof(string0)); printf("child 2 reads: %s ", buf);

//write child message into fds2 close(fds2[0]); write(fds2[1], string2, sizeof(string2)); exit(0); } else {//Parent process starts--zs //write parent message into fds0 close(fds0[0]); write(fds0[1], string0, sizeof(string0)); //read child 1 message from its associated pipe--zs close(fds1[1]); read(fds1[0],buf,sizeof(string1)); printf("parent reads from Child 1: %s ", buf); //write something into fds0 again to child 2--zs close(fds0[0]); write(fds0[1], string0, sizeof(string0)); //read child 2 message from its associated pipe--zs close(fds2[1]); read(fds2[0],buf,sizeof(string2)); printf("parent reads from Child 2: %s ", buf); exit(0); } }

rcos (2) da

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

How To Make A Database In Historical Studies

Authors: Tiago Luis Gil

1st Edition

3030782409, 978-3030782405

More Books

Students also viewed these Databases questions

Question

Differentiate tan(7x+9x-2.5)

Answered: 1 week ago

Question

Explain the sources of recruitment.

Answered: 1 week ago

Question

Differentiate sin(5x+2)

Answered: 1 week ago

Question

Compute the derivative f(x)=1/ax+bx

Answered: 1 week ago