• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

کجای این برنامه مشکل داره؟(برنامه حل معادله درجه 2)

Agha_Jo0n

Registered User
تاریخ عضویت
19 جولای 2011
نوشته‌ها
3,768
لایک‌ها
2,980
محل سکونت
Unknown
سلام
دوستان من این برنامه رو نوشتم الان هر عددی وارد میکنم rishe haghighi nadarad رو چاپ میکنه
کجاشو اشتباه کردم؟
من که هرچی فک کردم نفهمیدم کجاش اشکال داره؟
مرسی


کد:
#include<iostream.h>
#include<math.h>
main()
{
int a,b,c,delta;
float x1,x2;
cin>>a>>b>>c;
delta=b*b-4*a*c;
if(delta>0)
{
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
cout<<x1<<"\t"<<x2;
}
else if(delta==0)
{
x1=-b/(2*a);
x2=x1;
cout<<x1<<"\t"<<x2;
}
else
cout<<"rishe haghighi nadarad";
}
 

signup1389

Registered User
تاریخ عضویت
10 دسامبر 2010
نوشته‌ها
189
لایک‌ها
17
محل سکونت
محمدشهر
به جای استفاده از else و else if برای هر سه حالت از دستور if استفاده کن ببین درست میشه
 

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
از چه کامپایلری استفاده می کنید؟؟
 

Agha_Jo0n

Registered User
تاریخ عضویت
19 جولای 2011
نوشته‌ها
3,768
لایک‌ها
2,980
محل سکونت
Unknown

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
بنده در ویژوال 2010 کامپایل کردم.(البته با یکسری تغییرات در برنامه به خاطر نوع کامپایلر)

خدمت آقا جون . همیشه اگر متغیرهایی از نوع int در کنار float دارید همه متغیرها رو از نوع float تعریف کنید .
کد:
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace::std;

int main()
{
    float x1, x2, a, b, c, delta;
    cin >> a >> b >> c;
    delta = b * b - 4 * a * c;
    if ( delta > 0 )
    {
        x1 = ( -b + sqrt( delta ) ) / ( 2 * a );
        x2 = ( -b - sqrt( delta ) ) / ( 2 * a );
        cout <<x1 << "\t" << x2;
    }
    else if ( delta == 0 )
    {
        x1= -b / ( 2  *a );
        cout << x1;
    }
    else
        cout << "rishe haghighi nadarad" << endl;
    getch();
    return 0;
}
 

Agha_Jo0n

Registered User
تاریخ عضویت
19 جولای 2011
نوشته‌ها
3,768
لایک‌ها
2,980
محل سکونت
Unknown
بنده در ویژوال 2010 کامپایل کردم.(البته با یکسری تغییرات در برنامه به خاطر نوع کامپایلر)

خدمت آقا جون . همیشه اگر متغیرهایی از نوع int در کنار float دارید همه متغیرها رو از نوع float تعریف کنید .
کد:
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace::std;

int main()
{
    float x1, x2, a, b, c, delta;
    cin >> a >> b >> c;
    delta = b * b - 4 * a * c;
    if ( delta > 0 )
    {
        x1 = ( -b + sqrt( delta ) ) / ( 2 * a );
        x2 = ( -b - sqrt( delta ) ) / ( 2 * a );
        cout <<x1 << "\t" << x2;
    }
    else if ( delta == 0 )
    {
        x1= -b / ( 2  *a );
        cout << x1;
    }
    else
        cout << "rishe haghighi nadarad" << endl;
    getch();
    return 0;
}
سلام
ممنون سعید جان
فقط میخاستم ببینم مشکلش از کجاست؟
الان فقط مشکل اینه که تمام متغیرها رو از نوع float تعریف نکردم؟
الان امتحان کردم همشو از نوع float تعریف کردم بازم اشتباه عمل میکنه:(
آخه مشکل از کجاست؟:(
 

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
سلام
ممنون سعید جان
فقط میخاستم ببینم مشکلش از کجاست؟
الان فقط مشکل اینه که تمام متغیرها رو از نوع float تعریف نکردم؟
الان امتحان کردم همشو از نوع float تعریف کردم بازم اشتباه عمل میکنه:(
آخه مشکل از کجاست؟:(

در ویژوال چون sqrt روی متغیری از نوع int کار می کرد وباید در متغیر float ریخته می شد error میداد که با float کردن همه مشکل حل شد
 

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
متاسفانه روی سیستم سون 64 بیت سوار شده . نمیتونم با turbo c کار کنم
 

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
سلام
ممنون سعید جان
فقط میخاستم ببینم مشکلش از کجاست؟
الان فقط مشکل اینه که تمام متغیرها رو از نوع float تعریف نکردم؟
الان امتحان کردم همشو از نوع float تعریف کردم بازم اشتباه عمل میکنه:(
آخه مشکل از کجاست؟:(

منظورت از اینکه اشتباه عمل می کنه چیه آقا جون؟

یک عکس قبل از اجرای برنامه و یک عکس بعد از اجرای برنامه برام بزار تا خطاهاش رو ببینم شاید بتونم اینطوری کمکت کنم
 

Agha_Jo0n

Registered User
تاریخ عضویت
19 جولای 2011
نوشته‌ها
3,768
لایک‌ها
2,980
محل سکونت
Unknown
منظورت از اینکه اشتباه عمل می کنه چیه آقا جون؟

یک عکس قبل از اجرای برنامه و یک عکس بعد از اجرای برنامه برام بزار تا خطاهاش رو ببینم شاید بتونم اینطوری کمکت کنم

ببین سعید جان منظورم اجرا نکردن نیست
منظورم اینه که مثلا اعداد 5 و 2 و 2 رو به ترتیب وارد میکنی دلتا میشه : (5 به توان 2) منهای 4*2*2 درسته؟
دلتا میشه 9 و مثبت میشه و کامپایلر باید x1 , x2 رو حساب کنه و چاپ کنه درسته؟
اما وقتی 5 و 2و 2 رو وارد میکنی rishe haghighi nadarad رو چاپ میکنه
نمیدونم مشکل از چیه:(
 

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
ببین سعید جان منظورم اجرا نکردن نیست
منظورم اینه که مثلا اعداد 5 و 2 و 2 رو به ترتیب وارد میکنی دلتا میشه : (5 به توان 2) منهای 4*2*2 درسته؟
دلتا میشه 9 و مثبت میشه و کامپایلر باید x1 , x2 رو حساب کنه و چاپ کنه درسته؟
اما وقتی 5 و 2و 2 رو وارد میکنی rishe haghighi nadarad رو چاپ میکنه
نمیدونم مشکل از چیه:(

نه دیگه . اگر 5 و 2 و 2 وارد کنی
میشه==>a=5 & b=2 & c=2
که خروجی میشه ==>ریشه حقیقی ندارد
 

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
شما به ترتیب 2 و 5 و2 رو وارد کن تا نتیجه رو ببینی ک نتیجه میشه

x1=-0.5
x2=-2
 

galaxysky

Registered User
تاریخ عضویت
2 مارس 2011
نوشته‌ها
3,319
لایک‌ها
644
محل سکونت
Tehran
سلام
ممنون سعید جان
فقط میخاستم ببینم مشکلش از کجاست؟
الان فقط مشکل اینه که تمام متغیرها رو از نوع float تعریف نکردم؟
الان امتحان کردم همشو از نوع float تعریف کردم بازم اشتباه عمل میکنه:(
آخه مشکل از کجاست؟:(
برنامه کاملا درست عمل میکنه
فقط این شرط رو هم براش بذاری که a باید مخالف صفر باشه بهتره!


کد:
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace::std;


int main()
{
    float x1, x2, a, b, c, delta;
    cin >> a >> b >> c;
	if(a!=0) {
    delta = b * b - 4 * a * c;
    if ( delta > 0 )
    {
        x1 = ( -b + sqrt( delta ) ) / ( 2 * a );
        x2 = ( -b - sqrt( delta ) ) / ( 2 * a );
        cout <<x1 << "\t" << x2;
    }
    else if ( delta == 0 )
    {
        x1= -b / ( 2  *a );
        cout << x1;
    }
    else
		cout << "rishe haghighi nadarad" << endl;
	}
	else {
		x1=-c/b;
		cout<<"moadeleye shoma daraje yek va risheye an  "<<x1<<"  ast!\n"; }
    getch();
    return 0;
}
[/QUOTE]
 
Last edited:

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
برنامه کاملا درست عمل میکنه
فقط این شرط رو هم براش بذاری که a باید مخالف صفر باشه بهتره!

else آخر بدرد این برنامه با این کد نویسی نمیخوره
کد:
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace::std;


int main()
{
    float x1, x2, a, b, c, delta;
    cin >> a >> b >> c;
    if(a!=0) {
    delta = b * b - 4 * a * c;
    if ( delta > 0 )
    {
        x1 = ( -b + sqrt( delta ) ) / ( 2 * a );
        x2 = ( -b - sqrt( delta ) ) / ( 2 * a );
        cout <<x1 << "\t" << x2;
    }
    else if ( delta == 0 )
    {
        x1= -b / ( 2  *a );
        cout << x1;
    }
    else
        cout << "rishe haghighi nadarad" << endl;
    }
    else
        x1=-c/b;
    cout<<"moadeleye shoma daraje yek va risheye an "<<x1<<"ast!\n";
    getch();
    return 0;
}
[/QUOTE]

else آخر بدرد این برنامه با این کد نویسی نمیخوره
 

sezar

Registered User
تاریخ عضویت
24 مارس 2006
نوشته‌ها
245
لایک‌ها
54
تقدم جمع و تفريقهات رو مشخص نكردي. مثلا
delta=b*b-4*a*c;
با پرانتر بايد تقدمشون نسبت به هم رو تعريف كني.
برگرد و بخش تقدم عملگرها رو مطالعه كن
ياعلي
 

Agha_Jo0n

Registered User
تاریخ عضویت
19 جولای 2011
نوشته‌ها
3,768
لایک‌ها
2,980
محل سکونت
Unknown
شما به ترتیب 2 و 5 و2 رو وارد کن تا نتیجه رو ببینی ک نتیجه میشه

x1=-0.5
x2=-2

سعید جان دمت گرم:D
زدی تو خال
ببین یه اشتباه کوچیک آدمو به کجا میرسونه
من بجا اینکه عدد دومو زیاد وارد کنم که دلتا مثبت بشه همیشه عدد اول رو بیشتر وارد میکردم و میگفتم چرا درست عمل نمیکنه:D
چند روز مثه خوره به جونم افتاده بود کجاش اشتباهه:eek:
بازم مرسی سعید جان
حالا خوب شد مثال زدم:D

برنامه کاملا درست عمل میکنه
فقط این شرط رو هم براش بذاری که a باید مخالف صفر باشه بهتره!


کد:
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace::std;


int main()
{
    float x1, x2, a, b, c, delta;
    cin >> a >> b >> c;
	if(a!=0) {
    delta = b * b - 4 * a * c;
    if ( delta > 0 )
    {
        x1 = ( -b + sqrt( delta ) ) / ( 2 * a );
        x2 = ( -b - sqrt( delta ) ) / ( 2 * a );
        cout <<x1 << "\t" << x2;
    }
    else if ( delta == 0 )
    {
        x1= -b / ( 2  *a );
        cout << x1;
    }
    else
		cout << "rishe haghighi nadarad" << endl;
	}
	else
		x1=-c/b;
	cout<<"moadeleye shoma daraje yek va risheye an "<<x1<<"ast!\n";
    getch();
    return 0;
}
[/QUOTE]


سلام
آقا ممنون از پاسخ دادنتون
یه سوال؟
else آخر چیکار میکنه؟متوجه نشدم
 

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
تقدم جمع و تفريقهات رو مشخص نكردي. مثلا
delta=b*b-4*a*c;
با پرانتر بايد تقدمشون نسبت به هم رو تعريف كني.
برگرد و بخش تقدم عملگرها رو مطالعه كن
ياعلي

تقدم ضرب از تفریق بیشتره و به هیچ وجه نیازی به پرانتز در این مثال نمی باشد
 

saeed engine

محروم از فعالیت تجاری
محروم از فعالیت تجاری
تاریخ عضویت
11 دسامبر 2011
نوشته‌ها
1,357
لایک‌ها
300
سعید جان دمت گرم:D
زدی تو خال
ببین یه اشتباه کوچیک آدمو به کجا میرسونه
من بجا اینکه عدد دومو زیاد وارد کنم که دلتا مثبت بشه همیشه عدد اول رو بیشتر وارد میکردم و میگفتم چرا درست عمل نمیکنه:D
چند روز مثه خوره به جونم افتاده بود کجاش اشتباهه:eek:
بازم مرسی سعید جان
حالا خوب شد مثال زدم:D


سلام
آقا ممنون از پاسخ دادنتون
یه سوال؟
else آخر چیکار میکنه؟متوجه نشدم[/QUOTE]

داداش میشد این سوالو طوری نوشت که else آخر در اول برنامه به کار بیاد و لی چون برنامه شما یکمی کدش فرق می کنه else آخرهیچ وقت اجرا نمیشه
 

Agha_Jo0n

Registered User
تاریخ عضویت
19 جولای 2011
نوشته‌ها
3,768
لایک‌ها
2,980
محل سکونت
Unknown
سلام
آقا ممنون از پاسخ دادنتون
یه سوال؟
else آخر چیکار میکنه؟متوجه نشدم

داداش میشد این سوالو طوری نوشت که else آخر در اول برنامه به کار بیاد و لی چون برنامه شما یکمی کدش فرق می کنه else آخرهیچ وقت اجرا نمیشه[/QUOTE]

اصلا else آخر چیکار میکنه؟
شرمنده من یکم ریاضی ضعیفه:D
 
بالا