உதாரணத்திற்க்கு n=12345 என்று எடுத்துகொள்வோம். இதனை reverse செயும்போது கடைசியில் உள்ள 5-ஆனது முதலில் வரவேண்டும் அதற்க்கு 5 என்ற degit-ஐ தனி பிரிக்கவேண்டும். modulo(%) operator பயன்படுத்தும்போது. அதாவது n%10 என்று பயன்படுத்தும்போது அந்த number-ல் உள்ள கடைசி digit 5 கிடைத்துவிடும். அடுத்த digit 4-ஐ எடுக்க வேண்டுமெனில் n=1234 என்று மாறவேண்டும். இப்படி இருந்தால் தான் 4-ஐ தனியாக எடுக்க எளிதாக இருக்கும். அதற்காக தான் n=n/10 என்று பயன்படுதும்ப்போது n/10-ன் value 1234 திரும்பவும் n-லே save செய்துகொள்ளும். இப்பொழுது n-ன் value 1234-ஆ மாறிவிட்டது.
அடுத்த digit 3-ஐ இதே முறையில் செய்யவேண்டும். இந்த செய்முரையானது தொடர்ந்து சுழற்சியாக நடைபெற்று கொண்டிருக்கிறது. ஆகவே இந்த செய்முறையை while loop-க்குள் செய்தால் அதுவே திரும்ப திரும்ப செய்துகொள்ளும். இதில் n-ன் value குறைந்துகொண்டே வந்து 0 ஆக மாறும்போது loop நின்றுவிடும்.
இவ்வாறு பிரித்து எடுத்த ஒவொரு digits-ஐயும் sum=(sum*10)+digit. இவ்வாறு சேர்த்து கொண்டே வரவேண்டும். அதேபோல் 10-ஆல் multiply செய்வதற்கு காரணம் ஒவொரு digit-ம் பக்கத்தில் சேரும்போது அதன் value மாறிக்கொண்டே இருக்கும். அதாவது 5, 50-ஆக மாறும் அதன் பின் 500-ஆக மாறும். இது தொடர்ந்துகொண்டே இருக்கும்.
இறுதியில் loop ஆனது முடியும் போது sum என்ற variable-ல் உள்ள value reverse செய்யப்பட்ட value ஆக இருக்கும்.
Program
#include<iostream>
using namespace std;
int main(){
int n=12345,sum=0,digit;
while(n>0){
digit=n%10;
n=n/10;
sum=(sum*10)+digit;
}
cout<<"Reversed number is: "<<sum;
return 0;
}
Output:
Reversed number is: 54321
Pgcomments
இது பற்றிய தங்களின் கருத்துகளை இங்கே பதிவிடுங்கள் . இது பயனுள்ளதாக விரும்பினால் மற்றவர்களுக்கும் இதை share செய்யுங்கள்.
Comments