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

باستخدام لغة ++C،  أكتب برنامج مستخدما المصفوفات أحادية الابعاد

Wesam Altibi

السؤال

 

باستخدام لغة ++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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...