الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

How can solve this !

بدأه Beginner Programmer في 22 أكتوبر 2010 · 11 رد · 1,239 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

حبآيبي

عندي هالسؤال :

Write a program that solve an algebraic equation of the second degree ax2+ bx+c=0.

وطلب مني آستخدام math library

وهذي محاولتي في الحل


#include <math.h>

using namespace std;
int delta(int a,int b, int c);
{
int r;
r=((b*b)-(4*a*c)); // Calculate delta
return r;}

int main(){
int a,b,c;
float x1,x2;
cout << "Quadratic eq solver" << endl;
do{
cout << "Input a: ";
cin >> a;
if (a==0)

cout << "Input b: ";
cin >> b;
cout << "Input c: ";
cin >> c;
if (delta(a,b,c)>=0){
x1=(-b+sqrt(delta(a,b,c)))/2*a;
x2=(-b-sqrt(delta(a,b,c)))/2*a;
if (x1!=x2) //If delta > 0 then show the value of X
cout << x1 << ", " << x2 << endl; //If x1 is ot equal to x2 show the two values
else // Else the show only the value of x1
cout << x1 << endl;}
else
cout << "Negative delta!" << endl;
cout << "------------------------------\n\n";}
while (a!=0);

return 0;
}
#include <iostream>

لكن يعطيني خطأ =(

تعبت من هالسؤال

ما ادري وين الخطأ بالكود !!

آتمنـى مساعدتكـم ..~

تم تعديل هذه المشاركة بواسطة Beginner Programmer في 22 أكتوبر 2010 في 00:34

#2

الخطأ انك قمت بتعريف دالة ووضعت بعدها فاصلة منقوطة

int delta(int a,int b, int c);

فقط أزل الفاصلة وسيعمل البرنامج .

#3
#include <iostream>
#include <math.h>

using namespace std;
float delta(float a,float b, float c)
{

   return ((b*b)-(4*a*c)); // Calculate delta

}
int main(){
    float x1,x2,a,b,c;
    cout << "Quadratic eq solver" << endl;    
    do{
        cout << "Input a: ";
        cin >> a;
	}while (a==0);
        cout << "Input b: ";
                 cin >> b;
        cout << "Input c: ";
                 cin >> c; 
              if (delta(a,b,c)>0){
                         x1=(-b+sqrt(delta(a,b,c)))/(2*a);
                         x2=(-b-sqrt(delta(a,b,c)))/(2*a);
                   if (x1!=x2)             //If delta > 0 then show the value of X
                        cout << x1 << ", " << x2 << endl; //If x1 is ot equal to x2 show the two values
                    else        // Else the show only the value of x1
                        cout << x1 << endl;}
			  else if (delta(a,b,c)==0)
			  { 
				  x1 = -b/(2*a);
                  cout<<x1<<endl; }
                    else
                                 cout << "Negative delta!" << endl;
           cout << "------------------------------\n\n";

    return 0;
        }

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#4

ششكراً لكم بحجـم الكون

ولكم تقيمي

جزاكم الله خييراً ..~

#5

حبآيبي المبرمجيـن

هل أستطيـع حل هذا السؤال بدون أستخدام جملـة الشرط if !!

تم تعديل هذه المشاركة بواسطة Beginner Programmer في 24 أكتوبر 2010 في 01:39

#6

لا ادرى لكن ما تعلمته يدل على ان افضل شئ هو if من الممكن استخدام switch ربما و انا غير متأكد .

تم تعديل هذه المشاركة بواسطة XMasterrrr في 24 أكتوبر 2010 في 01:52

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#7

المطلوب أستخدام القانون العـام لـ المعادلـة من الدرجـة الثانيـة

وعلى المستخدم أدخـال A,B,C

والمخرجـات تكون ناتج المعـادلة من الدرجـة الثانيـة عن طريق القـانون العـام !!

بدون أستخدام جملـة الشرط if

تم تعديل هذه المشاركة بواسطة Beginner Programmer في 24 أكتوبر 2010 في 15:10

#8

هذي محاولـتي في الحل بدون أستخدام if

#include<iostream>
#include<cmath>
using namespace std;
int main ()
{
int a,b,c,s;
double delta;
cin>>a>>b>>c;
s=sqrt(b);
delta=s-(4*a*c);
cout <<"x1="<<((-b)+sqrt(delta))/(2*a)<<endl;
cout <<"x2="<<((-b)-sqrt(delta))/(2*a)<<endl;

return 0;
}

وأعطـاني خطأ في هذي الجملـه

s=sqrt(b);

كيف أصححهـا =(

#9
Beginner Programmer كتب:

وأعطـاني خطأ في هذي الجملـه

s=sqrt(b);

كيف أصححهـا =(

غيري نوع المتغير S إلى float أو double ,

بالنسبة لمحاولتج , ناتج المعادلة دائمًا بيطلع حلين , يعني فرضتي أن المميز موجب ..

و تجاهلتي إمكانية كونه سالب أو مساوي للصفر :wink: ..

بالتوفيق :happy: ,

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#10

لأن الأستـاذة طلبت حل المسألة بدون أستخدام if

فجربت حلول كثيره ولـم تنجح =(

#11

السلام عليكم

عفوا على تأخير الرد (مشغول بظروف قاهرة ...! :blush: )

أظن أن الفكرة تعتمد على استخدام المؤثر الشرطي ؟ و قاعدته كالتالي :

exp ? exp_1 : exp_2;

ويعني إنه إذا كانت العبارة exp محققة فقم بتنفيذ الأمر/الأوامر exp_1 و إلا فقم بتنفيذ الأمر/الأوامر exp_2

و العبارة السابقة تكافئ :

if(exp == true)
exp_1;
else
exp_2;

حاولي كتابة الكود بهذه الطريقة و إذا وجدت أي استشكال فأنا في الخدمة :)

=====

أعتذر عن التقصير لضيق الوفت :blush: سامحونا :happy:

#12

مرحبا, عدت من جديد :)

في الحقيقة فإن مشاركتي السابقة لا تؤدي المطلوب بشكل كامل ! و السبب يعود إلى أن المؤثر الشرطي يكافي if-else, لاحظي أن الشرط هنا غير متداخل وهذا عكس حالة التمرين !, فلحل التمرين يجب استخدام الشرط المتداخل if-else-if , وذلك لوجود ثلاث حالات, إذا كان المميز موجب,سالب,أو معدوم, من هنا نجد أن استخدام المؤثر الشرطي لا يعطي النتائج بدقة كاملة و إنما سيلزمنا التخلي عن إحدى حالات المميز (لكي يكون الشرط بسيطا) مثل "انعدام المميز delta = 0" فيكون الشرط هو :

إذا كان المميز موجبا فقم بتنفيذ الأوامر رقم 1 و إلا (في هذه الحالة فإن المميز سيكون سالب لأننا سنتجاهل حالة الإنعدام) فقم بتنفيذ الأوامر رقم 2.

أرجو أن أكون قد أفدتك :)

سلامي.

تم تعديل هذه المشاركة بواسطة khaled_prg في 25 أكتوبر 2010 في 05:23

مواضيع مشابهة