• 0

كيف أكتب هذا البرنامج بلغة ++c ؟

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

ممكن المساعدة لفهم هاذا السؤال حيث انني طالبة جامعية وهاذا السؤال واجب علي

ولم أستطع أن أفهمه بشكل صحيح

حيث طالب هنا في السؤال ان أعرف 2D Array

ويكون الادخال رقم الكلاس اما 1,2,3,4 ومن ثم أدخل المبلغ الذي تبرع به الكلاس

ومن ثم اعرض المبلغ الذي تبرع به هاذا الكلاس مثلا لو دخلت رقم الكلاس 1 والمبلغ 20

ومن ثم مرة اخرى أدخلت رقم الكلاس 1 والمبلغ 20

هنا يحدث ان تنحذف العشرين وتكون 40 مجموع الذي تبرع به الكلاس

وأظل ادخل الى م تتوقف عملية الادخال

وكتابة البرنامج  بلغة ++c

حيث انني لا أعلم كيف أبدأ بحل هاذا السؤال

هاذا هو السؤال:

 

Addison High School is holding a fundraiser. The freshmen, sophomores, juniors, and
seniors hold a competition to see which class contributes the most money. Write a program
that allows you to enter two numbers for each contribution as it comes in—the
class of the contributor (1, 2, 3, or 4), and the amount contributed in dollars. For example,
perhaps a junior contributes $20. The user would enter a 3 and a 20. The program
continues to accept data until the user types 999 for the contributor’s class. At that
point, data entry is completed, so display the four class totals as well as the number of
the class (1, 2, 3, or 4) that contributed the most

وشكرا

.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1
بتاريخ 14 ساعات قال هشام رزق الله:

هذا الحل كتبته على عجل، ينقصه فقط حساب وطباعة القيم الأعلى:


#include <iostream>
//using namespace std;

int main()
{
	int don[2][100];
	int i = 0;
	int j,x = 0;
	int entrer;
	while (entrer != 999) {
		std::cout << "Enter the class: " << std::endl;
		std::cin >> entrer;
		if (entrer >= 999){
			break;
		}
		don[0][i] = entrer;
		std::cout << "Enter amount: " << std::endl;
		std::cin >> don[1][i];
		i = i +1;
	}
	for (j = 0; j != i; j++) {
		std::cout << "class:= " << don[0][j] << std::endl;
		std::cout << "amount:= " << don[1][j] << std::endl;
		x = x + don[1][j];
		std::cout << "Total : " << x << std::endl;
	}
	return 0;
}

لاحظ كيف استخدمت حلقات التكرار (استخدمت طريقة أخرى أسرع من التي أخبرتك بها سابقا).

لاحظ أيضا كيف عرّفت واستخدمت المصفوفة ثنائية الأبعاد، فالصياغة الصحيح كالتالي:


Type arrayName[numberOfRows][numberOfColumn]; 

حيث ستضع أولا النوع فاسم المصفوفة ثم عدد الأسطر والأعمدة (بعد ذلك الترقيم سيبدأ من 0).

هذا هو الرابط الذي أخبرتك به سابقا والذي يشرح طريقة عمل المصفوفات ثنائية الأبعاد في لغة سي ++.

لقد فهمت

شكرا جزيلا على المساعدة

وجعلها يارب في موازين حسناتك ..

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

ابدأ أولا بإنشاء جدول (array) كالتالي: type arrayName [ x ][ y ]; حيث أن x هو عدد السطور وy هو عدد الأعمدة وبعد ذلك املأ الجدول بطريق عادية عن طريق حلقتي تكرار، الأولى (وهي الأكبر) وتتحرك قيمتها حسب y والثانية وهي الأصغر والتي ستكون قيمتها 1 ثم 2 حيث أن في المرة الأولى ستسجل رقم الكلاس وأما في السطر الثاني ستسجل المبلغ.

في النهاية رتب الجدول بالتوازي بين الأسطر حيث ستكون قيمة الكلاس مرتبطة بالمبلغ أي عند نقل الكلاس انقل معه المبلغ.

في النهاية أعرض أعلى قيم حسب ترتيبها في الجدول.

للمزيد من المعلومات حول الجدول Array يمكنك قراءة هذا المقال.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
انطلاقا من نص السؤال باللغة الانجليزية، يتضح أن الغرض منه هو إنشاء كلاس  تقوم هذا العمل، حيث يدخل المستخدم قيمة التبرع و الصنف، ليتم تخزين القيم إلى حين إدراج القيمة 999 لتنتهي العملية آنذاك، وتظهر النتيجة النهائية لأكبر مبلغ مدرج وفي أي صنف
: مرفق مع وملف نصي به الكود المقترح، أتمنى أن تكون الاستفادة وتأخذي فكرة عما يجدر بك فعله
المراحل

تعريف المتغيرات

إنشاء حلقة تكرار  إلى غاية إدخال 999

قراءة مدخلات المستخدم

حساب وجمع جميع القيم المدخلة حسب الصنف

حساب أكبر مبلغ

طباعة مجموع المبالغ المدخلة وحسب الصنف 1-2-3 أو 4

تمّ تعديل بواسطة E.Nourddine

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

الكود المقترح:

include <iostream>

#include <string>

using namespace std;


int main()

{

// تعريف المتغيرات

int fund[4], con,clas=0,mc=0,i;

string classtr[] ={"freshmen","sophomores", "juniors",

"seniors"};

     // حلقة تكرار while إلى غاية إدخال القيمة 999

     while(clas!=999)

     {

          //قراءة مدخلات المستخدم

          cout<<"1.freshmen \n 2.sophomores \n 3.juniors \n

4.seniors"<<endl;

          cout<<"Enter your class:";

          cin>>clas;

          if(clas!=999)

          {   

            

              cout<<"Enter your contribution amount$:"<<endl;

              cin>>con;

             

              // حساب وجمع جيمع القيم المدخلة حسب الصنف

each class

              if(clas==1)

              {

                   fund[0]=fund[0]+con;

                   con=0;

              }

              else if(clas==2)

              {

                   fund[1]=fund[1]+con;

                   con=0;

              }

              else if(clas==3)

              {

                   fund[2]=fund[2]+con;

                   con=0;

              }

              else if(clas==4)

              {

                   fund[3]=fund[3]+con;

                   con=0;

              }

          }

     }

    

     // حساب أكبر مبلغ

     class

     int max=fund[0];

     for(i=1;i<4;i++)

     {

          if(max<fund[i])

          {

              max=fund[i];

              mc=i;    

          }        

     }

     // طباعة مجموع المبالغ المدخلة وحسب الصنف 1-2-3 أو 4

class

     cout<<"The class and the collected fund:"<<endl;

     for(i=0;i<4;i++)

     {

          cout<<classtr[i]<<" collects $"<<fund[i]<<endl;

     }

     cout<<"The maximum fund collected class is "

     <<classtr[mc]<<" and collected fund is$ "<<fund[mc]<<endl;

    return 0;

}

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 9 ساعات قال هشام رزق الله:

ابدأ أولا بإنشاء جدول (array) كالتالي: type arrayName [ x ][ y ]; حيث أن x هو عدد السطور وy هو عدد الأعمدة وبعد ذلك املأ الجدول بطريق عادية عن طريق حلقتي تكرار، الأولى (وهي الأكبر) وتتحرك قيمتها حسب y والثانية وهي الأصغر والتي ستكون قيمتها 1 ثم 2 حيث أن في المرة الأولى ستسجل رقم الكلاس وأما في السطر الثاني ستسجل المبلغ.

في النهاية رتب الجدول بالتوازي بين الأسطر حيث ستكون قيمة الكلاس مرتبطة بالمبلغ أي عند نقل الكلاس انقل معه المبلغ.

في النهاية أعرض أعلى قيم حسب ترتيبها في الجدول.

للمزيد من المعلومات حول الجدول Array يمكنك قراءة هذا المقال.

أخي لم افهم هاذي النقطة

طريق حلقتي تكرار، الأولى (وهي الأكبر) وتتحرك قيمتها حسب y والثانية وهي الأصغر والتي ستكون قيمتها 1 ثم 2 حيث أن في المرة الأولى ستسجل رقم الكلاس وأما في السطر الثاني ستسجل المبلغ؟

وأيضا هاذه 

في النهاية رتب الجدول بالتوازي بين الأسطر حيث ستكون قيمة الكلاس مرتبطة بالمبلغ أي عند نقل الكلاس انقل معه المبلغ؟ كيف أعمل هاذا الترتيب؟؟

المقال رابطه غير موجود

شكراً للرد أخي :)  

بتاريخ 21 دقائق مضت قال E.Nourddine:

الكود المقترح:


include <iostream>

#include <string>

using namespace std;


int main()

{

// تعريف المتغيرات

int fund[4], con,clas=0,mc=0,i;

string classtr[] ={"freshmen","sophomores", "juniors",

"seniors"};

     // حلقة تكرار while إلى غاية إدخال القيمة 999

     while(clas!=999)

     {

          //قراءة مدخلات المستخدم

          cout<<"1.freshmen \n 2.sophomores \n 3.juniors \n

4.seniors"<<endl;

          cout<<"Enter your class:";

          cin>>clas;

          if(clas!=999)

          {   

            

              cout<<"Enter your contribution amount$:"<<endl;

              cin>>con;

             

              // حساب وجمع جيمع القيم المدخلة حسب الصنف

each class

              if(clas==1)

              {

                   fund[0]=fund[0]+con;

                   con=0;

              }

              else if(clas==2)

              {

                   fund[1]=fund[1]+con;

                   con=0;

              }

              else if(clas==3)

              {

                   fund[2]=fund[2]+con;

                   con=0;

              }

              else if(clas==4)

              {

                   fund[3]=fund[3]+con;

                   con=0;

              }

          }

     }

    

     // حساب أكبر مبلغ

     class

     int max=fund[0];

     for(i=1;i<4;i++)

     {

          if(max<fund[i])

          {

              max=fund[i];

              mc=i;    

          }        

     }

     // طباعة مجموع المبالغ المدخلة وحسب الصنف 1-2-3 أو 4

class

     cout<<"The class and the collected fund:"<<endl;

     for(i=0;i<4;i++)

     {

          cout<<classtr[i]<<" collects $"<<fund[i]<<endl;

     }

     cout<<"The maximum fund collected class is "

     <<classtr[mc]<<" and collected fund is$ "<<fund[mc]<<endl;

    return 0;

}

 

أخي أشكرك جداً على الرد :)

لكن سئلت الاستاذة وقالت بأن في هاذا السؤال سأستخدم المصفوفات ثنائية الابعاد

لانه الواجب تطبيق عليه

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هذا الحل كتبته على عجل، ينقصه فقط حساب وطباعة القيم الأعلى:

#include <iostream>
//using namespace std;

int main()
{
	int don[2][100];
	int i = 0;
	int j,x = 0;
	int entrer;
	while (entrer != 999) {
		std::cout << "Enter the class: " << std::endl;
		std::cin >> entrer;
		if (entrer >= 999){
			break;
		}
		don[0][i] = entrer;
		std::cout << "Enter amount: " << std::endl;
		std::cin >> don[1][i];
		i = i +1;
	}
	for (j = 0; j != i; j++) {
		std::cout << "class:= " << don[0][j] << std::endl;
		std::cout << "amount:= " << don[1][j] << std::endl;
		x = x + don[1][j];
		std::cout << "Total : " << x << std::endl;
	}
	return 0;
}

لاحظ كيف استخدمت حلقات التكرار (استخدمت طريقة أخرى أسرع من التي أخبرتك بها سابقا).

لاحظ أيضا كيف عرّفت واستخدمت المصفوفة ثنائية الأبعاد، فالصياغة الصحيح كالتالي:

Type arrayName[numberOfRows][numberOfColumn]; 

حيث ستضع أولا النوع فاسم المصفوفة ثم عدد الأسطر والأعمدة (بعد ذلك الترقيم سيبدأ من 0).

هذا هو الرابط الذي أخبرتك به سابقا والذي يشرح طريقة عمل المصفوفات ثنائية الأبعاد في لغة سي ++.

تمّ تعديل بواسطة هشام رزق الله
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن