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

كتابة برنامج بلغة ال++C

وكالة الرأي Alrayarabic

السؤال

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

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

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

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

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

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

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

ملاحظة/ 

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

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1
#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;
    
}

إذا كان هناك جزء في الكود غير واضح لا تتردد بالسْؤال 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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];// مصفوفة احادية لاسماء الطلاب
    
    for (int i = 1; i <= n; ++i) // حلقة انشاء المصفوفات على حسب عدد الطلاب 
    {
        array_names[i] = new string[1]; // انشاء مصفوفة الاسماء
        for (int j = 0; j < 1; ++j)
        {
            string name;
            std::cout << "Enter Student " << i << " Name : ";
            std::cin >> name;
            array_names[i][j] = name;
        }
        array_result[i] = new double[1];// انشاء مصفوفة الدرجات
        for (int j = 0; j < 1; ++j)
        {
            int element;
            std::cout << "Enter  " << array_names[i][0] << " Result : ";
            std::cin >> element;
            array_result[i][j] = element;
        }
        
        
    }

    for (int i = 1; i <= n; ++i) // كود للتاكد من نتائج الاكواد السابقه بطباعه الاسم و الدرجه
    {
        
        std::cout << "\n" << "Student " << array_names[i][0] << " Result " << array_result[i][0] ;
        
    }
    
    return 0;
    
}

يتبع

Screenshot 2020-12-07 153509.png

#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; // اضافة متغير لحساب اجمالي الدرجات
    for (int i = 1; i <= n; ++i) // حلقة انشاء المصفوفات على حسب عدد الطلاب 
    {
        array_names[i] = new string[1]; // انشاء مصفوفة الاسماء
        for (int j = 0; j < 1; ++j)
        {
            string name;
            std::cout << "Enter Student " << i << " Name : ";
            std::cin >> name;
            array_names[i][j] = name;
        }
        array_result[i] = new double[1];// انشاء مصفوفة الدرجات
        for (int j = 0; j < 1; ++j)
        {
            int element;
            std::cout << "Enter  " << array_names[i][0] << " Result : ";
            std::cin >> element;
            array_result[i][j] = element;
        }
        
        
    }

    for (int i = 1; i <= n; ++i) // الحصول على اجمالي الدرجات
    {
        
        std::cout << "\n" << "Student " << array_names[i][0] << " Result " << array_result[i][0] ;
        totalres = totalres + array_result[i][0] ; // جمع درجات الطلاب
    }
  	// خارج حلقة الجمع نظهر نتيجة الاجماليات
  	std::cout << "\nTotal Result : " << totalres ;
  	// حساب متوسط النتائج يكون عباره عن مجموع الدرجات مقسوم على عدد الطلاب 
  	std::cout << "\nTotal Result MID : " << totalres / n ;
    
    return 0;
    
}

يتبع

Screenshot 2020-12-07 155248.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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 ; // رقم الطالب الحاصل على اصغر درجه 
    for (int i = 1; i <= n; ++i) // حلقة انشاء المصفوفات على حسب عدد الطلاب 
    {
        array_names[i] = new string[1]; // انشاء مصفوفة الاسماء
        for (int j = 0; j < 1; ++j)
        {
            string name;
            std::cout << "Enter Student " << i << " Name : ";
            std::cin >> name;
            array_names[i][j] = name;
        }
        array_result[i] = new double[1];// انشاء مصفوفة الدرجات
        for (int j = 0; j < 1; ++j)
        {
            int element;
            std::cout << "Enter  " << array_names[i][0] << " Result : ";
            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;
    
    
    for (int i = 1; i <= n; ++i) // الحصول على اجمالي الدرجات
    {
        
        std::cout << "\n" << "Student " << array_names[i][0] << " Result " << 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;
            
        }
        
    }
  	// خارج حلقة الجمع نظهر نتيجة الاجماليات
  	std::cout << "\nTotal Result : " << totalres ;
  	// حساب متوسط النتائج يكون عباره عن مجموع الدرجات مقسوم على عدد الطلاب 
  	std::cout << "\nTotal Result MID : " << totalres / n ;
    
    std::cout << "\nHighest Result : " << largest << " By Student " << array_names[largest_st][0] ;
    std::cout << "\nLowest Result : " << lowest << " By Student " << array_names[lowest_st][0] ;
    
    return 0;
    
}

يتبع

Screenshot 2020-12-07 162002.png

#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 << "Enter Student " << i << " Name : ";
            std::cin >> name;
            array_names[i][j] = name;
        }
        array_result[i] = new double[1];// انشاء مصفوفة الدرجات
        for (int j = 0; j < 1; ++j)
        {
            int element;
            std::cout << "Enter  " << array_names[i][0] << " Result : ";
            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;
    
    
    for (int i = 1; i <= n; ++i) // الحصول على اجمالي الدرجات
    {
        
        std::cout << "\n" << "Student " << array_names[i][0] << " Result " << 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 << "\nTotal Result : " << totalres ;
  	// حساب متوسط النتائج يكون عباره عن مجموع الدرجات مقسوم على عدد الطلاب 
  	std::cout << "\nTotal Result MID : " << totalres / n ;
    
    std::cout << "\nHighest Result : " << largest << " By Student " << array_names[largest_st][0] ;
    std::cout << "\nLowest Result : " << lowest << " By Student " << array_names[lowest_st][0] ;
    std::cout << "\n90's Result Count : " << nine_st  ;
    std::cout << "\nFails Student Count : " << faild_st  ;
    
    return 0;
    
}

5fce3da1ebf12_Screenshot2020-12-07163503.png.20401b7e89127fdc93b773d4b0341316.png

يتبع

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
Enter number of Students: 10                                                                                          
Enter Student 1 Name : mohamed                                                                                        
Enter  mohamed Result : 30                                                                                            
Enter Student 2 Name : mahmoud                                                                                        
Enter  mahmoud Result : 55                                                                                            
Enter Student 3 Name : ali                                                                                            
Enter  ali Result : 40                                                                                                
Enter Student 4 Name : said                                                                                           
Enter  said Result : 90                                                                                               
Enter Student 5 Name : kamel                                                                                          
Enter  kamel Result : 87                                                                                              
Enter Student 6 Name : ayman                                                                                          
Enter  ayman Result : 60                                                                                              
Enter Student 7 Name : fouad                                                                                          
Enter  fouad Result : 44                                                                                              
Enter Student 8 Name : gamal                                                                                          
Enter  gamal Result : 70                                                                                              
 
Enter Student 9 Name : hossam                                                                                         
Enter  hossam Result : 30                                                                                             
Enter Student 10 Name : ragheb                                                                                        
Enter  ragheb Result : 80                                                                                             
                                                                                                                      
Student mohamed Result 30                                                                                             
Student mahmoud Result 55                                                                                             
Student ali Result 40                                                                                                 
Student said Result 90                                                                                                
Student kamel Result 87                                                                                               
Student ayman Result 60                                                                                               
Student fouad Result 44                                                                                               
Student gamal Result 70                                                                                               
Student hossam Result 30                                                                                              
Student ragheb Result 80                                                                                              
Total Result : 586                                                                                                    
Total Result MID : 58                                                                                                 
Highest Result : 90 By Student said                                                                                   
Lowest Result : 30 By Student mohamed                                                                                 
90's Result Count : 1                                                                                                 
Fails Student Count : 4    

النتيجه النهائية للمشروع

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكرا لك على المساعدة اخي ولكني اريد ان يكون كله في برنامج واحد والاخراج بهذا الشكل.. حاولت كثيرا ولكن لم يخرج معي بنفس هذا الشكل
 

image.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 8‏/12‏/2020 at 11:41 قال وكالة الرأي Alrayarabic:

شكرا لك على المساعدة اخي ولكني اريد ان يكون كله في برنامج واحد والاخراج بهذا الشكل.. حاولت كثيرا ولكن لم يخرج معي بنفس هذا الشكل
 

image.png

احتاج الكود الخاص بهذه الصيغة ان امكن يا عزيزي

 

بتاريخ On 8‏/12‏/2020 at 12:44 قال محمد الملواني:

هل المطلوب بهذا الشكل 

Screenshot 2020-12-08 124337.png

هل من الممكن ان تدلني على الكود الخاص بهذه الصيغة النهائية

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Wesam Altibi:

احتاج الكود الخاص بهذه الصيغة ان امكن يا عزيزي

 

بكل سرور

بتاريخ On 12/8/2020 at 12:48 قال محمد الملواني:

#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;
    
}

إذا كان هناك جزء في الكود غير واضح لا تتردد بالسْؤال 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

 

بتاريخ 10 دقائق مضت قال محمد الملواني:

بكل سرور

 

هذا الكود لعدد متغير من الطلاب كيف يمكنني ان استخدم عدد ثابت من الطلاب عللى سبيل المثال 4 طلاب فقط

تم التعديل في بواسطة Wesam Altibi
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 5 دقائق مضت قال Wesam Altibi:

 

هذا الكود متغير من الطلاب كيف يمكنني ان استخدم عدد ثابت من الطلاب عللى سبيل المثال 4 طلاب فقط

 

لاستخدام عدد ثابت غير التالي

#include <iostream>

using namespace std;




int main()
{
  	// تعطيل من هنا 
    //unsigned int n; // اعطاء التطبيق امكانية ادخال عدد متغير من الطلاب
    //std::cout << "Enter number of Students: "; // طلب ادخال عدد الطلاب
    //std::cin >> n; // استقبال عدد الطلاب
    // حتى هنا 
  	unsigned int n = 5 ; // عدد ثابت من الطلاب
  	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;
    
}

النتيحة :

Please Enter the name of Student : ahmed
Please Enter the mark of Student  ahmed  : 40
Please Enter the name of Student : salem
Please Enter the mark of Student  salem  : 90
Please Enter the name of Student : samir
Please Enter the mark of Student  samir  : 90
Please Enter the name of Student : maged
Please Enter the mark of Student  maged  : 60
Please Enter the name of Student : ibrahim
Please Enter the mark of Student  ibrahim  : 20

============================================================
             Student                           Marks 
               ahmed                            40
               salem                            90
               samir                            90
               maged                            60
             ibrahim                            20
============================================================
 Sum  =                                         300
 Average  =                                     60
 Max =                                          90           By Student salem
 Min =                                          20           By Student ibrahim
 No. of Std. Have 90                            2
 No. of Std. Who Fails                          2

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

// تعطيل من هنا //unsigned int n; // اعطاء التطبيق امكانية ادخال عدد متغير من الطلاب //std::cout << "Enter number of Students: "; // طلب ادخال عدد الطلاب //std::cin >> n; // استقبال عدد الطلاب // حتى هنا

فقط هذا ؟؟

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

ممكن مساعدة في كتابة هذا البرنامج

1-     قم بإنشاء صنف (Person) وفق التالي:

a.      المتغيرات:

                                                   i.      الاسم  : Person_Name  محمية من نوع نص.

b.      الدوال:

                                                   i.      بناء يستقبل معامل ويقوم بوضع قيم ابتدائية للاسم. القيمة الافتراضية للمعامل هي "—new course--".

                                                            ii.      دالة محمية ترجع قيمة الاسم. مسبقة بالرمز الثابت The person name is :

                                                          iii.      دالة محمية تستقبل معامل وتغير من خلاله قيمة الاسم.

 

2-     قم بإنشاء صنف (Student) وفق التالي:

a.      المتغيرات:

                                                              i.      الرقم - :No خاص من نوع رقم صحيح.

                                                            ii.      الاسم – Student_name    من نوع نص

                                                          iii.      رقم الجوال : Mobile  من نوع رقم صحيح

b.      الدوال:

                                                              i.      بناء يقوم بقراءة قيم للمتغيرات من خلال لوحة المفاتيح مع طباعة جملة توضحيه قبل الادخال

                                                            ii.      دالة محمية تطبع الرقم و الاسم و رقم الجوال

                                                          iii.      دالة محمية تستقبل معامل وتغير من خلاله رقم الجوال

 

3-     قم بإنشاء صنف Lecturer يرث من الصنف (Person) وراثة عامة وفق التالي:

a.      المتغيرات:

                                                              i.      : Persons عامة مصفوفة مكونة من 4 كائنات (Person).

                                                            ii.      type: خاص نوع الحقل نص

b.      الدوال:

                                                              i.      ReadLecturers(): عامة وتقوم بقراءة قيم عناصر المصفوفة (Lecturer) .

 

                                                            ii.      GetCount(): عامة وتحسب عدد المدرسين للمصفوفة وتخزينه داخل  المتغير (Counter) ثم تقوم بارجاعه.

                                                          iii.      :Print() عامة تستقبل معامل اسم ملف وكتابة جميع المتغيرات المحلية والموروثة داخل الملف.

                                                          iv.      بين مفهوم إعادة التحميل مستخدما الدالة (Print) وتطبع على الشاشة جميع المتغيرات المحلية والموروثة.

 

4-     الدالة الرئيسية:

a.      انشاء مصفوفة كائنات ديناميكيا من نوع (Student) تتكون من أي عدد من عندك.

استدعاء جميع الدوال الخاصة والموروثة بالكائن السابق

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 07/12/2020 at 13:25 قال وكالة الرأي Alrayarabic:

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

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

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

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

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

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

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

ملاحظة/ 

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

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

ممكن جوابه؟

9D776025-3DA4-49C5-9054-0AC4795C3844.jpeg

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

برنامج ادخال درجة 5 طلاب واذا كانت درجته تساوي 45  يتم اضافة 5 درجات حتى يحصل الطالب على 50درجة وينجح اريد طباعة الدرجات قبل الزيادة وبعد الزياده وطباعة مقدار الزيادة المطلوب استخدام IF والمصفوفة احادية

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

اكتب برنامج يقوم بتخزين 5 قيم وإيجاد مجموع هذه القيم وطباعتها؟

 

اكتب برنامج يخزن 10 قيم ثم افصل المكدس الى مكدسين الأول يحتوي على القيم الفردية والآخر يقوم بتخزين القيم الزوجية

اكتب برنامج يخزن 10 قيم ثم افصل المكدس الى مكدسين الأول يحتوي على القيم الفردية والآخر يقوم بتخزين القيم الزوجية

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 4‏/5‏/2023 at 23:02 قال Talal Al Risi Alr:

اكتب برنامج يقوم بتخزين 5 قيم وإيجاد مجموع هذه القيم وطباعتها؟

 

اكتب برنامج يخزن 10 قيم ثم افصل المكدس الى مكدسين الأول يحتوي على القيم الفردية والآخر يقوم بتخزين القيم الزوجية

اكتب برنامج يخزن 10 قيم ثم افصل المكدس الى مكدسين الأول يحتوي على القيم الفردية والآخر يقوم بتخزين القيم الزوجية

لكونه سؤال إختباري فسأرشدك لخطوات الحل وتستطيع تنفيذ الكود وطرحه هنا لحل أي مشكلة تواجهك.

لحل سؤال البرنامج المطلوب بتخزين القيم وإيجاد مجموعها، تستطيع اتباع الخطوات التالية:

  1. إنشاء متغيرات لتخزين القيم. في هذا السياق، يمكنك استخدام مصفوفة لتخزين القيم الخمسة.
  2. اقرأ القيم الخمسة من المستخدم وقم بتخزينها في المصفوفة التي أنشأتها في الخطوة السابقة.
  3. حساب مجموع القيم المخزنة في المصفوفة. يمكنك استخدام حلقة تكرار للانتقال عبر المصفوفة وإجمال قيمها.
  4. قم بطباعة المجموع النهائي.

نبذة بسيطة من الكود وعليك بإكمال الباقي:

#include <iostream>
using namespace std;

int main() {
  int values[5];
  int sum = 0;

لحل السؤال الثاني وتقسيم المكدس إلى مكدستين:

  1. إنشاء مصفوفة لتخزين القيم. في هذا السياق، يمكنك استخدام مصفوفة بحجم 10.
  2. اقرأ القيم العشرة من المستخدم وقم بتخزينها في المصفوفة.
  3. إنشاء مكدستين، مكدس للقيم الفردية وآخر للقيم الزوجية. يمكنك استخدام مصفوفتين بحجم 10 لكل مكدس.
  4. تكرار المصفوفة الأولى وفحص كل عنصر فيها. إذا كان العنصر فرديًا، قم بتخزينه في المكدس الأول. وإذا كان زوجيًا، قم بتخزينه في المكدس الثاني.
  5. قم بطباعة المكدستين النهائيين بفصل العناصر بفواصل مناسبة.

نبذة بسيطة من الكود وعليك بإكمال الباقي:

#include <iostream>
using namespace std;

int main() {
  int values[10];
  int oddValues[10];
  int evenValues[10];
  int oddCount = 0;
  int evenCount = 0;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

int ledPin = 9;
char c;
long duration, inches;
int set_val, percentage;
bool state, pump;

void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.print("WATER LEVEL:");
  lcd.setCursor(0, 1);
  lcd.print("PUMP: OFF MANUAL");

  pinMode(2, OUTPUT);
  pinMode(3, INPUT);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);

  set_val = EEPROM.read(0);
  if (set_val > 20) {
    set_val = 20;
  }
}

void loop() {
  digitalWrite(2, HIGH);
  delayMicroseconds(10);
  digitalWrite(2, LOW);

  duration = pulseIn(3, HIGH);
  inches = microsecondsToInches(duration);

  percentage = (set_val - inches) * 110 / set_val;

  lcd.setCursor(12, 0);
  if (percentage < 0) {
    percentage = 0;
  }
  lcd.print(percentage);
  lcd.print("% ");

  if (percentage < 30 && digitalRead(11)) {
    pump = true;
  }
  if (percentage > 85) {
    pump = false;
  }
  digitalWrite(13, !pump);

  lcd.setCursor(5, 1);
  c = Serial.read();
  if (c == '1') {
    digitalWrite(ledPin, HIGH);
  }
  else if (c == '0') {
    digitalWrite(ledPin, LOW);
  }

  if (pump) {
    lcd.print("ON ");
  }
  else if (!pump) {
    lcd.print("OFF");
  }

  lcd.setCursor(9, 1);
  if (!digitalRead(11)) {
    lcd.print("MANUAL ");
  }
  lcd.print("AUTO ");

  if (!digitalRead(10) && !state && digitalRead(11)) {
    state = true;
    set_val = inches;
    EEPROM.write(0, set_val);
  }

  if (!digitalRead(10) && !state && !digitalRead(11)) {
    state = true;
    pump = !pump;
  }

  if (digitalRead(10)) {
    state = false;
  }

  delay(500);
}

long microsecondsToInches(long microseconds) {
  return microseconds / 29 / 2;
}
تم التعديل في بواسطة Mustafa Suleiman
تنسيق الكود
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 8 ساعة قال Yousef Hagag:
#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

int ledPin = 9;
char c;
long duration, inches;
int set_val, percentage;
bool state, pump;

void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.print("WATER LEVEL:");
  lcd.setCursor(0, 1);
  lcd.print("PUMP: OFF MANUAL");

  pinMode(2, OUTPUT);
  pinMode(3, INPUT);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);

  set_val = EEPROM.read(0);
  if (set_val > 20) {
    set_val = 20;
  }
}

void loop() {
  digitalWrite(2, HIGH);
  delayMicroseconds(10);
  digitalWrite(2, LOW);

  duration = pulseIn(3, HIGH);
  inches = microsecondsToInches(duration);

  percentage = (set_val - inches) * 110 / set_val;

  lcd.setCursor(12, 0);
  if (percentage < 0) {
    percentage = 0;
  }
  lcd.print(percentage);
  lcd.print("% ");

  if (percentage < 30 && digitalRead(11)) {
    pump = true;
  }
  if (percentage > 85) {
    pump = false;
  }
  digitalWrite(13, !pump);

  lcd.setCursor(5, 1);
  c = Serial.read();
  if (c == '1') {
    digitalWrite(ledPin, HIGH);
  }
  else if (c == '0') {
    digitalWrite(ledPin, LOW);
  }

  if (pump) {
    lcd.print("ON ");
  }
  else if (!pump) {
    lcd.print("OFF");
  }

  lcd.setCursor(9, 1);
  if (!digitalRead(11)) {
    lcd.print("MANUAL ");
  }
  lcd.print("AUTO ");

  if (!digitalRead(10) && !state && digitalRead(11)) {
    state = true;
    set_val = inches;
    EEPROM.write(0, set_val);
  }

  if (!digitalRead(10) && !state && !digitalRead(11)) {
    state = true;
    pump = !pump;
  }

  if (digitalRead(10)) {
    state = false;
  }

  delay(500);
}

long microsecondsToInches(long microseconds) {
  return microseconds / 29 / 2;
}

هل هناك مشكلة بالكود؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

س 1 / قم بكتابة الخوارزمية اللازمة لإيجاد تقديرات الطلاب عدد 85 طالب من خلال استقبال معرف الطالب ومعرف المستوى ومعرف المقرر ودرجته ومن ثم قم بكتابة الكود البرمجي؟ معرف الطالب معرف المستوى معرف المقرر الدرجة التقدير 85 008 1 1010 90 009 1 1010 77 008 1 1011 22 009 1 1011 99 090 2 1010 100 090 2 1011 جيد جداً امتیاز جيد ضعيف امتياز

س 1 / قم بكتابة الخوارزمية اللازمة لإيجاد تقديرات الطلاب عدد 85 طالب من خلال استقبال معرف الطالب ومعرف المستوى ومعرف المقرر ودرجته ومن ثم قم بكتابة الكود البرمجي؟ معرف الطالب معرف المستوى معرف المقرر الدرجة التقدير 85 008 1 1010 90 009 1 1010 77 008 1 1011 22 009 1 1011 99 090 2 1010 100 090 2 1011 جيد جداً امتیاز جيد ضعيف امتياز

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

السؤال

باستخدام c++ اكتب برنامج لحساب معدل خمسة طلبة و لكل طالب ثلاث درجات مع اضافة اسم الطالب و اذا ما كان ناجح ام راسب و اذا كان راسب في مادة يعتبر راسب مباشراً

تم التعديل في بواسطة كوثر الاسدي
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 15‏/5‏/2023 at 13:11 قال Mustafa Suleiman:

اجب عن سؤالي

اكتب باستخدام c++ برنامج لحساب معدل خمسة طلبة و لكل طالب ثلاث درجات مع اضافة اسم الطالب و اذا ما كان ناجح ام راسب و اذا كان راسب في مادة يعتبر راسب مباشراً

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

عندي برنامج مستعجل لو تكرمتم 

المشكلة عندي بالاستدعاء يطلع مع خطأ  ... والمطلوب هو كالتالي:

قاعدة بيانات 

*حصر اصول الإنارة: *
الإنارة: 
١- أعمدة 
الخيارات؛ ( عامود ١٦م مدهون، عامود ١٦م غير مدهون، عامود ١٢م مدهون، عامود ١٢م غير مدهون، عامود ١٠م مدهون، عامود ١٠م غير مدهون، عامود ٨م مدهون، عامود ٨م غير مدهون، عامود ٦م مدهون، عامود ٦م غير مدهون) 

٢- الفوانيس: 
الخيارات (فانوس جداري، فانوس هوائي)


٣-*المواد: *

الخيارات؛ ( مصنع ومواصفات الفانوس، مصنع ومواصفات العامود، مصنع ومواصفات علبة الفيوز، مصنع وموصفات لوحة التوزيع، مصنع ومواصفات القاعدة الخرسانية، مصنع ومواصفات غرفة التفتيش، مواصفات قضيب التأريض، مصنع ومواصفات الكيبل، مصدر التغذية وحامل العداد) 


٤-البلاغات:
١- بلاغات حرجة 
٢- بلاغات غير حرجة (صيانة اليوم الواحد)

 

 #include <sqlite3.h>
#include <iostream>

int main() {
    sqlite3* DB;
    int exit = sqlite3_open("LightingManagement.db", &DB);
    if (exit) {
        std::cerr << "Error open DB: " << sqlite3_errmsg(DB) << std::endl;
        return -1;
    } else {
        std::cout << "Database opened successfully!" << std::endl;
    }
    sqlite3_close(DB);
    return 0;
}

#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/statement.h>
#include <cppconn/resultset.h>
#include <iostream>

int main() {
    sql::mysql::MySQL_Driver* driver;
    sql::Connection* conn;

    driver = sql::mysql::get_mysql_driver_instance();
    conn = driver->connect("tcp://127.0.0.1:3306", "username", "password");

    conn->setSchema("LightingManagement");

    sql::Statement* stmt = conn->createStatement();
    sql::ResultSet* res = stmt->executeQuery("SELECT * FROM Columns");

    while (res->next()) {
        std::cout << "Column ID: " << res->getInt("ColumnID") << std::endl;
    }

    delete res;
    delete stmt;
    delete conn;

    return 0;
}

CREATE DATABASE LightingManagement;
USE LightingManagement;

CREATE TABLE Columns (
    ColumnID INT PRIMARY KEY IDENTITY,
    ColumnType NVARCHAR(50), -- مثل: ١٦م مدهون، ١٢م غير مدهون
    Manufacturer NVARCHAR(50), -- مصنع العامود: البابطين، اليمامة
    EarthingSystem NVARCHAR(10) -- نظام التأريض: Alone أو Grid
);

CREATE TABLE Lanterns (
    LanternID INT PRIMARY KEY IDENTITY,
    LanternType NVARCHAR(50), -- مثل: جدارية، هوائية
    LightType NVARCHAR(20), -- نوع الفانوس: LED، هالوجين، صوديوم
    PowerRating INT, -- مواصفات الفانوس: القدرة بالواط
    Manufacturer NVARCHAR(50) -- مصنع الفانوس: البابطين، اليمامة، Philips
);

CREATE TABLE Cables (
    CableID INT PRIMARY KEY IDENTITY,
    MaterialType NVARCHAR(20) -- نوع الكيبل: نحاس أو ألمنيوم
);

CREATE TABLE Locations (
    LocationID INT PRIMARY KEY IDENTITY,
    Coordinates NVARCHAR(50), -- إحداثيات الموقع
    InspectionChamber NVARCHAR(50), -- غرفة التفتيش
    PowerSource NVARCHAR(50), -- مصدر التغذية
    DistributionPanel NVARCHAR(50) -- لوحة التوزيع
);

CREATE TABLE Materials (
    MaterialID INT PRIMARY KEY IDENTITY,
    FuseBox NVARCHAR(50), -- علبة الفيوز الداخلية
    ConcreteBase NVARCHAR(50), -- القاعدة الخرسانية
    EarthingSystem NVARCHAR(10) -- نظام التأريض: Alone أو Grid
);

CREATE TABLE Projects (
    ProjectID INT PRIMARY KEY IDENTITY,
    Contractor NVARCHAR(50), -- المقاول المنفذ
    ExecutionDate DATE, -- تاريخ التنفيذ
    LocationID INT FOREIGN KEY REFERENCES Locations(LocationID), -- الموقع
    ColumnID INT FOREIGN KEY REFERENCES Columns(ColumnID), -- نوع العمود
    LanternID INT FOREIGN KEY REFERENCES Lanterns(LanternID), -- نوع الفانوس
    CableID INT FOREIGN KEY REFERENCES Cables(CableID), -- نوع الكيبل
    MaterialID INT FOREIGN KEY REFERENCES Materials(MaterialID) -- المواد
);

SELECT ColumnType, COUNT(*) AS TotalColumns
FROM Columns
GROUP BY ColumnType;

SELECT LanternType, LightType, COUNT(*) AS TotalLanterns
FROM Lanterns
GROUP BY LanternType, LightType;

SELECT DistributionPanel, COUNT(*) AS TotalDistributionPanels
FROM Locations
GROUP BY DistributionPanel;

SELECT FuseBox, COUNT(*) AS TotalFuseBoxes
FROM Materials
GROUP BY FuseBox;

SELECT ConcreteBase, COUNT(*) AS TotalConcreteBases
FROM Materials
GROUP BY ConcreteBase;

SELECT InspectionChamber, COUNT(*) AS TotalInspectionChambers
FROM Locations
GROUP BY InspectionChamber;

SELECT EarthingSystem, COUNT(*) AS TotalEarthingSystems
FROM Materials
GROUP BY EarthingSystem;

SELECT MaterialType, COUNT(*) AS TotalCables
FROM Cables
GROUP BY MaterialType;

SELECT PowerSource, COUNT(*) AS TotalPowerSources
FROM Locations
GROUP BY PowerSource;

SELECT 'Columns' AS Category, ColumnType AS Item, COUNT(*) AS Total
FROM Columns
GROUP BY ColumnType

UNION

SELECT 'Lanterns', CONCAT(LanternType, ' - ', LightType), COUNT(*)
FROM Lanterns
GROUP BY LanternType, LightType

UNION

SELECT 'Distribution Panels', DistributionPanel, COUNT(*)
FROM Locations
GROUP BY DistributionPanel

UNION

SELECT 'Fuse Boxes', FuseBox, COUNT(*)
FROM Materials
GROUP BY FuseBox

UNION

SELECT 'Concrete Bases', ConcreteBase, COUNT(*)
FROM Materials
GROUP BY ConcreteBase

UNION

SELECT 'Inspection Chambers', InspectionChamber, COUNT(*)
FROM Locations
GROUP BY InspectionChamber

UNION

SELECT 'Earthing Systems', EarthingSystem, COUNT(*)
FROM Materials
GROUP BY EarthingSystem

UNION

SELECT 'Cables', MaterialType, COUNT(*)
FROM Cables
GROUP BY MaterialType

UNION

SELECT 'Power Sources', PowerSource, COUNT(*)
FROM Locations
GROUP BY PowerSource;

 

#include <iostream>
#include <sqlite3.h> // أو MySQL حسب الحاجة

void addColumn(sqlite3* db, const std::string& columnType, const std::string& manufacturer, const std::string& earthingSystem) {
    std::string sql = "INSERT INTO Columns (ColumnType, Manufacturer, EarthingSystem) VALUES ('" + columnType + "', '" + manufacturer + "', '" + earthingSystem + "');";
    char* errMessage = nullptr;
    int exit = sqlite3_exec(db, sql.c_str(), nullptr, 0, &errMessage);
    if (exit != SQLITE_OK) {
        std::cerr << "Error inserting data: " << errMessage << std::endl;
        sqlite3_free(errMessage);
    } else {
        std::cout << "Column added successfully!" << std::endl;
    }
}

int main() {
    sqlite3* DB;
    int exit = sqlite3_open("LightingManagement.db", &DB);
    if (exit) {
        std::cerr << "Error open DB: " << sqlite3_errmsg(DB) << std::endl;
        return -1;
    } else {
        std::cout << "Database opened successfully!" << std::endl;
    }

    // إضافة عمود
    std::string columnType, manufacturer, earthingSystem;
    std::cout << "Enter Column Type: ";
    std::getline(std::cin, columnType);
    std::cout << "Enter Manufacturer: ";
    std::getline(std::cin, manufacturer);
    std::cout << "Enter Earthing System (Alone/Grid): ";
    std::getline(std::cin, earthingSystem);
    
    addColumn(DB, columnType, manufacturer, earthingSystem);

    sqlite3_close(DB);
    return 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...