Answer
மேலே கொடுக்கப்பட்டுள்ள question-ல் உள்ள pattern-ல் ஒவ்வொரு odd position value-ம் அதற்க்கு அடுத்து உள்ள value-ஐ விட பெரியதாகவும், ஒவ்வொரு even position value-ம் அதற்க்கு அடுத்து உள்ள value-ஐ விட சிறியதாகவும் உள்ளது.
ஆகவே for loop ஐ பயன்படுத்தி odd and even position values-ஐ எடுத்துகொள்ளலாம். இவாறு செயும்போது loop 0-லிருந்து n-2 வரைக்கும் சுற்றினாலே போதுமானது. ஏனெனில் array elements எப்பொழுதும் 0-லிருந்து n-1 வரை மட்டுமே index செய்யபட்டு இருக்கும். அதோடு n-1 என்பது array-ல் உள்ள கடைசி element. for loop சுழற்சியில் i+1-ஐ பயன்படுத்தும்போது கடைசி element-க்கு அடுத்த element, அதாவது இல்லாத ஒரு element-ஐ array-ல் தேடும். ஆகையால் loop n-2 வரைக்கும் சுற்றினாலே போதுமானது.
இபொழுது for loop-ன் உள்ளே odd and even position values-ஐ தனி தனியாக பிரிப்பதற்காக if(i%2==0){ odd position values }else{ even position values } பயன்படுத்தபடுகிறது. if condition-னில் வரும் odd position values ஒவ்வொன்றும் அதற்க்கு அடுத்து உள்ள value-வை விட அதிகமாக இருக்கின்றதா? என்று சரி பார்க்கவேண்டும். அதேபோல் else condition-னில் வரும் even position values ஒவ்வொன்றும் அதற்க்கு அடுத்து உள்ள value-வை விட குறைவாக இருக்கின்றதா? என்று சரி பார்க்கவேண்டும்.
இவ்வாறு சரிபார்க்கும்போது சரியாக இருந்தால் loop-ஐ continue செய்துவிடவேண்டும். இல்லையெனில் current position-னில் உள்ள value-ஐ, அடுத்த position-க்கும், அடுத்த position-னில் உள்ள value-ஐ current position-க்கும் இடமாற்றம் செய்யவேண்டும்.
How to inter change the values
முதலில் current position value-ஐ அதாவது a[i]-ன் value-ஐ temp என்ற variable-க்கும், a[i+1]-ன் value-ஐ a[i]-க்கும் மாற்ற வேண்டும். பிறகு temp-ன் value-ஐ a[i+1]-க்கு மாற்ற வேண்டும். இதில் முதலிலே a[i+1]-ன் value-ஐ a[i]-க்கு மாற்றிவிட்டால் a[i]-ல் இருந்த value காணமல் போய்விடும். ஆகையால் a[i]-ல் இருந்த value-ஐ a[i+1]-க்கு மாற்ற இயலாமல் போய்விடும்.
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
கடைசியாக array-ல் உள்ள அனைத்து values-ஐயும் for loop பயன்படுத்தி print செய்யவேண்டும். இதுவே நாம் எதிர் பார்த்த output.
Program in C Language
#include<stdio.h>
#include<conio.h>
int main(){
int n=6,i,temp;
int a[n];
printf("\nEnter the array values: ");
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for (i = 0; i < n-1; i++) {
if (i % 2 == 0) {
if (a[i] >= a[i+1]) {
continue;
} else {
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
} else {
if (a[i] <= a[i+1]) {
continue;
} else {
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
printf("\nExpected result is:\n");
//a[i]>=a[i+1]<=a[i+2]>=a[i+3]<=a[i+4]>=a[i+5]<=a[i+6]...
for (i = 0; i < n; i++) {
printf("%d ",a[i]);
}
return 0;
}
Output:
Enter the array values: 10 2 1 0 4 5Expected result is : 10 1 2 0 5 4
Pgcomments
இது பற்றிய தங்களின் கருத்துகளை இங்கே பதிவிடுங்கள் . இது பயனுள்ளதாக விரும்பினால் மற்றவர்களுக்கும் இதை share செய்யுங்கள்.
Comments