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

  • BATOL

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

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

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

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

وشكرا


التعليق السابق

تقصد مصفوفة ثنائية لحفظ البيانات المدخلة، لعرضها لاحقا

في السؤال المطلوب هو عرض المجموع فقط، وهذا لا يحتاج إلى مصفوفة، بل يمكن بمتغير واحد (للفأة الواحدة)، أن نجمع كل ما يدخله المستخدم مع قيمة هذا المتغير.

ثانيًا لو قلنا مصفوفة، فكم سيكون عدد عناصرها؟ لأن عدد مرات الإدخال غير معروفة، ويبدو لي أن دوال إدارة الذاكرة أعلى بكثير من مستوى هذا السؤال.

شكرا على المعلومة :)

إعذرني فأنا معتادة على قول التيتشر

حسنا اذن

لو قلنا أن عدد الصفوف 4 بناء على عدد المستويات الموجودة في السؤال والأعمدة 2

التي ستكون رقم الكلاس والمبلغ الذي تبرع به وعلى ذكر المؤشرات يتوجب علينا في هذا السؤال أن نستخدمها

أيضاً يعني لو كتبت هذا الكود مثلا

int classes[4][2];

for(int row =0;row<4;row++)

for(int col=0;col<2;col++)

{

cout<<"Enter the num and Amount "<<endl;

cin>>classese[row][col];

هكذا سيبدأ بإدخال البيانات اليس كذلك رقم الكلاس و المبلغ ؟

اي يعني اذا دخلت أنا

رقم الكلاس 1 والمبلغ 20

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

يحدث هنا انه يجمع المبلغ مباشرة اي يحذف 20

ويضع مكانها 30 ولو أدخلت مرة أخرى يجمع رقم الكلاس 1 والمبلغ 10

راح يحذف 30 ويضع مكانها 40

وهكذا الى ما اليوزر هو يتوقف عن الادخال بكتابة رقم 999

لكني لا أعلم كيف سوف يجمع المبالغ ويعرضها مباشرة هاذي المشكلة

والمؤشرات مطلوبة هي هذا السؤال مع المصفوفات الثنائية الابعاد

وشكراً

mujahid أضف ردا

لو قلنا أن عدد الصفوف 4 بناء على عدد المستويات الموجودة في السؤال والأعمدة 2

لن تحتاجي لوضع أرقام الفئات في العمود الأول، فهذا يعرف بمؤشر المصفوفة (الذي يوضع بين القوسين المعقوفين "[]")، لكن يمكن أن يكون بمصفوفة متجهة:

unsigned int classes[4];

ولو أردنا أن نعرف قيمة المخزنة للفئة مثلًا الثانية لكتبنا: classes[2]; وثانيًا هذا الأمر لن يدخل إلا متغير واحد فقط:

cin>>classese[row][col];

ولكن يجب عليكي أن تعملي أمري إدخال؛ الأول يطلب رقم الفئة، والثاني يدخل القيمة. ثم بعدها عمل شرط "switch" للرقم الفئة، وفي كل حالة من حالات الشرط، هناك أمر جمع للعدد الثاني المدخل، مع متغير المجموع الكلي لتلك الفئة.

لكني لا أعلم كيف سوف يجمع المبالغ ويعرضها مباشرة هاذي المشكلة

هذه هي روح البرمجة، فهي مثل الكلام؛ حيث تستخدم أدوات اللغة للتعبير عن ما تريد. كذلك الأمر في البرمجة فهي استخدام أدوات اللغة البرمجة لتنفيذ ما تريد. ولكن يمكنكي أن تعملي متغير إدخال، هذا المتغير يوضع به ما يدخله المستخدم، وبعد تحديد الفئة، تضاف قيمة متغير الإدخال إلى متغير الفئة.

ملاحظة أخرى:

أضيفي ثلاثة (أو أربعة) فراغات قبل الشفرة لتظهر بهذا الشكل:

printf("By the name of Allah\n");