ثلاثية ارقام صحيحة تدعى ثلاثية حسابية اذا كان بالامكان اجراء عملية حسابية من الرقمين الأولان وتكون نتيجة ذلك هو الرقم الثالث (بمساعدة الأربع عمليات الحسابية + - * /) ، مثال: الثلاثية التالية: 5 3 2 هي ثلاثية حسابية لأنه يمكن اجراء تمرين جمع بين الـ 2 والـ 3 ويعطي متيجة 5 وهو الرقم الثالث.
يجب كتابة برنامج الذي يفحص اذا كان يوجد بمصفوفة ارقام صحيحة ثلاثيات حسابية.
البرنامج يقوم باستيعاب مصفوفة اعداد صحيحة باسم arrNum بحجم N ارقام موجبة ويقوم بعرض الثلاثيات الحسابية التي وجدت (عملية الفحص هي من اليسار الى اليمين) حسب مبني عملية قانونية.
كل رقم في المصفوفة يمكن ان يكون بداية ثلاثية موجبة بشرط ان تكون القراءة من اليسار الى اليمين (الثلاثيات التي يتم فحصها هي فقط ثلاثيات الموجودة على التوالي في المصفوفة).
عليكم استعمال وكتابة دوال لكتابة الحل، منها:
getNumbers : دالة التي تستوعب N ارقام صحيحة الى مصفوفة احادية الأبعاد من ملف تكست باسم inputNums.txt، ان فشلت عملية الإدخال يجب ارجاع القيمة 0، وان نجحت ترجع 1.
PrintExercise: دالة التي تستقبل ثلاثة ارقام (ليس بمصفوفة) ورمز الذي يمثل العملية الحسابية وتقوم بطباعة التمرين الملائم (العملية الحسابية تكون بين الرقمين الاولين ومن ثم اشارة = ومن ثم الرقم الثالث في الثلاثية).
FindAllTrioCalculation: دالة التي تستقبل مصفوفة احادية الأبعاد المكوّنة من أرقام صحيحة وموجبة فتقوم وحجم المصفوفة فتقوم بايجاد الثلثايات السابية وتطبع حسب مبنى اسئلة حسابية. هذه الدالة تتساعد بالدوال السابقة ودوال اخرى تحددونها انتم.
عليكم ايضا ان توفروا للمستخدم خيارات تمكّنه من تشغيل البرنامج عدة مرات لكل متواليات مختلفة. هذه الخيارات يجب ان تسمح للمستخدم ان يختار احد العمليات التالية:
1) ادخال متوالية ارقام جديدة من ملف تكست للمصفوفة.
2) طباعة مصفوفة الأرقام الحالية.
3) فحص اذا كانت المصفوفة قانونية (أي تحتوي على اعداد صحيحة موجبة فقط).
4) ايجاد وطباعة الثلاثيات الحسابية (هذه العملية تُنفّذ فقط اذا كانت المصفوفة قانونية، اذا لم تكن قانونية تظهر للمستحدم رسالة ملائمة تخبره بذلك).
5) انهاء البرنامج.
ملاحظات:
يمكن الفرض بأن ملف التكست يحتوي N ارقام كي تتم عملية الادخال، حتى وان كانت عملية الإدخال مكررة.
يمكن اضافة دوال اضافية ملائمة وايضا دوال للخيارات.
مثال لتشغيل البرنامج:
Choose your action from the menu:
1. Get numbers to array
2. Print current array
3. Check array validation
4. Find and print calculating trios
5. End program
Your action: 2
The numbers in the array: 2 3 5 12 60 6 10 16 2 1
1. Get numbers to array
2. Print current array
3. Check array validation
4. Find and print calculating trios
5. End program
Your action: 3
The array is valid
1. Get numbers to array
2. Print current array
3. Check array validation
4. Find and print calculating trios
5. End program
Your action: 4
2 + 3 = 5
5 * 12 = 60
60 / 6 = 10
6 + 10 = 16
There are 4 calculating trios
1. Get numbers to array
2. Print current array
3. Check array validation
4. Find and print calculating trios
5. End program
Your action: 5
Good bye!
وهناك دوال اخرى فكرت في اضافتها وهي كالتالي:
checkValid: دالة التي تستقبل مصفوفة احادية الأبعاد وحجمها وتفحص اذا كانت الأعداد في المصفوفة ملائمة أي اعداد صحيحة وموجبة فقط.
findCalculation: دالة التي تستقبل 3 اعداد صحيحة (ليس بمصفوفة) وترجع القيمة 1 اذا الثلاثية تعتبر ثلاثية حسابية او 0 اذا كانت لا تعتبر ثلاثية حسابية. وايضا ترجع رمز الذي يمثل العملية الحسابية الملائمة للثلاثية.
Menu: دالة التي تقوم بعرض الخيارات للمستخدم.
اللآن انا قمت بكتابة الدالة getNums ، لكني لم اعرف ما هي البرامترات التي اعطيها اياها، هل هو المؤشر على الملف !! ؟
وسؤال آخر وهو كيف يمكنني تحديد طول المصفوفة، حيث ان N ليس ثابت !!!
هذا ما كتبته لكن ظهر لي خطأ بسبب الـ N
- #include <stdio.h>
- #define INPUT "inputNums.txt"
- int getNums (int);
- void main()
- {
- }
- int getNums ()
- {
- int arrNum[N];
- FILE *file;
- file = fopen(INPUT, "r");
- if (file==NULL)
- {
- printf("File Not Found!n");
- return 0;
- }
- else
- {
- fgets(arrNum,N,file);
- return 1;
- }
- }
أرجو المساعدة
وبارك الله فيكم
السلام عليكم
