PDA

View Full Version : کمک در نوشتن برنامه ای به کمک ریاضی؟



Ali0541
پنج شنبه 05 خرداد 1390, 23:18 عصر
سلام
می خوام یه برنامه بنویسم که سری زیر رو حساب کنه؟ تا 20 جمله
20- ... 6- 5+ 4- 3+ 2- 1+
اگه میشه بگین ریاضیش چطوری بدست میاد؟

amir.01
جمعه 06 خرداد 1390, 00:14 صبح
اگر اعداد زوج 1 تا 20 را (2 و 4 و ... و 20) را بر دو تقسیم کنی برابر (1 و 2 و ... و10) مشوند که فرمول محاسبه ی n عدد متوالی n * (n – 1) / 2 است یعنی 2/ 10 * 9 که تقسیم بر دو زا به خاطر اون تقسیم اولی خط می زنیم پس حاصل زوج ها مشود – 90 . حال اعداد فرد یعنی (1 و 3 و 5 و 7 .... و 19)زا اگر همگی + 1 کنیم برابر (2 و 4 و ... و 20) مشوند که قیلا محسابه کردیم برابر 90 می شود . فقط چون 10 بار +1 کردیم در آخر حاصل رو – 10 هم می کنیم:لبخندساده:

Arcsinos
جمعه 06 خرداد 1390, 01:19 صبح
جواب دوستمون amir.01 جالب بود ولی اینم جوابیه که من میتونم بدم :

خب همونطور که میدونید جواب برای 20 جمله ی اول چون جمله ی 20 منفی هست میشه منفی 10 ولی نیازی با پیچوندن نیست (2-1) میشه (-1) و (4-3) هم میشه (-1) و ... (20-19) هم میشه (-1) همونطور که مشخصه تعداد (-1) ها برابر 10 تاست که میشه (10-) و جواب رو بدست آووردیم . که برابر منفی تعداد جملات تقسیم بر 2 هست . حالا اومدیمو تعداد جملات (n) فرد بود میاییم جواب رو برای n-1 بدست میاریم که میشه (n-1) تقسیم بر دو و در آخر چون جمله ی آخر مثبت هست با اون جمع میکنیم .

بر فرض تعداد جملات 21 باشه . خب تا 20 که جواب شد 10- پس 10 تا از 21 کم میکنیم و جواب میشه مثبت 11 .

موفق باشید .

یوسف زالی
جمعه 06 خرداد 1390, 01:35 صبح
یه فزمول کلی برای محاسبه سری با برنامه هست.
کاقیه بتونیم فرم Sigma اون رو در بیاریم.
مثلا همین فرمول بالا میشه :
Sigma (-1)^(n+1) * n
حالا تو یه حلقه می ندازیم از شروع n تا پایان n.
حاصل رو تو Sum جمع می کنیم.
هر سری پیچیده ای رو میشه در آورد.
مثلا اگه داشتیم :
1/(1!) - 2/(2!) + 3/(3!) ..
فرم Sigma میشه:
Sigma (-1^n+1) * n/(n!)

Ali0541
جمعه 06 خرداد 1390, 10:47 صبح
جواب دوستمون amir.01 جالب بود ولی اینم جوابیه که من میتونم بدم :

خب همونطور که میدونید جواب برای 20 جمله ی اول چون جمله ی 20 منفی هست میشه منفی 10 ولی نیازی با پیچوندن نیست (2-1) میشه (-1) و (4-3) هم میشه (-1) و ... (20-19) هم میشه (-1) همونطور که مشخصه تعداد (-1) ها برابر 10 تاست که میشه (10-) و جواب رو بدست آووردیم . که برابر منفی تعداد جملات تقسیم بر 2 هست . حالا اومدیمو تعداد جملات (n) فرد بود میاییم جواب رو برای n-1 بدست میاریم که میشه (n-1) تقسیم بر دو و در آخر چون جمله ی آخر مثبت هست با اون جمع میکنیم .

بر فرض تعداد جملات 21 باشه . خب تا 20 که جواب شد 10- پس 10 تا از 21 کم میکنیم و جواب میشه مثبت 11 .

موفق باشید .


من دقیق متوجه منظورتون نشدم
میشه یکم بیشتر توضیح بدید؟

amir.01
جمعه 06 خرداد 1390, 11:47 صبح
اگر اعداد منفی رو با هم جمع کنیم و اعداد مثبت را با هم و بعد جمع اون دو تا جمع کنیم مثل اینیکه کل اعداد رو با هم جمع کردیم .اعداد منفی در این رشته اعداد برابرند با ((-2) + (-4) + ... + (-20)) که تمامی آنها زوجند و منفی اند پس می تونیم 2- رو از کل اونها فاکتور بگیریم. پس داریم (-2)*(1 + 2 + 3 + ... + 10) که اعداد 1 تا 10 را مجموعشان را از فرمول n * (n – 1) / 2 به دست می آوریم که برابر 45 می شود . حالا اون -2 ای که فاکتور گرفتیم رو دوباره بر میگردونیم و 45 رو در -2 ضرب می کنیم که حاصل -90 مشود.پس حاصل جمع اعداد منفی برابر -90 شد . حالا اعداد مثبت را یعنی 1 + 3 + 5 .... + 19که

اگر به هر کدام از اعداد آن یکی اضافه کنیم میشوند 2 + 4 + 6 + .. + 20 که قبلا حساب کردیم مجموعشان برابر 90 می شوند . حالا چون به هر کدوم از اون 10 تا عدد یکی اضافه کرده بودیم 10 رو از 90 کم می کنیم که برابر 80 میشود پس مجمع اعداد زوج و فرد برابر (-90) + 80 = -10 میشود

Arcsinos
جمعه 06 خرداد 1390, 12:10 عصر
من دقیق متوجه منظورتون نشدم
میشه یکم بیشتر توضیح بدید؟

فقط کافیه اعداد رو دوتا دوتا پرانتز گذاری کنی همین . (20-19) + .... + (6-5) + (4-3) + (2-1) که میشه (1-) +... + (1-) + (1-) که میشه 10- .

برای n های زوج : (n/2)-
برای n های فرد :(n -((n-1)/2

Ali0541
جمعه 06 خرداد 1390, 16:00 عصر
من متوجه نشدم نمی دونم چرا.
این کد دستوریه که سری فیبوناجی رو تا 20 جمله حساب می کنه.
اما این سری رو نمی دونم چطوری حساب کنم؟

#include<stdio.h>
#include<conio.h>
void main(void)
{
int a,b,c,k;
clrscr();
a=1;
b=1;
printf(" %d %d",a,b);
k=2;
L1:c=a+b;
printf(" %d",c);
a=b;
b=c;
k=k+1;
if(k<=20)
goto L1;
getch();
}//end main

drstrike
جمعه 06 خرداد 1390, 23:44 عصر
می خوام یه برنامه بنویسم که سری زیر رو حساب کنه؟ تا 20 جمله
20- ... 6- 5+ 4- 3+ 2- 1+

اما این سری رو نمی دونم چطوری حساب کنم؟
سلام دوست عزیز
حساب کردن این سری که کار سختی نیس،زیادی به مسئله پیچیدیا!
- یه متغیر - مثلا - sum بگیر، مقدار اولیه اش 0 باشه (واسه اینکه روی جواب سری تاثیر نزاره)
- به حلقه for بزار از 1 تا 20
- یه شرط نگهبان تو حلقه بزار، اگه اندیس حلقه فرد بود : sum رو + اندیس کن
- در غیر این صورت sum رو منهای اندیس کن.
- و در آخر sum را چاپ کن.
همین :لبخندساده:

Ali0541
شنبه 07 خرداد 1390, 08:47 صبح
از همه ی دوستان ممنونم که کمک کردن مخصوصا Arcsinos (http://barnamenevis.org/member.php?137710-Arcsinos) عزیز.
اینم کد دستور این سری که با کمک دوستان نوشتم.

#include<stdio.h>
#include<conio.h>
void main(void)
{
int n,i;
clrscr();
n=20;
for(i=1;i<=n;i++)
{
if(i!=n)
if((i%2)==0)
printf(" -%d",i);
else
printf(" +%d",i);
else
printf(" -%d",i);
}
getch();
}//end main