Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  project2
Language: C/C++
Code:
#include <stdlib.h>
#include <stdio.h>
#include<sys/wait.h> 
#include<unistd.h> 

void bubbleSort(int arr[], int n);
void swap(int *xp, int *yp);
void printArray(int arr[], int size);
void childsort(int arr[], int n);

int main() {
    int size;
    int counter=0;
    printf("Enter the size of the array:n");
    scanf("%d",&size);
    int *array = malloc(size * sizeof(*array));
    printf("Size of array is: %dn", size);

    while(counter<size){
      printf("Enter array element %d: ", counter);
      scanf("%d", (array+counter));
      counter++;
    }
    pid_t childPid;  // the child process
    childPid = fork();

    if(childPid == 0)  // fork succeeded 
    {   
      childsort(array, size); 
      printf("(Child) Sorted array Small to Large: n"); 
      printArray(array, size);    
      exit(0); 
    }

    else if(childPid < 0)  // fork failed 
    {    
      printf("Fork failed!"); 
    }
    else  // Main (parent) process after fork succeeds 
    {    
        int returnStatus;    
        waitpid(childPid, &returnStatus, 0);  // Parent process waits here for child to terminate.

        if (returnStatus == 0)  // Verify child process terminated without error.  
        {
          printf("The child process terminated normally. n");
          bubbleSort(array, size); 
          printf("(parent) Sorted array Large to Small: n"); 
          printArray(array, size); 
        }
        if (returnStatus == 1)      
        {
          printf("The child process terminated with an error!.");    
        }
    }
return 1;
}
  
void swap(int *xp, int *yp){ 
    int temp = *xp; 
    *xp = *yp; 
    *yp = temp; 

  
// bubble sort  Large to Small
void bubbleSort(int arr[], int n){ 
   int i, j; 
   for (i = 0; i < n-1; i++)       
       for (j = 0; j < n-i-1; j++)  
           if (arr[j] < arr[j+1]) 
              swap(&arr[j], &arr[j+1]); 


// bubble sort  Small to Large
void childsort(int arr[], int n){ 
   int i, j; 
   for (i = 0; i < n-1; i++)       
       for (j = 0; j < n-i-1; j++)  
           if (arr[j] > arr[j+1]) 
              swap(&arr[j], &arr[j+1]); 

  
/* Function to print an array */
void printArray(int arr[], int size){ 
    int i; 
    for (i=0; i < size; i++) 
        printf("%d ", arr[i]); 
    printf("n"); 



    

          
Comments: