🙃#include <iostream>
#include <cmath>
using namespace std;
// هذه الدالة تحسب قيمة الجذر التربيعي لعدد غير سالب
double calculateSquareRoot(double num) {
if (num >= 0)
return sqrt(num);
else
return -1; // رقم سالب يعني أنه لا يوجد جذر حقيقي
}
// هذه الدالة تقوم بحساب جذري المعادلة الثانية
void calculateQuadraticRoots(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
// لدينا جذرين حقيقيين
double root1 = (-b + calculateSquareRoot(discriminant)) / (2 * a);
double root2 = (-b - calculateSquareRoot(discriminant)) / (2 * a);
cout << "لدينا جذرين حقيقيين:" << endl;
cout << "الجذر الأول: " << root1 << endl;
cout << "الجذر الثاني: " << root2 << endl;
} else if (discriminant == 0) {
// لدينا جذر واحد متكرر
double root = -b / (2 * a);
cout << "لدينا جذر واحد متكرر:" << endl;
cout << "الجذر: " << root << endl;
} else {
// ليس لدينا أي جذر حقيقي
cout << "لا يوجد جذر حقيقي للمعادلة." << endl;
}
}
int main() {
double a, b, c;
cout << "أدخل قيمة a: ";
cin >> a;
cout << "أدخل قيمة b: ";
cin >> b;
cout << "أدخل قيمة c: ";
cin >> c;
calculateQuadraticRoots(a, b, c);
return 0;
}
#include <cmath>
using namespace std;
// هذه الدالة تحسب قيمة الجذر التربيعي لعدد غير سالب
double calculateSquareRoot(double num) {
if (num >= 0)
return sqrt(num);
else
return -1; // رقم سالب يعني أنه لا يوجد جذر حقيقي
}
// هذه الدالة تقوم بحساب جذري المعادلة الثانية
void calculateQuadraticRoots(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
// لدينا جذرين حقيقيين
double root1 = (-b + calculateSquareRoot(discriminant)) / (2 * a);
double root2 = (-b - calculateSquareRoot(discriminant)) / (2 * a);
cout << "لدينا جذرين حقيقيين:" << endl;
cout << "الجذر الأول: " << root1 << endl;
cout << "الجذر الثاني: " << root2 << endl;
} else if (discriminant == 0) {
// لدينا جذر واحد متكرر
double root = -b / (2 * a);
cout << "لدينا جذر واحد متكرر:" << endl;
cout << "الجذر: " << root << endl;
} else {
// ليس لدينا أي جذر حقيقي
cout << "لا يوجد جذر حقيقي للمعادلة." << endl;
}
}
int main() {
double a, b, c;
cout << "أدخل قيمة a: ";
cin >> a;
cout << "أدخل قيمة b: ";
cin >> b;
cout << "أدخل قيمة c: ";
cin >> c;
calculateQuadraticRoots(a, b, c);
return 0;
}
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
// ضبط بذرة العشوائية باستخدام الوقت الحالي
srand(time(0));
// إنشاء مصفوفة بحجم 10
const int size = 10;
int arr[size];
// ملء المصفوفة بالقيم العشوائية
for (int i = 0; i < size; i++) {
arr[i] = rand();
}
// طباعة المصفوفة
std::cout << "المصفوفة: ";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
#include <iostream>
#include <algorithm>
int main() {
// إنشاء مصفوفة بالأعداد
int arr[] = {2, 5, -1, 4, 100};
const int size = sizeof(arr) / sizeof(arr[0]);
// ترتيب المصفوفة
std::sort(arr, arr + size);
// طباعة المصفوفة
std::cout << "المصفوفة المرتبة: ";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
#include <iostream>
int main() {
// إنشاء مصفوفة بالأعداد
int arr[] = {2, 5, -1, 4, 100};
const int size = sizeof(arr) / sizeof(arr[0]);
// طباعة الأعداد الزوجية والفردية
std::cout << "الأعداد الزوجية: ";
for (int i = 0; i < size; i++) {
if (arr[i] % 2 == 0) {
std::cout << arr[i] << " ";
}
}
std::cout << std::endl;
std::cout << "الأعداد الفردية: ";
for (int i = 0; i < size; i++) {
if (arr[i] % 2 != 0) {
std::cout << arr[i] << " ";
}
}
std::cout << std::endl;
return 0;
}
#include <cstdlib>
#include <ctime>
int main() {
// ضبط بذرة العشوائية باستخدام الوقت الحالي
srand(time(0));
// إنشاء مصفوفة بحجم 10
const int size = 10;
int arr[size];
// ملء المصفوفة بالقيم العشوائية
for (int i = 0; i < size; i++) {
arr[i] = rand();
}
// طباعة المصفوفة
std::cout << "المصفوفة: ";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
#include <iostream>
#include <algorithm>
int main() {
// إنشاء مصفوفة بالأعداد
int arr[] = {2, 5, -1, 4, 100};
const int size = sizeof(arr) / sizeof(arr[0]);
// ترتيب المصفوفة
std::sort(arr, arr + size);
// طباعة المصفوفة
std::cout << "المصفوفة المرتبة: ";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
#include <iostream>
int main() {
// إنشاء مصفوفة بالأعداد
int arr[] = {2, 5, -1, 4, 100};
const int size = sizeof(arr) / sizeof(arr[0]);
// طباعة الأعداد الزوجية والفردية
std::cout << "الأعداد الزوجية: ";
for (int i = 0; i < size; i++) {
if (arr[i] % 2 == 0) {
std::cout << arr[i] << " ";
}
}
std::cout << std::endl;
std::cout << "الأعداد الفردية: ";
for (int i = 0; i < size; i++) {
if (arr[i] % 2 != 0) {
std::cout << arr[i] << " ";
}
}
std::cout << std::endl;
return 0;
}
👍1
يا الله نبدأ على بركة الله باساسيات الجافا اللي تحتاجونها حاليًا وهي
scanner
if
for
وراح اسوي شرح على طريقة المقارنة ويَّ c++ علمود تسهللكم باحسن الطرق الممكنة
طبعا بالc++ اذا جنتم تريدون تسوون input, output فتحتاجون المكتبة الثابتة iostream اللي اظن ماكو برنامج العام سويتوه العام اذا ماجان اله علاقة بالمكتبة هاي
for example:
#include<iostream>
using namespace std;
int main()
{
cout << "bya bya c++!" << endl;
return 0;
}
اما بالجافا الوضع مختلف الoutput مايحتاج استدعاء تعلميات او مثل ما انتم تعرفونها "مكتبة"
"هنا مراح تعتبر مكتبة وانما شوي تختلف عنها بس بعدين يتوضح كل شيء"
المهم الoutput مباشرة تكدر تسوونه مثل
public class Main {
public static void main(String[] args) {
System.out.println("Ah, Here we go again");
}
}
ولكن هنالك شيء اسمه سكانر اللي تكدرون تكولون حاليًا انه الinput مالت الجافا فهاي لازم تستدعا قبل البرنامج مثل ماتستدعي المكتبة بc++
فيكون استدعائها هكذا
for example:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("What's your name?");
String name = scanner.nextLine();
System.out.println("Hello " + name);
}
}
scanner
if
for
وراح اسوي شرح على طريقة المقارنة ويَّ c++ علمود تسهللكم باحسن الطرق الممكنة
طبعا بالc++ اذا جنتم تريدون تسوون input, output فتحتاجون المكتبة الثابتة iostream اللي اظن ماكو برنامج العام سويتوه العام اذا ماجان اله علاقة بالمكتبة هاي
for example:
#include<iostream>
using namespace std;
int main()
{
cout << "bya bya c++!" << endl;
return 0;
}
اما بالجافا الوضع مختلف الoutput مايحتاج استدعاء تعلميات او مثل ما انتم تعرفونها "مكتبة"
"هنا مراح تعتبر مكتبة وانما شوي تختلف عنها بس بعدين يتوضح كل شيء"
المهم الoutput مباشرة تكدر تسوونه مثل
public class Main {
public static void main(String[] args) {
System.out.println("Ah, Here we go again");
}
}
ولكن هنالك شيء اسمه سكانر اللي تكدرون تكولون حاليًا انه الinput مالت الجافا فهاي لازم تستدعا قبل البرنامج مثل ماتستدعي المكتبة بc++
فيكون استدعائها هكذا
for example:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("What's your name?");
String name = scanner.nextLine();
System.out.println("Hello " + name);
}
}
👍1
خنجيب سؤال
برنامج يقوم بطباعة مجموع 10 اعداد يقوم بوضعها اليوزر
#include <iostream>
using namespace std;
int main() {
int sum = 0;
int number;
cout << "Enter 10 numbers:" << endl;
for (int i = 0; i < 10; i++) {
cin >> number;
sum += number;
}
cout << "Sum of the 10 numbers: " << sum << endl;
return 0;
}
برنامج يقوم بطباعة مجموع 10 اعداد يقوم بوضعها اليوزر
#include <iostream>
using namespace std;
int main() {
int sum = 0;
int number;
cout << "Enter 10 numbers:" << endl;
for (int i = 0; i < 10; i++) {
cin >> number;
sum += number;
}
cout << "Sum of the 10 numbers: " << sum << endl;
return 0;
}
يا الله نبدأ الفانكشنز اوووووو منا ورايح ما اريدكم تكولون فانكشنز عمي هاي كلمة قديمة انام مثقفين تكولون ميثودز الفانكشين سوالف مرحلة اولى بعد
لا اشاقة اكو فروق بين معنى الفانكشن والميثود بامور معينة راح اشرحها عن قريب بنهاية الشرح اولا لازم نعرف شني الميثود
هي مجموعة من التعليمات التي تُستخدم لِتنفيذ مهمة معينة. تُعتبر الميثود جزءًا أساسيًا من البرنامج لان انتَ وانتِ ماتكدر تشغل برنامج بلا ميثود اصلا هسة تكلي شون؟
اكلك تتذكر c++ جنا نكول الدالة (الفنكشن) الاساسية والدوال الاحتياطية؟
اي بالضبط حتى مثلا نكتب
#include<iostream>
using namespace std;
int main()
{
cout << "Hi!" << endl;
return 0;
}
main هي نفسها الدالة الاساسية اما الان بالجافا فالميثود الاساسي هي نفسها من نجي لهالمثال
public class Main {
public static void main(String[] args) {
System.out.println ("hi");
}
}
فهنا ايضًا الماين هي الميثود الاساسي زين مقتدى شني الفائدة من الميثود "باستثناء الاساسية"
سؤال جميل واجابته
لا اشاقة اكو فروق بين معنى الفانكشن والميثود بامور معينة راح اشرحها عن قريب بنهاية الشرح اولا لازم نعرف شني الميثود
هي مجموعة من التعليمات التي تُستخدم لِتنفيذ مهمة معينة. تُعتبر الميثود جزءًا أساسيًا من البرنامج لان انتَ وانتِ ماتكدر تشغل برنامج بلا ميثود اصلا هسة تكلي شون؟
اكلك تتذكر c++ جنا نكول الدالة (الفنكشن) الاساسية والدوال الاحتياطية؟
اي بالضبط حتى مثلا نكتب
#include<iostream>
using namespace std;
int main()
{
cout << "Hi!" << endl;
return 0;
}
main هي نفسها الدالة الاساسية اما الان بالجافا فالميثود الاساسي هي نفسها من نجي لهالمثال
public class Main {
public static void main(String[] args) {
System.out.println ("hi");
}
}
فهنا ايضًا الماين هي الميثود الاساسي زين مقتدى شني الفائدة من الميثود "باستثناء الاساسية"
سؤال جميل واجابته
مثل ما تعلمناه سابقا العام بالc++ لمن نريد نجري عمليه رياضية لعدة اعداد لاكثر من مرة ران نتطر نكتب العملية اكثر من مرة ولكن بالفنكشن الوضع مختلف فقط بكل مرة تحتاج العملية فقط تقوم باستدعاء الفنكشن اللي مهمتها هوَّ القيام بالعملية الحسابية اللي جاي تشتغل عليها التوضيح
#include <iostream>
using namespace std;
int fact (int No)
{
int f=1;
for (int i=1;i<=No; i++)
f=f*i;
return f;
}
int main()
{int num;
cout << "enter the number you want to find its Factorial" << endl;
cin >> num;
cout << "Factorial of: "<<num<<" is : "<< endl;
cout<<fact (num);
return 0;
}
هنا بc++استخدمنا دالة الfactorial علمود نجري عملية معينة واصلا هاي الدابة مو خلاص استدعيتها لعنصر واحد وفقط لا اكدر اعرف عناصر واسويلها قراءة عليه
int d =?;
cout<< fact (d);
بحيث تكدر تسوي مالا نهائي من العمليات على نفس الدالة بدون ماتكرر عملياتها اما بالجافا
import java.util.Scanner;
public class Muqtada {
public static int fact(int n) {
int r = 1;
for (int i = 1; i <= n; i++) {
r *= i;
}
return r;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter the number you want to find its factorial: ");
int num = sc.nextInt();
int result = fact(num);
System.out.println("Factorial of " + num + " is: " + result);
sc.close();
}
}
نفس الشغل تقريبا بنسبة 80% اللهم اكو فرق بعدة امور بسيطة
#include <iostream>
using namespace std;
int fact (int No)
{
int f=1;
for (int i=1;i<=No; i++)
f=f*i;
return f;
}
int main()
{int num;
cout << "enter the number you want to find its Factorial" << endl;
cin >> num;
cout << "Factorial of: "<<num<<" is : "<< endl;
cout<<fact (num);
return 0;
}
هنا بc++استخدمنا دالة الfactorial علمود نجري عملية معينة واصلا هاي الدابة مو خلاص استدعيتها لعنصر واحد وفقط لا اكدر اعرف عناصر واسويلها قراءة عليه
int d =?;
cout<< fact (d);
بحيث تكدر تسوي مالا نهائي من العمليات على نفس الدالة بدون ماتكرر عملياتها اما بالجافا
import java.util.Scanner;
public class Muqtada {
public static int fact(int n) {
int r = 1;
for (int i = 1; i <= n; i++) {
r *= i;
}
return r;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter the number you want to find its factorial: ");
int num = sc.nextInt();
int result = fact(num);
System.out.println("Factorial of " + num + " is: " + result);
sc.close();
}
}
نفس الشغل تقريبا بنسبة 80% اللهم اكو فرق بعدة امور بسيطة
إليك برنامج بلغة C++ يغطي المتطلبات التي طلبتها. سأقوم أولاً بتعريف هيكل بيانات لتخزين معلومات الطلاب، ثم سأكتب الدوال المطلوبة لتنفيذ كل وظيفة.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Student {
string name;
float grade;
};
// دالة لطباعة كل الطلاب ودرجاتهم
void printAllStudents(const vector<Student>& students) {
cout << "قائمة الطلاب ودرجاتهم:\n";
for (const auto& student : students) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
// دالة لطباعة الطلاب الناجحين فقط
void printPassingStudents(const vector<Student>& students, float passingGrade) {
cout << "\nالطلاب الناجحين:\n";
for (const auto& student : students) {
if (student.grade >= passingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}
// دالة لطباعة الطلاب الراسبين
void printFailingStudents(const vector<Student>& students, float passingGrade) {
cout << "\nالطلاب الراسبين:\n";
for (const auto& student : students) {
if (student.grade < passingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}
// دالة لطباعة الطالب الحاصل على أعلى درجة
void printTopStudent(const vector<Student>& students) {
if (students.empty()) return;
Student topStudent = students[0];
for (const auto& student : students) {
if (student.grade > topStudent.grade) {
topStudent = student;
}
}
cout << "\nالطالب الحاصل على أعلى درجة:\n";
cout << "الاسم: " << topStudent.name << " - الدرجة: " << topStudent.grade << endl;
}
// دالة لطباعة الطلاب الراسبين في القرآن (يمكن اعتبار أنهم راسبون إذا كانت درجتهم أقل من 60 مثلاً)
void printFailingInQuran(const vector<Student>& students) {
const float quranPassingGrade = 60.0; // فرضي
cout << "\nالطلاب الراسبين في القرآن:\n";
for (const auto& student : students) {
if (student.grade < quranPassingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}
// دالة لطباعة تقدير الطلاب بناءً على درجاتهم
void printGrades(const vector<Student>& students) {
cout << "\nتقدير الطلاب:\n";
for (const auto& student : students) {
string grade;
if (student.grade >= 90) grade = "ممتاز";
else if (student.grade >= 80) grade = "جيد جداً";
else if (student.grade >= 70) grade = "جيد";
else if (student.grade >= 60) grade = "مقبول";
else grade = "راسب";
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << " - التقدير: " << grade << endl;
}
}
int main() {
vector<Student> students = {
{"أحمد", 95},
{"مريم", 82},
{"علي", 58},
{"سارة", 76},
{"يوسف", 40},
{"فاطمة", 61}
};
printAllStudents(students);
printPassingStudents(students, 60.0);
printFailingStudents(students, 60.0);
printTopStudent(students);
printFailingInQuran(students);
printGrades(students);
return 0;
}
### ملاحظات حول البرنامج:
1. هيكل بيانات Student: يحتوي على الاسم والدرجة.
2. الدوال: تم تعريف دوال لكل من الوظائف المطلوبة مثل طباعة جميع الطلاب، الناجحين، الراسبين، الطالب الحاصل على أعلى درجة، والراسبين في القرآن.
3. تقدير الطلاب: يتم وضع شروط لتحديد تقدير كل طالب حسب درجته.
4. النقطة القابلة للتغيير: يمكنك تغيير درجة النجاح في وظيفة printFailingInQuran وفقًا للمعايير التي ترغب بها.
@yahfsh
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Student {
string name;
float grade;
};
// دالة لطباعة كل الطلاب ودرجاتهم
void printAllStudents(const vector<Student>& students) {
cout << "قائمة الطلاب ودرجاتهم:\n";
for (const auto& student : students) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
// دالة لطباعة الطلاب الناجحين فقط
void printPassingStudents(const vector<Student>& students, float passingGrade) {
cout << "\nالطلاب الناجحين:\n";
for (const auto& student : students) {
if (student.grade >= passingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}
// دالة لطباعة الطلاب الراسبين
void printFailingStudents(const vector<Student>& students, float passingGrade) {
cout << "\nالطلاب الراسبين:\n";
for (const auto& student : students) {
if (student.grade < passingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}
// دالة لطباعة الطالب الحاصل على أعلى درجة
void printTopStudent(const vector<Student>& students) {
if (students.empty()) return;
Student topStudent = students[0];
for (const auto& student : students) {
if (student.grade > topStudent.grade) {
topStudent = student;
}
}
cout << "\nالطالب الحاصل على أعلى درجة:\n";
cout << "الاسم: " << topStudent.name << " - الدرجة: " << topStudent.grade << endl;
}
// دالة لطباعة الطلاب الراسبين في القرآن (يمكن اعتبار أنهم راسبون إذا كانت درجتهم أقل من 60 مثلاً)
void printFailingInQuran(const vector<Student>& students) {
const float quranPassingGrade = 60.0; // فرضي
cout << "\nالطلاب الراسبين في القرآن:\n";
for (const auto& student : students) {
if (student.grade < quranPassingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}
// دالة لطباعة تقدير الطلاب بناءً على درجاتهم
void printGrades(const vector<Student>& students) {
cout << "\nتقدير الطلاب:\n";
for (const auto& student : students) {
string grade;
if (student.grade >= 90) grade = "ممتاز";
else if (student.grade >= 80) grade = "جيد جداً";
else if (student.grade >= 70) grade = "جيد";
else if (student.grade >= 60) grade = "مقبول";
else grade = "راسب";
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << " - التقدير: " << grade << endl;
}
}
int main() {
vector<Student> students = {
{"أحمد", 95},
{"مريم", 82},
{"علي", 58},
{"سارة", 76},
{"يوسف", 40},
{"فاطمة", 61}
};
printAllStudents(students);
printPassingStudents(students, 60.0);
printFailingStudents(students, 60.0);
printTopStudent(students);
printFailingInQuran(students);
printGrades(students);
return 0;
}
### ملاحظات حول البرنامج:
1. هيكل بيانات Student: يحتوي على الاسم والدرجة.
2. الدوال: تم تعريف دوال لكل من الوظائف المطلوبة مثل طباعة جميع الطلاب، الناجحين، الراسبين، الطالب الحاصل على أعلى درجة، والراسبين في القرآن.
3. تقدير الطلاب: يتم وضع شروط لتحديد تقدير كل طالب حسب درجته.
4. النقطة القابلة للتغيير: يمكنك تغيير درجة النجاح في وظيفة printFailingInQuran وفقًا للمعايير التي ترغب بها.
@yahfsh
❤2
إليك مثال على برنامج متكامل بلغة C++ يستخدم عدة هياكل بيانات (مركبات بنية) لتنظيم المعلومات حول الطلاب والفصول الدراسية. سنستخدم الهياكل والمصفوفات والقوائم لتكوين هذا البرنامج.
### 1. مخطط البرنامج
#### 1.1. الهياكل المستخدمة
- هيكل Student: يمثل بيانات الطالب.
- هيكل Course: يمثل بيانات الدورة الدراسية.
- هيكل School: ينظم الطلاب والدورات.
### 2. الكود
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// تعريف هيكل الطالب
struct Student {
int id;
string name;
float gpa; // المعدل التراكمي للطالب
};
// تعريف هيكل الدورة
struct Course {
int code;
string title;
vector<Student> enrolledStudents; // الطلاب المسجلون في الدورة
};
// تعريف هيكل المدرسة
struct School {
vector<Course> courses;
void addCourse() {
Course newCourse;
cout << "أدخل رمز الدورة: ";
cin >> newCourse.code;
cout << "أدخل عنوان الدورة: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, newCourse.title);
courses.push_back(newCourse);
cout << "تم إضافة الدورة بنجاح!\n";
}
void enrollStudent() {
int courseIndex;
Student newStudent;
cout << "أدخل رقم الدورة للتسجيل: ";
cin >> courseIndex;
if (courseIndex < 0 || courseIndex >= courses.size()) {
cout << "رقم الدورة غير صحيح.\n";
return;
}
cout << "أدخل رقم معرف الطالب: ";
cin >> newStudent.id;
cout << "أدخل اسم الطالب: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, newStudent.name);
cout << "أدخل المعدل التراكمي: ";
cin >> newStudent.gpa;
courses[courseIndex].enrolledStudents.push_back(newStudent);
cout << "تم تسجيل الطالب في الدورة بنجاح!\n";
}
void displayCourses() {
cout << "\nقائمة الدورات:\n";
for (const auto& course : courses) {
cout << "رمز الدورة: " << course.code << ", العنوان: " << course.title << endl;
cout << "الطلاب المسجلون:\n";
for (const auto& student : course.enrolledStudents) {
cout << " معرف: " << student.id << ", الاسم: " << student.name << ", المعدل: " << student.gpa << endl;
}
}
}
};
int main() {
School school;
int choice;
do {
cout << "\n1. إضافة دورة\n2. تسجيل طالب في دورة\n3. عرض الدورات\n4. الخروج\n";
cout << "اختر خيارًا: ";
cin >> choice;
switch (choice) {
case 1:
school.addCourse();
break;
case 2:
school.enrollStudent();
break;
case 3:
school.displayCourses();
break;
case 4:
cout << "الخروج...\n";
break;
default:
cout << "خيار غير صالح. حاول مرة أخرى.\n";
}
} while (choice != 4);
return 0;
}
### 3. شرح الكود
- هيكل Student: يحتوي على معرف الطالب، الاسم، والمعدل التراكمي.
- هيكل Course: يحتوي على رمز الدورة، عنوانها، وقائمة الطلاب المسجلين فيها.
- هيكل School: يحتوي على قائمة الدورات، مع وظائف لإضافة الدورات، تسجيل الطلاب، وعرض المعلومات.
### 4. تجميع البرنامج
يمكنك تجميع البرنامج باستخدام أي مترجم C++ مثل GCC. احفظ الكود في ملف باسم school_management.cpp، ثم استخدم الأوامر التالية من سطر الأوامر:
g++ school_management.cpp -o school_management
./school_management
### 5. الخاتمة
هذا البرنامج يوضح كيفية استخدام المركبات البنائية (الهياكل) في C++ لتنظيم وإدارة بيانات متعددة. يمكنك توسيع البرنامج بإضافة ميزات إضافية مثل حذف الطلاب من الدورات أو تعديل بياناتهم.
إذا كان لديك أي استفسارات أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها!
### 1. مخطط البرنامج
#### 1.1. الهياكل المستخدمة
- هيكل Student: يمثل بيانات الطالب.
- هيكل Course: يمثل بيانات الدورة الدراسية.
- هيكل School: ينظم الطلاب والدورات.
### 2. الكود
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// تعريف هيكل الطالب
struct Student {
int id;
string name;
float gpa; // المعدل التراكمي للطالب
};
// تعريف هيكل الدورة
struct Course {
int code;
string title;
vector<Student> enrolledStudents; // الطلاب المسجلون في الدورة
};
// تعريف هيكل المدرسة
struct School {
vector<Course> courses;
void addCourse() {
Course newCourse;
cout << "أدخل رمز الدورة: ";
cin >> newCourse.code;
cout << "أدخل عنوان الدورة: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, newCourse.title);
courses.push_back(newCourse);
cout << "تم إضافة الدورة بنجاح!\n";
}
void enrollStudent() {
int courseIndex;
Student newStudent;
cout << "أدخل رقم الدورة للتسجيل: ";
cin >> courseIndex;
if (courseIndex < 0 || courseIndex >= courses.size()) {
cout << "رقم الدورة غير صحيح.\n";
return;
}
cout << "أدخل رقم معرف الطالب: ";
cin >> newStudent.id;
cout << "أدخل اسم الطالب: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, newStudent.name);
cout << "أدخل المعدل التراكمي: ";
cin >> newStudent.gpa;
courses[courseIndex].enrolledStudents.push_back(newStudent);
cout << "تم تسجيل الطالب في الدورة بنجاح!\n";
}
void displayCourses() {
cout << "\nقائمة الدورات:\n";
for (const auto& course : courses) {
cout << "رمز الدورة: " << course.code << ", العنوان: " << course.title << endl;
cout << "الطلاب المسجلون:\n";
for (const auto& student : course.enrolledStudents) {
cout << " معرف: " << student.id << ", الاسم: " << student.name << ", المعدل: " << student.gpa << endl;
}
}
}
};
int main() {
School school;
int choice;
do {
cout << "\n1. إضافة دورة\n2. تسجيل طالب في دورة\n3. عرض الدورات\n4. الخروج\n";
cout << "اختر خيارًا: ";
cin >> choice;
switch (choice) {
case 1:
school.addCourse();
break;
case 2:
school.enrollStudent();
break;
case 3:
school.displayCourses();
break;
case 4:
cout << "الخروج...\n";
break;
default:
cout << "خيار غير صالح. حاول مرة أخرى.\n";
}
} while (choice != 4);
return 0;
}
### 3. شرح الكود
- هيكل Student: يحتوي على معرف الطالب، الاسم، والمعدل التراكمي.
- هيكل Course: يحتوي على رمز الدورة، عنوانها، وقائمة الطلاب المسجلين فيها.
- هيكل School: يحتوي على قائمة الدورات، مع وظائف لإضافة الدورات، تسجيل الطلاب، وعرض المعلومات.
### 4. تجميع البرنامج
يمكنك تجميع البرنامج باستخدام أي مترجم C++ مثل GCC. احفظ الكود في ملف باسم school_management.cpp، ثم استخدم الأوامر التالية من سطر الأوامر:
g++ school_management.cpp -o school_management
./school_management
### 5. الخاتمة
هذا البرنامج يوضح كيفية استخدام المركبات البنائية (الهياكل) في C++ لتنظيم وإدارة بيانات متعددة. يمكنك توسيع البرنامج بإضافة ميزات إضافية مثل حذف الطلاب من الدورات أو تعديل بياناتهم.
إذا كان لديك أي استفسارات أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها!
يمكنك إنشاء برنامج بلغة C++ لإدارة بيانات الطلاب ودرجاتهم، يتضمن ما يلي: طباعة قائمة الطلاب مع درجاتهم، طباعة درجات مادة معينة، تصنيف الطلاب حسب أدائهم (راسب، نجاح، نجاح ممتاز) وحساب المجموع للدرجات. إليك كودًا يحقق ذلك:
### البرنامج
### شرح البرنامج
1. **الهيكل
2. **الدالة
3. **الدالة
4. **الدالة
5. **الدالة
### كيفية التجميع والتنفيذ
يمكنك حفظ الكود في ملف باسم
g++
### البرنامج
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// تعريف هيكل الطالب
struct Student {
int id;
string name;
float grades[5]; // افتراض وجود خمس مواد
};
// دالة لطباعة جميع الطلاب ودرجاتهم
void printAllStudents(const vector<Student>& students) {
cout << "\nقائمة الطلاب ودرجاتهم:\n";
for (const auto& student : students) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name;
cout << ", الدرجات: ";
for (const auto& grade : student.grades) {
cout << grade << " ";
}
cout << endl;
}
}
// دالة لطباعة درجات مادة معينة (مادة القرآن)
void printQuranGrades(const vector<Student>& students) {
cout << "\nدرجات مادة القرآن:\n";
for (const auto& student : students) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name;
cout << ", درجة القرآن: " << student.grades[0] << endl; // افتراض أن درجة القرآن هي الأولى
}
}
// دالة لتصنيف الطلاب حسب أدائهم
void classifyStudents(const vector<Student>& students) {
cout << "\nتصنيف الطلاب:\n";
for (const auto& student : students) {
float average = 0;
for (const auto& grade : student.grades) {
average += grade;
}
average /= 5; // افتراض أن هناك خمس مواد
if (average < 60) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - راسب\n";
} else if (average >= 60 && average < 75) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - نجاح\n";
} else {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - نجاح ممتاز\n";
}
}
}
// دالة لحساب مجموع درجات مادة القرآن
float calculateTotalQuranGrades(const vector<Student>& students) {
float total = 0;
for (const auto& student : students) {
total += student.grades[0]; // افتراض أن درجة القرآن هي الأولى
}
return total;
}
// البرنامج الرئيسي
int main() {
vector<Student> students;
int numberOfStudents;
cout << "أدخل عدد الطلاب: ";
cin >> numberOfStudents;
for (int i = 0; i < numberOfStudents; ++i) {
Student student;
cout << "أدخل معرف الطالب: ";
cin >> student.id;
cout << "أدخل اسم الطالب: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, student.name);
cout << "أدخل درجات الطالب (5 درجات): ";
for (int j = 0; j < 5; ++j) {
cin >> student.grades[j];
}
students.push_back(student);
}
printAllStudents(students);
printQuranGrades(students);
classifyStudents(students);
float totalQuranGrades = calculateTotalQuranGrades(students);
cout << "مجموع درجات مادة القرآن: " << totalQuranGrades << endl;
return 0;
}
### شرح البرنامج
1. **الهيكل
Student
**: يحتوي على معرف الطالب، الاسم، ومصفوفة تحتوي على درجات الطالب في 5 مواد.2. **الدالة
printAllStudents
**: تقوم بطباعة قائمة بجميع الطلاب ودرجاتهم.3. **الدالة
printQuranGrades
**: تقوم بطباعة درجات مادة القرآن (افتراض أن هذه المادة هي الأولى).4. **الدالة
classifyStudents
**: تقوم بتصنيف الطلاب إلى راسب، نجاح، ونجاح ممتاز بناءً على المتوسط.5. **الدالة
calculateTotalQuranGrades
**: تقوم بحساب مجموع درجات مادة القرالبرنامج الرئيسي**البرنامج الرئيسي**: يستقبل عدد الطلاب وبياناتهم، ثم ينفذ الدوال المذكورة لطباعة المعلومات المطلوبة.### كيفية التجميع والتنفيذ
يمكنك حفظ الكود في ملف باسم
student_management.cpp
، ثم استخدم الأوامر التالية من سطر الأوامر:`
bashg++
السؤال الاول
١. اكتب برنامج عشان يحسب مجموع كل عمود في مصفوفة:
#include <iostream>
using namespace std;
int main() {
int rows = 3, cols = 3;
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int col = 0; col < cols; ++col) {
int sum = 0;
for (int row = 0; row < rows; ++row) {
sum += arr[row][col];
}
cout << "Sum of column " << col + 1 << " is: " << sum << endl;
}
return 0;
}
٢.اكتب برنامج للحصول على المصفوفة المتناظرة
#include <iostream>
using namespace std;
int main() {
int rows = 3, cols = 3;
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int transpose[3][3];
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
transpose[j][i] = matrix[i][j];
}
}
cout << "Transpose matrix:\n";
for (int i = 0; i < cols; ++i) {
for (int j = 0; j < rows; ++j) {
cout << transpose[i][j] << " ";
}
cout << endl;
}
return 0;
}
٣. برنامج لإيجاد أكبر رقم في القطر الرئيسي لمصفوفة 3×3
#include <iostream>
using namespace std;
int main() {
int matrix[3][3] = {{1, 5, 3}, {4, 10, 6}, {7, 8, 2}};
int maxDiagonal = matrix[0][0];
for (int i = 1; i < 3; ++i) {
if (matrix[i][i] > maxDiagonal) {
maxDiagonal = matrix[i][i];
}
}
cout << "Greatest number in the main diagonal is: " << maxDiagonal << endl;
return 0;
}
٤. اكتب برنامج عمله بيرتب مصفوفة 2×3 بترتيب تصاعدي
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[2][3] = {{5, 2, 9}, {1, 6, 3}};
int temp[6], index = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
temp[index++] = arr[i][j];
sort(temp, temp + 6);
index = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
arr[i][j] = temp[index++];
cout << "Sorted matrix:\n";
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
٥.اكتب برنامج لحساب مجموع الأعداد الفردية في مصفوفة 2×3
#include <iostream>
using namespace std;
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int sumOdd = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
if (arr[i][j] % 2 != 0)
sumOdd += arr[i][j];
cout << "Sum of odd numbers: " << sumOdd << endl;
return 0;
}
٧.اكتب برنامج للبحث عن حرف معين في مصفوفة 2×3
#include <iostream>
using namespace std;
int main() {
char arr[2][3] = {{'a', 'b', 'c'}, {'d', 'e', 'f'}};
char target;
cout << "Enter a character to search for: ";
cin >> target;
bool found = false;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
if (arr[i][j] == target) {
cout << "Character found at position: [" << i << "][" << j << "]\n";
found = true;
}
}
}
if (!found) cout << "Character not found.\n";
return 0;
}
٧. اكتب برنامج لقراءة مصفوفة حروف وإيجاد B و C
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Enter the size of the matrix: ";
cin >> n;
char A[n][n], B[n*n], C[n*n];
int bIndex = 0, cIndex = 0;
cout << "Enter characters for matrix A:\n";
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
cin >> A[i][j];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (isupper(A[i][j])) B[bIndex++] = A[i][j];
else if (islower(A[i][j])) C[cIndex++] = A[i][j];
}
}
cout << "B (Capital letters): ";
for (int i = 0; i < bIndex; ++i) cout << B[i] << " ";
cout << "\nC (Small letters): ";
for (int i = 0; i < cIndex; ++i) cout << C[i] << " ";
cout << endl;
return 0;
}
١. اكتب برنامج عشان يحسب مجموع كل عمود في مصفوفة:
#include <iostream>
using namespace std;
int main() {
int rows = 3, cols = 3;
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int col = 0; col < cols; ++col) {
int sum = 0;
for (int row = 0; row < rows; ++row) {
sum += arr[row][col];
}
cout << "Sum of column " << col + 1 << " is: " << sum << endl;
}
return 0;
}
٢.اكتب برنامج للحصول على المصفوفة المتناظرة
#include <iostream>
using namespace std;
int main() {
int rows = 3, cols = 3;
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int transpose[3][3];
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
transpose[j][i] = matrix[i][j];
}
}
cout << "Transpose matrix:\n";
for (int i = 0; i < cols; ++i) {
for (int j = 0; j < rows; ++j) {
cout << transpose[i][j] << " ";
}
cout << endl;
}
return 0;
}
٣. برنامج لإيجاد أكبر رقم في القطر الرئيسي لمصفوفة 3×3
#include <iostream>
using namespace std;
int main() {
int matrix[3][3] = {{1, 5, 3}, {4, 10, 6}, {7, 8, 2}};
int maxDiagonal = matrix[0][0];
for (int i = 1; i < 3; ++i) {
if (matrix[i][i] > maxDiagonal) {
maxDiagonal = matrix[i][i];
}
}
cout << "Greatest number in the main diagonal is: " << maxDiagonal << endl;
return 0;
}
٤. اكتب برنامج عمله بيرتب مصفوفة 2×3 بترتيب تصاعدي
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[2][3] = {{5, 2, 9}, {1, 6, 3}};
int temp[6], index = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
temp[index++] = arr[i][j];
sort(temp, temp + 6);
index = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
arr[i][j] = temp[index++];
cout << "Sorted matrix:\n";
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
٥.اكتب برنامج لحساب مجموع الأعداد الفردية في مصفوفة 2×3
#include <iostream>
using namespace std;
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int sumOdd = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
if (arr[i][j] % 2 != 0)
sumOdd += arr[i][j];
cout << "Sum of odd numbers: " << sumOdd << endl;
return 0;
}
٧.اكتب برنامج للبحث عن حرف معين في مصفوفة 2×3
#include <iostream>
using namespace std;
int main() {
char arr[2][3] = {{'a', 'b', 'c'}, {'d', 'e', 'f'}};
char target;
cout << "Enter a character to search for: ";
cin >> target;
bool found = false;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
if (arr[i][j] == target) {
cout << "Character found at position: [" << i << "][" << j << "]\n";
found = true;
}
}
}
if (!found) cout << "Character not found.\n";
return 0;
}
٧. اكتب برنامج لقراءة مصفوفة حروف وإيجاد B و C
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Enter the size of the matrix: ";
cin >> n;
char A[n][n], B[n*n], C[n*n];
int bIndex = 0, cIndex = 0;
cout << "Enter characters for matrix A:\n";
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
cin >> A[i][j];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (isupper(A[i][j])) B[bIndex++] = A[i][j];
else if (islower(A[i][j])) C[cIndex++] = A[i][j];
}
}
cout << "B (Capital letters): ";
for (int i = 0; i < bIndex; ++i) cout << B[i] << " ";
cout << "\nC (Small letters): ";
for (int i = 0; i < cIndex; ++i) cout << C[i] << " ";
cout << endl;
return 0;
}