سورس کد معکوس یا برعکس کردن یک عدد در زبان سی پلاس پلاس و سیشارپ_reverse number in cpp or csharp
سه شنبه, ۱۳ مهر ۱۳۹۵، ۰۳:۰۲ ب.ظ
gameover.blog.ir
روش زیاده.
بدترین روش هم روش recursive یا بازگشتی هست از لحاظ مصرف حافظه پشته یا stack .
یک روش تقسیم به ده داریم :
مثال:
تقسیم به ده می کنیم تا جایی که خارج قسمت از 10
کمتر بشه .
و باقی مانده ها و آخرین خارج قسمت رو یکی یکی در آرایه ذخیره
می کنیم
و سپس آرایه رو از آخر می خونیم و کاراکترها رو به هم می چسبونیم.
اگه
هم از string نمی خوایم استفاده کنیم می تونیم اولین باقیمانده رو بخونیم و
در 10 ضرب کنیم
و جمع کنیم با باقمانده دوم و همینطور ادامه میدیم تا به باقیمانده صفر برسیم
یک الگوریتمش به زبان cpp کدش این میشه که با کمی تغییر می تونید ببرید به سیشارپ یا جاوا یا ... :
#include <iostream>
using namespace std;
int main() {
int n, reverse = 0;
cout << "Enter an integer: ";
cin >> n;
while(n != 0) {
int remainder = n%10;
reverse = reverse*10 + remainder;
n/=10;
}
cout << "Reversed number = " << reverse;
return 0;
}
//---
Output خروجی
Enter an integer: 12345 Reversed number = 54321
برای مبتدی ها:
در مثال فوق: درصد ده یعنی تقسیم بر ده کن و باقیمانده رو حساب کن.% عملگر باقیمانده هست توی زبان های سی و سیشارپ و سی پلاس پلاس و جاوا و ... .
توی پاسکال mod بود برای حساب کردن باقیمانده.(پاسکال دیگه قدیمی شده و کاربرد زیادی نداره)
روش دیگه در سیشارپ اینه که عدد رو بریزیم توی یک متغیر عددی و سپس با متد toString تبدیل کنیم به رشته String و سپس یک حلقه for بذاریم بیایم از کاارکتر آخر تا اول بخونیم.
مثال در یونیتی به زبان سیشارپ:
using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.EventSystems; using System.Collections; public class reverseNumber : MonoBehaviour { public Button btn1; void Start() { int num=123; string strNum="",strReverse=""; strNum=num.ToString(); for(int i=(strNum.Length-1);i>=0;i--) { strReverse+=strNum[i]; } Debug.Log("Reverse : " + strReverse); } }نکته:
اسکریپت فوق رو نگاه کنید.
اسم رو گذاشتیم reverseNumber که باید اسم خود اسکریپت هم دقیقا همین باشه(reverseNumber با رعایت حروف کوچک و بزرگ.) اگه هم یه اسم دیگه می دید مهم نیست دلخواهه ولی اسم کلاس و اسم خود اسکریپت هر چی میذارید باید یکسان باشه یادتون نره.
اینم خروجی:
روش دیگه متد Array.Reverse هست که بعد از اسم آرایه می تونیم بیاریم.(هر چند نوع داده String در cpp آرایه ای از کاراکترهاست اما در سیشارپ و در این مثال همون روش بالا بهتره)
عالی خیلی به درد بخور بود.