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

السؤال

نشر (معدل)

 

باستخدام لغة ++C،  أكتب برنامج مستخدما المصفوفات أحادية الابعاد يطلب من المستخدم إدخال  5 طلاب ودرجاتهم من لوحة المفاتيح ومن ثم يقوم البرنامج بحساب التالي:

1- حساب مجموع الدرجات الكلي.

2- حساب متوسط الدرجات.

3- حساب أكبر درجة حصل عليها الطالب.

4- حساب أصغر درجة حصل عليها الطالب.

5- حساب عدد الطلبة الحاصلين على درجة 90

6- حساب عدد الطلبة الراسبين (هم الطلبة الحاصلين على درجة أقل من 50)

ملاحظة/ 

-مطلوب استخدام الـدوال لحساب ماهو مطلوب.

-لعمل مصفوفة لاسماء الطلبة استخدم نوع البيانات string

image.png

تم التعديل في بواسطة Wesam Altibi

Recommended Posts

  • 0
نشر (معدل)
#include <iostream>

using namespace std;




int main()
{
    unsigned int n; // اعطاء التطبيق امكانية ادخال عدد متغير من الطلاب
    std::cout << "Enter number of Students: "; // طلب ادخال عدد الطلاب
    std::cin >> n; // استقبال عدد الطلاب
    double** array_result = new double*[n]; // مصفوفة احادية لدرجات الطلاب
    string** array_names = new string*[n];// مصفوفة احادية لاسماء الطلاب
    
    
    int totalres = 0; // اضافة متغير لحساب اجمالي الدرجات
    int largest ; // متغير للحصول على اكبر درجة
    int largest_st ; // رقم الطالب صاحب اكبر درج
    int lowest ; // متغير للحصول على اصغر درج
    int lowest_st ; // رقم الطالب الحاصل على اصغر درجه 
    int nine_st = 0 ; // متغير حساب الطلبه الحاصلين على درجة 90
    int faild_st = 0; // متغير حساب عدد الطلبة الراسبين
    
    
    
    for (int i = 1; i <= n; ++i) // حلقة انشاء المصفوفات على حسب عدد الطلاب 
    {
        array_names[i] = new string[1]; // انشاء مصفوفة الاسماء
        for (int j = 0; j < 1; ++j)
        {
            string name;
            std::cout << "Please Enter the name of Student : " ; // تم تعديل الرساله هنا لتناسب الشاشه الخاصه بك 
            std::getline(std::cin >> std::ws, name); // getline تم اضافتها لتفادي اخطاء الاسماء مع المسافات مثل abd el rahman  std::ws لتفادي المسافات
            array_names[i][j] = name;
        }
        array_result[i] = new double[1];// انشاء مصفوفة الدرجات
        for (int j = 0; j < 1; ++j)
        {
            int element;
            std::cout << "Please Enter the mark of Student  " << array_names[i][0] << "  : "; // تم تعديل الرساله هنا لتناسب الشاشه الخاصه
            std::cin >> element;
            array_result[i][j] = element;
        }
        
        
    }
    // ملحوظه المصفوفه تبدا برقم 1
    // تحديد قيمة اعلى درجة باول درجة في المصفوفه
    largest = array_result[1][0];
    // تحديد الطالب صاحب النتيحه
    largest_st = 1;
    
    // تحديد قيمة اقل درجة باول درجة في المصفوفه
    lowest = array_result[1][0];
    // تحديد الطالب صاحب النتيحه
    lowest_st = 1;
    
    std::cout << "\n" << string(60, '='); // فاصل ديكوري ===========
    
    std::cout << "\n" << string(12, ' ') << " Student  " << string(24, ' ') << " Marks "  ; // راس جدول النتيجه 
    
    for (int i = 1; i <= n; ++i) // الحصول على اجمالي الدرجات
    {
        //20 character for name formating 20 حرف لتجميل تساوي الاسماء
        int emptyspace = 20 - array_names[i][0].length();
       
        std::cout << "\n" <<  string(emptyspace, ' ') << array_names[i][0] << string(28, ' ') << array_result[i][0] ;
        totalres = totalres + array_result[i][0] ; // جمع درجات الطلاب
        
        
        // مقارنة بين درجات الطلاب اذا وجدت درجه اكبر يتم حفظها في القيمة الاكبر
        if(largest < array_result[i][0])
        {
            // تعيين اعلى نتيجه و رقم الطالب
            largest = array_result[i][0];
            largest_st = i;
            
        }
        // عكس عملية المقارنة بالاصغر
        if(lowest > array_result[i][0])
        {
            // تعين اقل درجة و تعين رقم الطالب الاقل
            lowest = array_result[i][0];
            lowest_st = i;
            
        }
        // حساب عدد الحاصلين على 90
        if (array_result[i][0] == 90){
            nine_st ++;
        }
        // حساب عدد الراسبين
        if (array_result[i][0] < 50){
            faild_st ++;
        }
        
    }
    std::cout << "\n" << string(60, '='); // فاصل ديكوري ===========
  	// خارج حلقة الجمع نظهر نتيجة الاجماليات
  	
  	std::cout << "\n Sum  = " << string(40, ' ') << totalres ;
  	// حساب متوسط النتائج يكون عباره عن مجموع الدرجات مقسوم على عدد الطلاب 
  	std::cout << "\n Average  = " << string(36, ' ') << totalres / n ;
    
    std::cout << "\n Max = " << string(41, ' ') << largest <<  string(10 , ' ') << " By Student " << array_names[largest_st][0] ;
    std::cout << "\n Min = " << string(41, ' ') << lowest  <<  string(10 , ' ') << " By Student " << array_names[lowest_st][0] ;
    std::cout << "\n No. of Std. Have 90 " << string(27, ' ') << nine_st  ;
    std::cout << "\n No. of Std. Who Fails "<< string(25, ' ')  << faild_st  ;
    
    return 0;

النتيجة :

5fd4373619206_Screenshot2020-12-08124337.thumb.png.13912121444eb27ed7096564f0bb801c.png

لاستخدام عدد ثابت اتبع الكود التالي 

#include <iostream>

using namespace std;




int main()
{
    unsigned int n = 4 ; // عدد ثابت من الطلاب
  	double** array_result = new double*[n]; // مصفوفة احادية لدرجات الطلاب
    string** array_names = new string*[n];// مصفوفة احادية لاسماء الطلاب
    
    
    int totalres = 0; // اضافة متغير لحساب اجمالي الدرجات
    int largest ; // متغير للحصول على اكبر درجة
    int largest_st ; // رقم الطالب صاحب اكبر درج
    int lowest ; // متغير للحصول على اصغر درج
    int lowest_st ; // رقم الطالب الحاصل على اصغر درجه 
    int nine_st = 0 ; // متغير حساب الطلبه الحاصلين على درجة 90
    int faild_st = 0; // متغير حساب عدد الطلبة الراسبين
    
    
    
    for (int i = 1; i <= n; ++i) // حلقة انشاء المصفوفات على حسب عدد الطلاب 
    {
        array_names[i] = new string[1]; // انشاء مصفوفة الاسماء
        for (int j = 0; j < 1; ++j)
        {
            string name;
            std::cout << "Please Enter the name of Student : " ; // تم تعديل الرساله هنا لتناسب الشاشه الخاصه بك 
            std::getline(std::cin >> std::ws, name); // getline تم اضافتها لتفادي اخطاء الاسماء مع المسافات مثل abd el rahman  std::ws لتفادي المسافات
            array_names[i][j] = name;
        }
        array_result[i] = new double[1];// انشاء مصفوفة الدرجات
        for (int j = 0; j < 1; ++j)
        {
            int element;
            std::cout << "Please Enter the mark of Student  " << array_names[i][0] << "  : "; // تم تعديل الرساله هنا لتناسب الشاشه الخاصه
            std::cin >> element;
            array_result[i][j] = element;
        }
        
        
    }
    // ملحوظه المصفوفه تبدا برقم 1
    // تحديد قيمة اعلى درجة باول درجة في المصفوفه
    largest = array_result[1][0];
    // تحديد الطالب صاحب النتيحه
    largest_st = 1;
    
    // تحديد قيمة اقل درجة باول درجة في المصفوفه
    lowest = array_result[1][0];
    // تحديد الطالب صاحب النتيحه
    lowest_st = 1;
    
    std::cout << "\n" << string(60, '='); // فاصل ديكوري ===========
    
    std::cout << "\n" << string(12, ' ') << " Student  " << string(24, ' ') << " Marks "  ; // راس جدول النتيجه 
    
    for (int i = 1; i <= n; ++i) // الحصول على اجمالي الدرجات
    {
        //20 character for name formating 20 حرف لتجميل تساوي الاسماء
        int emptyspace = 20 - array_names[i][0].length();
       
        std::cout << "\n" <<  string(emptyspace, ' ') << array_names[i][0] << string(28, ' ') << array_result[i][0] ;
        totalres = totalres + array_result[i][0] ; // جمع درجات الطلاب
        
        
        // مقارنة بين درجات الطلاب اذا وجدت درجه اكبر يتم حفظها في القيمة الاكبر
        if(largest < array_result[i][0])
        {
            // تعيين اعلى نتيجه و رقم الطالب
            largest = array_result[i][0];
            largest_st = i;
            
        }
        // عكس عملية المقارنة بالاصغر
        if(lowest > array_result[i][0])
        {
            // تعين اقل درجة و تعين رقم الطالب الاقل
            lowest = array_result[i][0];
            lowest_st = i;
            
        }
        // حساب عدد الحاصلين على 90
        if (array_result[i][0] == 90){
            nine_st ++;
        }
        // حساب عدد الراسبين
        if (array_result[i][0] < 50){
            faild_st ++;
        }
        
    }
    std::cout << "\n" << string(60, '='); // فاصل ديكوري ===========
  	// خارج حلقة الجمع نظهر نتيجة الاجماليات
  	
  	std::cout << "\n Sum  = " << string(40, ' ') << totalres ;
  	// حساب متوسط النتائج يكون عباره عن مجموع الدرجات مقسوم على عدد الطلاب 
  	std::cout << "\n Average  = " << string(36, ' ') << totalres / n ;
    
    std::cout << "\n Max = " << string(41, ' ') << largest <<  string(10 , ' ')  ;
    std::cout << "\n Min = " << string(41, ' ') << lowest  <<  string(10 , ' ')  ;
    std::cout << "\n No. of Std. Have 90 " << string(27, ' ') << nine_st  ;
    std::cout << "\n No. of Std. Who Fails "<< string(25, ' ')  << faild_st  ;
    
    return 0;
    
}

النتيجة :

Please Enter the name of Student : Mohamed
Please Enter the mark of Student  Mohamed  : 90
Please Enter the name of Student : Ali
Please Enter the mark of Student  Ali  : 70
Please Enter the name of Student : Fares
Please Enter the mark of Student  Fares  : 30
Please Enter the name of Student : Mahmod
Please Enter the mark of Student  Mahmod  : 80

============================================================
             Student                           Marks 
             Mohamed                            90
                 Ali                            70
               Fares                            30
              Mahmod                            80
============================================================
 Sum  =                                         270
 Average  =                                     67
 Max =                                          90          
 Min =                                          30          
 No. of Std. Have 90                            1
 No. of Std. Who Fails                          1

 

تم التعديل في بواسطة محمد الملواني

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...