Qn: Write a C program to change an array elements in reverse order using their positions. Don't use the way of printing the elements from the last position.
-By Admin, Last Update On 28th May,2019 02:20 pm

Change the array elements in reverse order using their positions

முதலில் array-ன் last position-ஐ ஒரு variable-லில் store செய்துகொள்ளவேண்டும். இங்கு last_position என்ற variable பயன்படுத்தபட்டுள்ளது. பிறகு for() loop 0-லிருந்து array-ன் பாதி வரை மட்டும் சென்றால் போதுமானது. ஏனெனில் loop-ஆனது 0-லிருந்து பாதி அளவு சென்ற உடனே array a[]-ல் உள்ள அனைத்து element-களும் இடமாற்றம் செய்யப்பட்டுவிடும்.

i-ன் value-ஐ வைதுகொண்டே array-ன் முதல் element-ஐ எடுக்கும்போது array-ன் கடைசி element-ம், array-ன் இரண்டாவது element-ஐ எடுக்கும்போது array-ன் கடைசியில் உள்ள இரண்டாவது element. இதேபோல் array-ல் உள்ள ஒவ்வொரு element-ம் அதற்க்கு இணையான கடைசி element-ஐ கண்டரியவேண்டும். இதுவே இதில் அடங்கி உள்ள logic.

அதற்காகத்தான் a[i] மற்றும் a[last_position -i] என்று இதில் குறிப்பிடபடுகிறது. a[last_position-i]-ஆனது ஒவ்வொரு a[i]-க்கும் இணையான கடைசி element-ஐ கண்டறியும். இதை வைத்து இப்பொழுது element-களை இடமாற்றம் செய்யவேண்டும்.

அதற்க்கு a[i]-ல் உள்ள value-ஐ temp என்ற variable-க்கும் a[last_position-i]-ல் உள்ள value-ஐ a[i]-க்கும் மாற்றியபிறது, temp-ல் உள்ள value-ஐ இப்பொழுது a[last_position-i]-க்கு மாற்றிவிடவேண்டும். இவ்வாறே loop சுழற்சி அடையும்போது அனைத்து element-களும் தன்னுடைய இடத்தை மாற்றிக்கொள்ளும்.

இப்பொழுது for() loop-ஐ பயன்படுத்தி a என்ற array-வை 0 position-லிருந்து கடைசி வரை print செய்தால் array-ஆனது reverse order-ல் கிடைத்துவிடும்.

#include<stdio.h>
#include<conio.h>
int main(){
  int a[] = {80, 97, 69, 79, 88, 100, 13};
  int length=sizeof(a)/sizeof(int);
  int i,temp;
  int last_position = length - 1;
  for (i = 0; i <(length / 2); i++) {
      temp = a[i];
      a[i] = a[last_position - i];
      a[last_position - i] = temp;
  }
  printf("\nReversed element of an array:");
  for (i = 0; i <length; i++) {
      printf("%d, ",a[i]);
  }       
return 0;
}
Output:
13, 100, 88, 79, 69, 97, 80,

Pgcomments

Comments