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

ابي تصحيح للاخطاء في هالبرنامج c++

مغلق
بدأه albronzy في 8 يونيو 2007 · 2 رد · 521 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عند هالبرنامج يخليك تدخل عدة ارقام بشكل متتالي و تقدر توقفه ان ادخلت اي عدد سالب او لم تدخل اي شي او اي قيمه, و بعدها يطلع لك العدد الاصغر ثم الاكبر بشكل التالي

smallest:Largest

و ان ادخلت عدد سالب او لا شيء من البدايه راح يطلع لك مسج

NOTHING TO PROCESS

انا البرنامج حاولت فيه يشتغل بس النتائج خاطئه دائما ان شاء الله تساعدوني

هنا الكود

</SPAN>كود:

#include <iostream>

using namespace std;

void determine (int smallest, int largest);

int main()

{

int small,large;

determine (small,large);

if ((large>=0) && (small>=0))

{

cout<<small<<":"<<large<<endl;

}

else

{cout<<"NOTHING TO PROCESS"<<endl;

}return 0;

}

void determine (int smallest, int largest)

{

int number=0;

number=smallest=largest;

cout<<"Please enter a number (negative value to end):";

cin>>number;

if (number>largest)

largest=number;

if

(number<smallest)

smallest=number;

//if(number<0)

//break;

}

return;

}

ملاحظه::: البرنامج ابغاه بنفس الفنكشن و البورتوتايب بس ابي تعديل في المعادلات و ما ابغى ارري فيه

#2

بسم الله الرحمن الرحيم

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

مع أني ماخذ أجازة من الإنترنت نهاية شهر ستة بس ما قدرت إني ما أدخل على المنتدى

أخي البرونزي أود أن أقول لك عن الأخطاء التالية :

1-

int small,large; 
determine (small,large);

هنا أنت قمت بتمرير المتحولات إلى البرنامج الجزئي علما بإنك لم تضع قيمة إبتدائية لهذه القيم وفي الفنكشن قمت بجعل المتحول number مساويا للمتحول largest علما بأنه يحتوي على قيمة إفتراضية

2-

  
if ((large>=0) && (small>=0)) 
{ 
cout<<small<<":"<<large<<endl; 
} 
else 
{cout<<"NOTHING TO PROCESS"<<endl; 
}return 0; 
}

في باقي البرنامج هنا قمت بالإعتماد على المتحولين small و large علما بإنها لا تزال قيم فارغة بدون آي قيمة (وذلك لأن القيمة عندما تدخل في فنكشن لا تتغير نهائيا إلا إذا مررت للفنكشن بالمرجع آي يكون شكل البروتوتايب هكذا

void determine (int &smallest, int &largest);

وعندها فقط كل تغيير يطرأ على المتحولات الداخلة في الفنكشن سوف يحدث تغييرا في المتحولات الأساسية التي دخلت في الفنكشن

3- في الفنكشن قمت أو كنت تريد أن تجعل جميع القيم مساوية للصفر إذا لم أخطئ وهكذا ستكون أصغر قيمة هي دائما مساوية للصفر وذلك لأنه لا يمكن إدخال رقم أصغر من الصفر

4- أخي لقد قمت بتعديل البروتوتايب لكي يعمل البرنامج على أكمل وجه حيث تستطيع أخذ فكرة الحل من هذا البرنامج بالإضافة إلى تغيير المعادلة الخاصة بالبرنامج

فكرة الحل : هي أن يقوم المستخدم بإدخال رقم قبل الحلقة حيث يكون هذا الرقم هو الرقم الإفتراضي لجميع المتحولات ثم أدخل إلى حلقة شرطها عنصر غير مساوي للصفر ثم ندخل فيها رقم أخر من المستخدم ثم ندخل في شرط إذا كان الرقم المدخل أكبر من الصفر يدخل ثم نقوم بوضع الشروط التي وضعتها أنت في برنامجك ثم نضع الحالة الأخرى من الشرط وهو أن العنصر يساوي الصفر لكي يخرج من الحلقة في حال لم يوافق الشروط

على كل حال أخي هذا البرنامج سيوضح كلامي :

#include <iostream> 
using namespace std; 
void determine (int &smallest, int &largest); 
int main() 
{ 

int small,large; 
determine (small,large); 
cout <<large<<"  "<<small;

if ((large>=0) && (small>=0)) 
{ 
cout<<small<<":"<<large<<endl; 
} 
else 
{cout<<"NOTHING TO PROCESS"<<endl; 
}return 0; 
} 




void determine (int &smallest, int &largest) 
{ 
int number=0; 
number=smallest=largest; 
cout<<"Please enter a number (negative value to end):"; 
cin >>number;
smallest=largest=number;
do {

cin>>number;
if (number!=0&&number>0)
	{
if (number>largest) 
largest=number; 

if (number<smallest) 
smallest=number;  
	}
	else
	number=0;
}while (number >0);


}

أتمنى أن أكون قد أفدت

أخوك في الله سامر

إن كلماتنا ستبقى ميتة أعراساً من الشموع لا حراك فيها جامدة ، حتى إذا متنا من أجلها انتفضت حية وعاشت بين الأحياء ، كل كلمة عاشت كانت قد اقتاتت قلب إنسان حي ، فعاشت بين الأحياء ، والأحياء لا يتبنون الأموات

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#3

#include <iostream>

using namespace std;

void determine (int smallest, int largest);

int main()

{

int small,large;

cout<<"Please enter a number (negative value to end): ";

cin >> small>>large;

if ((large>=0) && (small>=0))

{

while ((small>0)&&(large>0))

{

determine (small,large);

cout<<"Please enter a number (negative value to end): ";

cin >> small>>large;

}

}

else

{

cout<<"NOTHING TO PROCESS"<<endl;

}

return 0;

}

///--------------------------------------------

void determine (int number1, int number2)

{

int largest=number1;

int smallest=number2;

if (number1<smallest)

{

largest=number1;

smallest=number2;

}

if (number2>largest)

{

largest=number2;

smallest=number1;

}

cout<<largest<<":"<<smallest<<endl;

}

هذا هو تصيحي ... لا تنسونا من صالح دعائكم ...أخوانكم في عمان

الـدهـر يـومان ذا أمـن وذا خــطر******* والعيش عيشان ذا صفو وذا كـدر

أمـا تـرى الـبحر تعلو فوقه جـيف****** وتـسـتـقـربإقصى قــاعـه الــــــدرر

وفــي الـسـماء نـجوم لاعـداد لـها ****** ولـيس يـكسف إلا الشمس والقمر

هذا الموضوع مغلق.

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