PDA

View Full Version : تبدیل مبنای 10 به مبنای 2



mehdiba3
یک شنبه 20 بهمن 1392, 13:03 عصر
کد زیر تبدیل عدد از مبنای 10 به 2 می باشد. تبدیل مبنا درست صورت می گیرد فقط باید خروجی معکوس نمایش داده شود. عملیات معکوس را هم فکر کنم درست نوشتم ولی نمیدونم چرا عمل نمی کنه.

string maxoks;
int x;
int result;
x = int.Parse(Console.ReadLine());
while (x>0)
{
result = x%2;
x = x/2;
string resulsttostring;
resulsttostring = result.ToString();
//عملیات معکوس رشته
for (int i = 0; i < resulsttostring.Length; i++)
{
string empty;
empty = resulsttostring[resulsttostring.Length - i - 1].ToString();
maxoks = empty;
Console.Write(empty);
//پایان عملیات معکوس رشته
}
}
Console.ReadKey();
}
}

milad_d993
یک شنبه 20 بهمن 1392, 14:17 عصر
int x = int.Parse(textBox1.Text);
int result;
string temp = "";
while (x > 0)
{
result = x % 2;
temp += result.ToString();
x = x / 2;
}
if (x == 1) temp += x.ToString();
string resulsttostring = "";
for (int i = temp.Length - 1; i >= 0; i--)
{
resulsttostring += temp.Substring(i, 1);
}
MessageBox.Show(resulsttostring);

winner1
یک شنبه 20 بهمن 1392, 14:19 عصر
دقیقا عملیات معکوست اشتباست تو عملیا معکوس از اخر به اول میام نه از اول به اخر که باز بشه قبلی


For(int i=lengh;i>=0;i--)

boveiryghasem
یک شنبه 20 بهمن 1392, 15:23 عصر
string hex_addr = "7";
string bin_value = Convert.ToString(Convert.ToInt32(hex_addr, 16), 2);
MessageBox.Show(bin_value.ToString());

boveiryghasem
یک شنبه 20 بهمن 1392, 15:31 عصر
راستی این تابع هم یه رشته میگره برعکسش میکنه:
public string ReverseString(string srtVarable)
{
return new string(srtVarable.Reverse().ToArray());
}

mehdiba3
یک شنبه 20 بهمن 1392, 16:37 عصر
دوست عزیز این کاری که گفتید روکردم و مشکل حل نشد. الان همه مشکل اینجاست که عملیات تبدیل مبنا درست کار می کنه. فقط باید معکوس چاپ شه. قسمت معکوس رو که با علامت مشخص کردم رو به تنهایی که اجرا کنم یک رشته رو می گیریه ئ معکوس می کنه. ولی عجیبه که وقتی میاد با برنامه تبدیل مبنا اجرا میشه دیگه این کارو انجام نمیده

mehdiba3
یک شنبه 20 بهمن 1392, 16:54 عصر
من حلقه for رو هم که تریس می کنم عملیات معکوس رو رو کاغذ خروجی میده. عجیبه اینجا ترتیب اثر نمیده. کسی میتونه همین برنامه رو که خودم نوشتم ایرادش رو دقیق بگه؟ ممنونم ازتون

arash_flag
یک شنبه 20 بهمن 1392, 18:21 عصر
سلام دوست عزیز
شما باید متغیر رشته ای خود رو هر بار با باقیمانده جمع کنید ..
مانند
[CSHARP]
int r = 0;
//b=textbox.text --->>> (convert);

int c = b;

while (c > 0)
{
r = c % 2;
//string p
p = r.ToString() + p;
c = c / 2;


}[ /CSHARP]

mehdiba3
یک شنبه 20 بهمن 1392, 19:53 عصر
دوست عزیز این کارو هم کردم اما بازم تغییری حاصل نشد. دیگه نا امید شدم

mehdiba3
یک شنبه 20 بهمن 1392, 20:17 عصر
هرچند که هدفم این بود که کدی رو که بالا نوشتم مشکلش حل بشه اما با کمک و راهنمایی شما به جواب رسیدم
کد صحیح را در پایین قرار میدهم

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication15
{
class Program
{
static void Main(string[] args)
{
int rimander;
int decimals;
decimals = int.Parse(Console.ReadLine());
string result = string.Empty;
while (decimals>0)
{
rimander = decimals%2;
decimals = decimals/2;
result = rimander.ToString()+result;

}
Console.WriteLine(result);

Console.ReadKey();


}
}
}