PDA

View Full Version : مبتدی: سوال : تبدیل توان به جمع



scholargabriel
دوشنبه 16 آبان 1390, 22:34 عصر
سلام دوستان
می خواستم ببینم چطور میشه برنامه ای نوشت که عملیات توان را با جمع حساب کنه؟
و فقط با یک حلقه این کار را بکنه

uniqueboy_ara
دوشنبه 16 آبان 1390, 22:48 عصر
X به توان y
double power(int x, int y)
{
double result = x;
for (int i = 1; i < y; i++)
{
result *= x;
}
return result;
}

electro_esma
دوشنبه 16 آبان 1390, 23:03 عصر
با سلام دوست من فکر کنم صورت سوال رو متوجه نشدی

دوستمون گفته توان رو با جمع حساب کنی نه براش فرمول بنویسی . تو این جوابت جمع کجا بود.


یه چیزی مثل اینکه برای به توان رسوندن x به توان 2 باید x بار x رو با خودش جمع کنی .

مثل 3 با توان دو باید 3 با 3 رو با خوش جمع کنی



باز هم دستت درد نکنه

uniqueboy_ara
دوشنبه 16 آبان 1390, 23:11 عصر
بله
حق با شما بود

اینم با جمع
double power(int x, int y)
{
double result = x;
for (int i = 1; i < y; i++)
{
result += result;
}
return result;
}

scholargabriel
دوشنبه 16 آبان 1390, 23:12 عصر
X به توان y
double power(int x, int y)
{
double result = x;
for (int i = 1; i < y; i++)
{
result *= x;
}
return result;
}


مرسی دوست عزیز ولی من با عملیات جمع می خوام نه ضرب
مثلا 2 به توان 3 یعنی : ( 2+2+2+2 )

electro_esma
دوشنبه 16 آبان 1390, 23:22 عصر
اینم با جمع

1
2
3
4
5
6
7
8
9
double power(int x, int y)
{
double result = x;
for (int i = 1; i < y; i++)
{
result += result;
}
return result;
}



نه دوست من فورمولت اشتباهه من امتحان کردم.

electro_esma
دوشنبه 16 آبان 1390, 23:22 عصر
فرمول شما x رو در y ضرب می کنه . در نهایت

scholargabriel
دوشنبه 16 آبان 1390, 23:37 عصر
فقط برای 2 کار می کنه

electro_esma
دوشنبه 16 آبان 1390, 23:46 عصر
for (int i = 1; i < y; i++)
{
result += result;
}
این کد یعنی به تعداد y بار result رو با خودش جمع کنه یعنی همون y ضرب در result که همون x باشد

اگه ما اشتباه فهمدیم فایل پروژه رو بذار که ماهم استفاده کنیم/

electro_esma
دوشنبه 16 آبان 1390, 23:54 عصر
چی شد پس دوست عزیز !

scholargabriel
سه شنبه 17 آبان 1390, 00:25 صبح
چی شد پس دوست عزیز !

نگاه یه برنامه چه جور مارا پیچوند :گریه:

uniqueboy_ara
سه شنبه 17 آبان 1390, 00:39 صبح
با تابع بازگشتی هم میشه یا نه؟؟؟
اگه میشه راهشو پیدا کردم:لبخند:

scholargabriel
سه شنبه 17 آبان 1390, 00:53 صبح
نه دوست عزیز راه سخت را باید پیدا کنم

electro_esma
چهارشنبه 18 آبان 1390, 00:48 صبح
دوست من بالاخره جواب رو پیدا کردم .

ببخشید یکی دو روز کار داشتم . ولی نوشتم امیدوارم بدرد بخوره


privatevoid button1_Click(object sender, EventArgs e)
{
textBox2.Text = "";

x = Convert.ToInt32(textBox1.Text);

x1 = Convert.ToInt32(textBox2.Text);

y1 = 1;

tawan(x, x);

while (1 > 0)

{
if (y1 < x1) { tawan(x, y2); }

else { break; }

}
}
//---------------------------------------------------------------------
publicint tawan(int s1,int s2)
{
y2 = 0;
//----------------------------
for (int i = 0; i < s2; i++)
{
y2 = y2 + s1;
}
//-----------------------------
y1 = y1 + 1;
textBox3.Text = y2.ToString();
return 1;
}

77612

electro_esma
چهارشنبه 18 آبان 1390, 00:49 صبح
این راه حل تمام مراحل به توان رسوندن رو با عمل جمل انجام می ده اگه خواستی مراحلشو واست توضیح بدم.


موفق باشی

wolf_majid
چهارشنبه 18 آبان 1390, 01:18 صبح
مشکل اینه که شما با 2 حلقه نوشتید
فکر نمی کنم بشه با یک حلقه بدون تواب بازگشتی نوشت
در صورتیکه طبق گفته دوستمون باید با یک حلقه و عمل جمع و بدون توابع بازگشتی باشه (راستش به نظر من خود استادشون هم نتونه یک همچین چیزیو بنویسه) :متعجب:

electro_esma
چهارشنبه 18 آبان 1390, 01:38 صبح
با تشکر دوست من

والا همین رو هم یه سه چهار ساعتی ما رو سر کار گذاشت . اصول رو روی کاغذ می دونستم ولی برای جابجا کردن بین متغییر ها یکم رفتم سرکار.

ولی با این حال بد نشد . دسته کم فهمیدیم که هیچی از ریاضی نمی دونیم.:بامزه:

wolf_majid
چهارشنبه 18 آبان 1390, 01:41 صبح
با تشکر دوست من

والا همین رو هم یه سه چهار ساعتی ما رو سر کار گذاشت . اصول رو روی کاغذ می دونستم ولی برای جابجا کردن بین متغییر ها یکم رفتم سرکار.

ولی با این حال بد نشد . دسته کم فهمیدیم که هیچی از ریاضی نمی دونیم.:بامزه:
دقیقا"
من هم به این نتیجه رسیدم که هیچی سخت تر از اون هایی نیست که به نظر میرسند ساده اند

electro_esma
چهارشنبه 18 آبان 1390, 01:45 صبح
آره دوست من . موفق باشی

gfdsghgfdh
سه شنبه 12 آذر 1398, 00:39 صبح
با تابع بازگشتی هم میشه یا نه؟؟؟
اگه میشه راهشو پیدا کردم:لبخند:
اگر براتون امکانش باشه ممنون میشم بفرستید

ASHKANLAEI
سه شنبه 12 آذر 1398, 18:15 عصر
public void tavan(int x, int y) {
if (y == 1)
return x;
int n = 0;
for (int i = 0; i < tavan(x, y - 1); i++)
n += x;
return n;
}

the king
چهارشنبه 13 آذر 1398, 01:16 صبح
سلام دوستان
می خواستم ببینم چطور میشه برنامه ای نوشت که عملیات توان را با جمع حساب کنه؟
و فقط با یک حلقه این کار را بکنه



private void Form1_Load(object sender, EventArgs e)
{
var x = 4;
var y = 7;
// x ^ y = ?

var m = 1;
if (y > 0)
{
m = 0;
var n = 1;
var j = 0;
for (var i = 0; j < y; i++)
{
m += n;
if (i == x - 1)
{
n = m;
i = 0;
j++;
}
}
}
MessageBox.Show($"m = {m}, Math.Pow(x,y) = {Math.Pow(x, y)}");
}