بواسطة في 13-05-2011 عند 09:04 (1913 الزيارات)
السلام عليكم و رحمة الله و بركاته
سأتحدث في هذا المقال عن كيفية السؤال عن مشكلة قد تواجهها خلال كتابة برنامج
لنفترض أن هناك طالبا اسمه بسوم يحتاج مساعدة في واجب في مادة البرمجة
لنتخيل أن محادثة حدثت في منتدى من المنتديات بين بسوم و روح سامية الذي صادف أن كان مستعدا للمساعدة
لاحظوا أيضا فيم يفكر روح سامية حين يقرأ كلام بسوم
الرسالة الأصلية كتبت بواسطة بسوم
السلام عليكم
كيف أحوالكم يا شباب ؟
عندي واجب سي++ و أحتاج مساعدة الله يخليكم
write a program that takes a maximum of 6 positive numbers from the user. after that, it calculates the average of the input numbers. if the user enters a zero or a negative number, the program stops taking input and calculates and prints the average of input numbers not including the negative number.
example of output
1 2 4 5 7 8
average = 4.5
another example of output
1 2 4 -1
average = 2.3333333
مشكورييييييييييييين
الرسالة الأصلية كتبت بواسطة روح سامية
<كل كلامه عربي إلا السؤال ، ناسخ لي السؤال كله نسخ و يمكن حتى ما قراه
>
و عليكم السلام
يالحبيب ترى ما نفهم انجليش
ترجم و إن شاء الله نقدر نساعد
الرسالة الأصلية كتبت بواسطة بسوم
شكرا على الرد أختي
السؤال يطلب ستة أرقام موجبة من المستخدم بعدين يحسب متوسط الأرقام الستة
لو كتب المستخدم صفر أو عدد سالب يوقف البرنامج عن أخذ المدخلات و يطبع المتوسط للأعداد اللي دخلها المستخدم لكن بدون العدد الأخير اللي هو صفر أو سالب
أتمنى تردي بسرعة
الرسالة الأصلية كتبت بواسطة روح سامية
<ما شاء الله عليه فاهم السؤال لكن كأنه يبغي الحل جاهز ، حتى ما كتب برنامج
>
أهلا أخي العزيز
بحسب سؤالك فهناك عدة نقاط :
- طلب ستة أعداد موجبة
- إيقاف طلب الأعداد إذا كان العدد صفرا أو سالب
- طباعة متوسط الأعداد المدخلة
ما هي النقطة التي لم تعرفها و ما هي النقاط التي تعرفها
الرسالة الأصلية كتبت بواسطة بسوم
إدخال الأرقام أستخدم فيه cin صح ؟
عادي أقدر أدخل الأعداد واحد واحد , أحطهم في مصفوفة لكن كيف أوقف الإدخال إذا كان العدد سالب ؟
هذا برنامجي :
كود:
#include <iostream>
using namespace std;
int main () {
int num[6];
cin >> num[0];
cin >> num[1];
cin >> num[2];
cin >> num[3];
cin >> num[4];
cin >> num[5];
cout << "average = "
<< (num[0]+num[1]+num[2]+num[3]+num[4]+num[5])/6 << endl;
}
المشكلة أن برنامجي ما يوقف إذا كان العدد صفر أو سالب
أيش أسوي
الرسالة الأصلية كتبت بواسطة روح سامية
<أخيرا عرفنا ما هي المشكلة ، ما قلت من قبل و خلصتنا
>
مرحبا مرة أخرى
يعني مشكلتك في التوقف عند الصفر و السالب
لا مشكلة
أولا الأفضل أن تغير صيغة البرنامج
استخدم حلقة for لطلب المدخل
مثلا :
كود:
for (int i=0;i<6;i++) {
cin >> num[i];
}
مو أحسن
الرسالة الأصلية كتبت بواسطة بسوم
أختي برنامجك ما يوقف إذا كان العدد صفر أو سالب
لازم يوقف
الرسالة الأصلية كتبت بواسطة روح سامية
<تعبنا هذا ، حبة حبة شفيه مستعجل
>
أهلا أخي العزيز
<< لازم نبتسم بعد شنسوي
لا تستعجل أنت حط الحلقة و بعدين نجي للنقاط الثانية
كما ذكرنا هناك ثلاث نقاط و الأولى هي إدخال الأعداد
خلينا نسويها بشكل تمام و لا تخاف
الرسالة الأصلية كتبت بواسطة بسوم
طيب طيب هذا البرنامج بعد التعديل
كود:
#include <iostream>
using namespace std;
int main () {
for (int i=0;i<6;i++) {cin >> num[i];
}
cout << "average = "
<< (num[0]+num[1]+num[2]+num[3]+num[4]+num[5])/6 << endl; }
كيف أوقف إذا العدد صفر أو سالب ؟
الرسالة الأصلية كتبت بواسطة روح سامية
<حلو حلو
>
تمام
الآن تقدر تحط if داخل الحلقة
إذا كان العدد أقل أو يساوي صفر اطلع من الحلقة
الرسالة الأصلية كتبت بواسطة بسوم
يعني تقصدي :
كود:
for (int i=0;i<6;i++) {
cin >> num[i];
if (num[i] <= 0) {اطلع من الحلقة
} }
طيب كيف أطلع من الحلقة ؟
الرسالة الأصلية كتبت بواسطة روح سامية
<تمام تمام
>
أمر break يطلع من الحلقة
يعني
كود:
if (num[i] <= 0) {
break;
}
الرسالة الأصلية كتبت بواسطة بسوم
طيب سويناها
الآن البرنامج يطلع من الحلقة
كود:
for (int i=0;i<6;i++) {
cin >> num[i];
if (num[i] <= 0) {break;
} }
لكن مع ذلك في مشكلة ثانية
نتيجة المتوسط خطأ ؟؟؟
الرسالة الأصلية كتبت بواسطة روح سامية
حلو
الحين سو نفس الشيء على المجموع
احفظ المجموع في متغير قبل ما تقسمه
يعني بدل ما تكتب :
كود:
cout << (num[0]+num[1]+num[2]+num[3]+num[4]+num[5])/6;
أكتب :
كود:
int sum=0;
for (int j=0;j<6;j++) {
sum+=num[j];
}
cout << sum/6;
الرسالة الأصلية كتبت بواسطة بسوم
عدلنا البرنامج زي ما قلتي
لكن نتيجة المتوسط بعدها خطأ
الرسالة الأصلية كتبت بواسطة روح سامية
تمام تمام
الآن بدل ما تكتب
كود:
for (int i=0;i<=6;i++)
في أول حلقة
أكتب
كود:
int i;
for (i=0;i<=6;i++)
يعني أعلن i قبل for
و آخر شيء بدل ما تقسم على 6 في أمر الطباعة
اقسم على i لأن i هو عدد المدخلات من المستخدم
المفترض السؤال انحل هنا
الرسالة الأصلية كتبت بواسطة بسوم
أخيييييييييرا
مشكورة أخت روح سامية على المساعدة
هذا البرنامج النهائي لمن أراد الاستفادة (لكني مليت من التلوين)
كود:
int main () {
int i=0;
for (i=0;i<6;i++) {
cin >> num[i];
if (num[i] <= 0) {
break;
}
}
int sum=0;
for (int j=0;j<6;j++) {
sum+=num[i];
}
cout << "average = "
<< sum/i << endl;
}
الرسالة الأصلية كتبت بواسطة روح سامية
العفو أهلا و نحن بالخدمة
لكن صدقني
أنا ولد ماني بنت شفيك
مكتوب أني ذكر فوق على جنب
تذكروا دائما : أذكروا نقاط البرنامج ثم المشكلة ثم اكتبوا برنامجكم
أتمنى أن تكونوا قد استفدتم
تحياتي
روح سامية
تم تحديثة 26-07-2011 في 07:52 بواسطة روح سامية
الكلمات الدلالية (Tags):
غير محدد
- التصنيفات
-
برمجة