اذهب إلى المحتوى

السؤال

نشر

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

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

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

حيث طالب هنا في السؤال ان أعرف 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

وشكرا

.

Recommended Posts

  • 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
نشر
بتاريخ 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).

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

لقد فهمت

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

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

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...