Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX_BR_EL 100
- void sort_nondescending(int niz[], int n){
- int i, j, temp;
- for (i=0; i<n-1; i++){
- for (j=i+1; j<n; j++){
- if (niz[i]>niz[j]){
- temp=niz[i];
- niz[i]=niz[j];
- niz[j]=temp;
- }
- }
- }
- }
- void sort_nonascending(int niz[], int n){
- int i, j, temp;
- for (i=0; i<n-1; i++){
- for (j=i+1; j<n; j++){
- if (niz[i]<niz[j]){
- temp=niz[i];
- niz[i]=niz[j];
- niz[j]=temp;
- }
- }
- }
- }
- void flip_niz(int niz[], int n){
- int temp[MAX_BR_EL], i, j;
- for (i=0; i<n; i++){
- temp[i]=niz[i];
- }
- j=0;
- for (i=n-1; i>=0; i--){
- niz[j]=temp[i];
- j++;
- }
- }
- int main()
- {
- int i, j, n1, n2, niz1[MAX_BR_EL], niz2[MAX_BR_EL], niz3[MAX_BR_EL], niz1_ascending, niz2_ascending;
- /* Enter array 1 elements: */
- printf("Number of elements in the first array: "); scanf("%d", &n1);
- for (i=0; i<n1; i++){
- scanf("%d", &niz1[i]);
- }
- /*Sort array 1 (Bubble sort) */
- printf("\nHow would you like array 1 sorted? ");
- printf("\n1: Non-descending\n2: Non-ascending\n");
- while (1){
- scanf("%d", &i);
- if (i==1){
- sort_nondescending(niz1, n1);
- break;
- } else if (i==2){
- sort_nonascending(niz1, n1);
- break;
- } else{
- printf("\nWrong entry, pick again:");
- }
- }
- /* Print sorted array 1: */
- for (i=0; i<n1; i++){
- printf("%d ", niz1[i]);
- }
- /* Enter array 2 elements: */
- printf("\nNumber of elements in the second array: "); scanf("%d", &n2);
- for (i=0; i<n2; i++){
- scanf("%d", &niz2[i]);
- }
- /*Sort array 2 (Bubble sort) */
- printf("\nHow would you like array 2 sorted? ");
- printf("\n1: Non-descending\n2: Non-ascending\n");
- while (1){
- scanf("%d", &i);
- if (i==1){
- sort_nondescending(niz2, n2);
- break;
- } else if (i==2){
- sort_nonascending(niz2, n2);
- break;
- } else{
- printf("\nWrong entry, pick again:");
- }
- }
- /* Print sorted array 2: */
- for (i=0; i<n2; i++){
- printf("%d ", niz2[i]);
- }
- /* Merge arrays 1 and 2, sorted in the same way.
- If they are not sorted in the same way, flip
- array 2 to make them sorted the same way, then
- merge them. */
- niz1_ascending=1; niz2_ascending=1;
- for (i=0; i<n1; i++){
- for (j=i+1; j<n1; j++){
- if (niz1[i]>niz1[j]){
- niz1_ascending=0;
- }
- }
- }
- for (i=0; i<n2; i++){
- for (j=i+1; j<n2; j++){
- if (niz2[i]>niz2[j]){
- niz2_ascending=0;
- }
- }
- }
- if (niz1_ascending != niz2_ascending){
- flip_niz(niz2, n2);
- printf("\n\nArrays 1 and 2 were not the same format, flipping array 2: \n");
- for (i=0; i<n2; i++){
- printf("%d ", niz2[i]);
- }
- }
- for (i=0; i<n1; i++){
- niz3[i]=niz1[i];
- }
- for (i=n1; i<n1+n2; i++){
- niz3[i]=niz2[i-n1];
- }
- if (niz1_ascending==1){
- sort_nondescending(niz3, n1+n2);
- } else{
- sort_nonascending(niz3, n1+n2);
- }
- printf("\n\nThis is the merged and sorted array: \n");
- for (i=0; i<n1+n2; i++){
- printf("%d ", niz3[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement