PDA

View Full Version : مشکل در سری



فرید باباخانی
پنج شنبه 28 شهریور 1392, 11:57 صبح
[SIZE=2]سلام دوستان
مشکل این کد من در نوشتن سری زیر چیه که جواب درست رو نمیده؟
S = 1/2 + 2/3 + 3/4 +… + N-1/N

#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
int n,i;
float sum=0;
cout << "n=\n";
cin >> n;
for (i=2; i<=n; i++)
{ sum += i-1/i;
}
cout << "sum=" << sum;
getch()
}

فرید باباخانی
پنج شنبه 28 شهریور 1392, 12:33 عصر
ببخشید دوستان که کد من نا خواناست

rezaricky
پنج شنبه 28 شهریور 1392, 13:10 عصر
سلام
نتیجه عبارت باید از نوع float باشه که با نوشتن sum += i-1.0/i;
به float تبدیل میشه و خروجی درست رو نشون میده
و بهتره دیگه از هدر conio.h استفاده نکنی
#include <iostream>
using namespace std;
int main(){
int n,i;
float sum=0;
cout << "n=\n";
cin >> n;
for (i=2; i<=n; i++) {
sum += i-1.0/i;
}
cout << "sum=" << sum;
cin.get();
cin.get();
}

فرید باباخانی
پنج شنبه 28 شهریور 1392, 14:53 عصر
ممنون دوست عزیز به جواب نزدیکتر شد ولی همچنان جواب درست نیست...
برای n=3 به جای چاپ 5/6 ، 4.16 چاپ میکند و برای n=4 به جای چاپ 23/12 ، 7.19 را چاپ میکند ؟ چرا؟
گفتی که از سرفایل <conio.h> استفاده نکنم؟چرا؟
2 بار دستور ;()cin.get نوشتی این دستور برای چه کاریه؟

Ananas
پنج شنبه 28 شهریور 1392, 15:19 عصر
سلام.
از پرانتز استفاده کنید:
sum += (i - 1.0f) / i;

rezaricky
پنج شنبه 28 شهریور 1392, 15:20 عصر
نتیجه اشتباه بخاطر اولویت عملگرهاست. چون اولویت تقسیم از تفریق بالاتره اول تقسیم اجرا میشه بعد تفریق
که با پرانتز گذاری حل میشه.
#include <iostream>
using namespace std;
int main(){
int n,i;
float sum=0;
cout << "n=\n";
cin >> n;
for (i=2; i<=n; i++) {
sum += (i-1.0)/i;
cout<<sum<<endl;
}
cout << "sum=" << sum;
cin.get();
cin.get();
}


هدر conio هم برای سیستم عامل dos بود و دیگه ازش استفاده نمیشه
اون دو تا هم کار تابع getch ر انجام میدن