JAVA OOP
اكتب برنامج لطباعة الجزء العلوي والجزء السفلي لمصفوفه ثنائيه واجراء ٥ عمليات على الجزء العلوي والجزء السفلي؟
Telegram
JAVA OOP
import java.util.Scanner;
public class wo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("أدخل عدد الصفوف: ");
int rows = in.nextInt();
System.out.print("أدخل عدد…
public class wo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("أدخل عدد الصفوف: ");
int rows = in.nextInt();
System.out.print("أدخل عدد…
سؤال المختبر القادم للهياكل /علوم صباحي
//
اكتب برنامج يقرء مصفوفه احاديه ومصفوفة ثنائيه ومصفوفه ثلاثيه ثم يطلب من المستخدم اختيار نوع المصفوفه ووحجم المصفوفه وعناصر المجموعه ثم طباعتها واجراء 5 عمليات عليها ويبقى يطلب من المستخدم اجراء عمليات لحين طلب المستخدم الخروج من العمليات
🔥3
JAVA OOP
سؤال المختبر القادم للهياكل /علوم صباحي // اكتب برنامج يقرء مصفوفه احاديه ومصفوفة ثنائيه ومصفوفه ثلاثيه ثم يطلب من المستخدم اختيار نوع المصفوفه ووحجم المصفوفه وعناصر المجموعه ثم طباعتها واجراء 5 عمليات عليها ويبقى يطلب من المستخدم اجراء عمليات لحين…
import java.util.Scanner;
public class hmd {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean exit = false;
while (!exit) {
System.out.println("اختر نوع المصفوفة: 1. أحادية 2. ثنائية 3. ثلاثية 4. خروج");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("أدخل عدد العناصر في المصفوفة الأحادية:");
int size = scanner.nextInt();
int[] array = new int[size];
System.out.println("أدخل العناصر:");
for (int i = 0; i < size; i++) {
array[i] = scanner.nextInt();
}
printArray(array);
arrayD1(array);
break;
case 2:
System.out.println("أدخل عدد الصفوف:");
int rows = scanner.nextInt();
System.out.println("أدخل عدد الأعمدة:");
int cols = scanner.nextInt();
int[][] matrix = new int[rows][cols];
System.out.println("أدخل العناصر:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix[i][j] = scanner.nextInt();
}
}
printArray(matrix);
arrayD2(matrix);
break;
case 3:
System.out.println("أدخل عدد الطبقات:");
int layers = scanner.nextInt();
System.out.println("أدخل عدد الصفوف:");
int threesRows = scanner.nextInt();
System.out.println("أدخل عدد الأعمدة:");
int threesCols = scanner.nextInt();
int[][][] threeDMatrix = new int[layers][threesRows][threesCols];
System.out.println("أدخل العناصر:");
for (int i = 0; i < layers; i++) {
for (int j = 0; j < threesRows; j++) {
for (int k = 0; k < threesCols; k++) {
threeDMatrix[i][j][k] = scanner.nextInt();
}
}
}
printArray(threeDMatrix);
arrayD3(threeDMatrix);
break;
case 4:
exit = true;
System.out.println("تم الخروج من البرنامج.");
break;
default:
System.out.println("اختيار غير صالح.");
}
}
scanner.close();
}
// العمليات على المصفوفة الأحادية
private static void arrayD1(int[] array) {
boolean backToMenu = false;
while (!backToMenu) {
printArray(array);
System.out.println("اختر عملية:");
System.out.println("1. حساب مجموع العناصر");
System.out.println("2. حساب متوسط العناصر");
System.out.println("3. العثور على أكبر عنصر");
System.out.println("4. العثور على أصغر عنصر");
System.out.println("5. عكس المصفوفة");
System.out.println("6. العودة إلى القائمة الرئيسية");
int operation = new Scanner(System.in).nextInt();
switch (operation) {
case 1:
System.out.println("مجموع العناصر: " + sum(array));
break;
case 2:
System.out.println("متوسط العناصر: " + average(array));
JAVA OOP
سؤال المختبر القادم للهياكل /علوم صباحي // اكتب برنامج يقرء مصفوفه احاديه ومصفوفة ثنائيه ومصفوفه ثلاثيه ثم يطلب من المستخدم اختيار نوع المصفوفه ووحجم المصفوفه وعناصر المجموعه ثم طباعتها واجراء 5 عمليات عليها ويبقى يطلب من المستخدم اجراء عمليات لحين…
break;
case 3:
System.out.println("أكبر عنصر: " + max(array));
break;
case 4:
System.out.println("أصغر عنصر: " + min(array));
break;
case 5:
reverseArray(array);
break;
case 6:
backToMenu = true;
break;
default:
System.out.println("اختيار غير صالح!");
}
}
}
// العمليات على المصفوفة الثنائية
private static void arrayD2(int[][] matrix) {
boolean backToMenu = false;
while (!backToMenu) {
printArray(matrix);
System.out.println("اختر عملية:");
System.out.println("1. حساب مجموع العناصر");
System.out.println("2. حساب متوسط العناصر");
System.out.println("3. العثور على أكبر عنصر");
System.out.println("4. العثور على أصغر عنصر");
System.out.println("5. عكس المصفوفة");
System.out.println("6. العودة إلى القائمة الرئيسية");
int operation = new Scanner(System.in).nextInt();
switch (operation) {
case 1:
System.out.println("مجموع العناصر: " + sum(matrix));
break;
case 2:
System.out.println("متوسط العناصر: " + average(matrix));
break;
case 3:
System.out.println("أكبر عنصر: " + max(matrix));
break;
case 4:
System.out.println("أصغر عنصر: " + min(matrix));
break;
case 5:
reverseMatrix(matrix);
break;
case 6:
backToMenu = true;
break;
default:
System.out.println("اختيار غير صالح!");
}
}
}
// العمليات على المصفوفة الثلاثية
private static void arrayD3(int[][][] matrix) {
boolean backToMenu = false;
while (!backToMenu) {
printArray(matrix);
System.out.println("اختر عملية:");
System.out.println("1. حساب مجموع العناصر");
System.out.println("2. حساب متوسط العناصر");
System.out.println("3. العثور على أكبر عنصر");
System.out.println("4. العثور على أصغر عنصر");
System.out.println("5. عكس المصفوفة");
System.out.println("6. العودة إلى القائمة الرئيسية");
int operation = new Scanner(System.in).nextInt();
switch (operation) {
case 1:
System.out.println("مجموع العناصر: " + sum(matrix));
break;
case 2:
System.out.println("متوسط العناصر: " + average(matrix));
break;
case 3:
System.out.println("أكبر عنصر: " + max(matrix));
break;
case 4:
System.out.println("أصغر عنصر: " + min(matrix));
break;
case 5:
reverseMatrix(matrix);
break;
case 6:
backToMenu = true;
break;
default:
System.out.println("اختيار غير صالح!");
}
}
}
private static int sum(int[] array) {
int total = 0;
for (int i : array) total += i;
return total;
}
private static double average(int[] array) {
return (double) sum(array) / array.length;
}
private static int max(int[] array) {
int max = array[0];
for (int i : array) if (i > max) max = i;
return max;
}
private static int min(int[] array) {
int min = array[0];
for (int i : array) if (i < min) min = i;
return min;
}
JAVA OOP
سؤال المختبر القادم للهياكل /علوم صباحي // اكتب برنامج يقرء مصفوفه احاديه ومصفوفة ثنائيه ومصفوفه ثلاثيه ثم يطلب من المستخدم اختيار نوع المصفوفه ووحجم المصفوفه وعناصر المجموعه ثم طباعتها واجراء 5 عمليات عليها ويبقى يطلب من المستخدم اجراء عمليات لحين…
private static int sum(int[][] matrix) {
int total = 0;
for (int[] row : matrix) total += sum(row);
return total;
}
private static double average(int[][] matrix) {
return (double) sum(matrix) / (matrix.length * matrix[0].length);
}
private static int max(int[][] matrix) {
int max = matrix[0][0];
for (int[] row : matrix) for (int i : row) if (i > max) max = i;
return max;
}
private static int min(int[][] matrix) {
int min = matrix[0][0];
for (int[] row : matrix) for (int i : row) if (i < min) min = i;
return min;
}
private static int sum(int[][][] matrix) {
int total = 0;
for (int[][] layer : matrix) total += sum(layer);
return total;
}
private static double average(int[][][] matrix) {
return (double) sum(matrix) / (matrix.length * matrix[0].length * matrix[0][0].length);
}
private static int max(int[][][] matrix) {
int max = matrix[0][0][0];
for (int[][] layer : matrix) for (int[] row : layer) for (int i : row) if (i > max) max = i;
return max;
}
private static int min(int[][][] matrix) {
int min = matrix[0][0][0];
for (int[][] layer : matrix) for (int[] row : layer) for (int i : row) if (i < min) min = i;
return min;
}
private static void reverseArray(int[] array) {
int n = array.length;
for (int i = 0; i < n / 2; i++) {
int temp = array[i];
array[i] = array[n - i - 1];
array[n - i - 1] = temp;
}
printArray(array);
}
private static void reverseMatrix(int[][] matrix) {
for (int i = 0; i < matrix.length; i++) {
reverseArray(matrix[i]);
}
System.out.println("المصفوفة الثنائية بعد العكس:");
printArray(matrix);
}
private static void reverseMatrix(int[][][] matrix) {
for (int i = 0; i < matrix.length; i++) {
reverseMatrix(matrix[i]);
}
System.out.println("المصفوفة الثلاثية بعد العكس:");
printArray(matrix);
}
private static void printArray(int[] array) {
System.out.println("عناصر المصفوفة الأحادية:");
for (int i : array) {
System.out.print(i + " ");
}
System.out.println();
}
private static void printArray(int[][] matrix) {
System.out.println("عناصر المصفوفة الثنائية:");
for (int[] row : matrix) {
for (int j : row) {
System.out.print(j + " ");
}
System.out.println();
}
}
private static void printArray(int[][][] matrix) {
System.out.println("عناصر المصفوفة الثلاثية:");
for (int[][] layer : matrix) {
for (int[] row : layer) {
for (int i : row) {
System.out.print(i + " ");
}
System.out.println();
}
System.out.println("---");
}
}
}
JAVA OOP
سؤال المختبر القادم للهياكل /علوم صباحي // اكتب برنامج يقرء مصفوفه احاديه ومصفوفة ثنائيه ومصفوفه ثلاثيه ثم يطلب من المستخدم اختيار نوع المصفوفه ووحجم المصفوفه وعناصر المجموعه ثم طباعتها واجراء 5 عمليات عليها ويبقى يطلب من المستخدم اجراء عمليات لحين…
Telegram
JAVA OOP
import java.util.Scanner;
public class hmd {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean exit = false;
while (!exit) {
System.out.println("اختر نوع المصفوفة: 1. أحادية…
public class hmd {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean exit = false;
while (!exit) {
System.out.println("اختر نوع المصفوفة: 1. أحادية…
🕊1
تعدد (Overloading) هو ميزة في البرمجة تسمح بتعريف عدة دوال (Methods) أو بنائين (Constructors) بنفس الاسم ولكن بمعاملات مختلفة. بمعنى آخر، يمكن إنشاء دوال بنفس الاسم طالما كانت تملك عددًا مختلفًا من المعاملات أو أنواعًا مختلفة لها. يُحدد أي دالة سيتم استدعاؤها أثناء التنفيذ بناءً على نوع وعدد المعاملات المقدمة
مثال
لنلقِ نظرة على مثال بسيط لدالة إضافة باستخدام تعدد التحميل
public class MathOperations {
// دالة لإضافة عددين صحيحين
public int add(int a, int b) {
return a + b;
}
// دالة لإضافة ثلاثة أعداد صحيحة
public int add(int a, int b, int c) {
return a + b + c;
}
// دالة لإضافة عددين عشريين
public double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
MathOperations math = new MathOperations();
System.out.println("مجموع عددين صحيحين: " + math.add(5, 10)); // الناتج: 15
System.out.println("مجموع ثلاثة أعداد صحيحة: " + math.add(5, 10, 15)); // الناتج: 30
System.out.println("مجموع عددين عشريين: " + math.add(5.5, 10.5)); // الناتج: 16.0
}
}في المثال أعلاه:
- تم تعريف ثلاث دوال add:
- الدالة الأولى تأخذ عددين صحيحين (int).
- الدالة الثانية تأخذ ثلاثة أعداد صحيحة (int).
- الدالة الثالثة تأخذ عددين عشريين (double).
عند استدعاء دالة add، يحدد المترجم أي دالة سيتم استدعاؤها بناءً على نوع وعدد المعاملات التي يتم تمريرها.
فوائد تعدد التحميل
- تسهيل قراءة الكود: حيث يمكن استخدام نفس الاسم للدوال المتشابهة في الوظيفة ولكن مع اختلاف المدخلات.
- إعادة الاستخدام: يسمح بتعريف طرق متعددة لاستخدام نفس الاسم بطريقة تسهل على المطور إعادة استخدام الكود في أماكن مختلفة.
##مثال على تعدد تحميل البنائين (Constructors)
يمكن أيضًا استخدام تعدد التحميل مع البنائين،
public class Person {
String name;
int age;
// البناء الافتراضي
public Person() {
this.name = "غير معروف";
this.age = 0;
}
// البناء بمعامل واحد (الاسم)
public Person(String name) {
this.name = name;
this.age = 0;
}
// البناء بمعاملين (الاسم والعمر)
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void display() {
System.out.println("الاسم: " + name + ", العمر: " + age);
}
public static void main(String[] args) {
Person person1 = new Person(); // استدعاء البناء الافتراضي
Person person2 = new Person("علي"); // استدعاء البناء بمعامل واحد
Person person3 = new Person("مريم", 25); // استدعاء البناء بمعاملين
person1.display(); // الاسم: غير معروف، العمر: 0
person2.display(); // الاسم: علي، العمر: 0
person3.display(); // الاسم: مريم، العمر: 25
}
}في هذا المثال:
- تم تعريف ثلاثة بنائين لفئة Person:
- البناء الأول بدون معاملات (الافتراضي)، ويقوم بتعيين القيم الافتراضية للاسم والعمر.
- البناء الثاني يأخذ معاملًا واحدًا (الاسم)، ويضبط العمر كـ 0 افتراضيًا.
- البناء الثالث يأخذ معاملين (الاسم والعمر) ويضبطهما.
بهذه الطريقة، يمكن إنشاء كائنات من Person بطرق متعددة بناءً على المعلومات المتوفرة.
إمثلة إضافية
1-دالة لحساب المساحة بأشكال متعددة
public class AreaCalculator {
// دالة لحساب مساحة المستطيل (الطول × العرض)
public int calculateArea(int length, int width) {
return length * width;
}
// دالة لحساب مساحة المربع (الضلع × الضلع)
public int calculateArea(int side) {
return side * side;
}
// دالة لحساب مساحة الدائرة (π × نصف القطر²)
public double calculateArea(double radius) {
return Math.PI * radius * radius;
}
public static void main(String[] args) {
AreaCalculator calculator = new AreaCalculator();
System.out.println("مساحة المستطيل: " + calculator.calculateArea(10, 5)); // الناتج: 50
System.out.println("مساحة المربع: " + calculator.calculateArea(7)); // الناتج: 49
System.out.println("مساحة الدائرة: " + calculator.calculateArea(3.5)); // الناتج: 38.48451000647496
}
}هنا لدينا ثلاث دوال بنفس الاسم calculateArea:
- الدالة الأولى تحسب مساحة المستطيل باستخدام الطول والعرض.
- الدالة الثانية تحسب مساحة المربع باستخدام طول الضلع.
- الدالة الثالثة تحسب مساحة الدائرة باستخدام نصف القطر، مع الأخذ في الاعتبار أن قيمة نصف القطر من النوع
double، مما يجعلها مختلفة عن الدوال الأخرى..
.
2- دالة لحساب مجموع أعداد صحيحة ومصفوفات
public class SumCalculator {
// دالة لحساب مجموع عددين صحيحين
public int sum(int a, int b) {
return a + b;
}
// دالة لحساب مجموع ثلاثة أعداد صحيحة
public int sum(int a, int b, int c) {
return a + b + c;
}
// دالة لحساب مجموع العناصر في مصفوفة
public int sum(int[] numbers) {
int total = 0;
for (int num : numbers) {
total += num;
}
return total;
}
public static void main(String[] args) {
SumCalculator calculator = new SumCalculator();
System.out.println("مجموع عددين: " + calculator.sum(10, 20)); // الناتج: 30
System.out.println("مجموع ثلاثة أعداد: " + calculator.sum(10, 20, 30)); // الناتج: 60
System.out.println("مجموع مصفوفة: " + calculator.sum(new int[]{1, 2, 3, 4, 5})); // الناتج: 15
}
}هنا لدينا ثلاث دوال
sum:- الدالة الأولى تأخذ عددين صحيحين.
- الدالة الثانية تأخذ ثلاثة أعداد صحيحة.
- الدالة الثالثة تأخذ مصفوفة من الأعداد الصحيحة وتحسب مجموع عناصرها.
مثال اخر
3- دالة للعثور على أكبر قيمة بين رقمين أو ثلاثة أرقام
.
public class MaxFinder {
// دالة لإيجاد القيمة الكبرى بين عددين صحيحين
public int max(int a, int b) {
return (a > b) ? a : b;
}
// دالة لإيجاد القيمة الكبرى بين ثلاثة أعداد صحيحة
public int max(int a, int b, int c) {
return max(max(a, b), c);
}
// دالة لإيجاد القيمة الكبرى بين عددين عشريين
public double max(double a, double b) {
return (a > b) ? a : b;
}
public static void main(String[] args) {
MaxFinder finder = new MaxFinder();
System.out.println("القيمة الكبرى بين 5 و 10: " + finder.max(5, 10)); // الناتج: 10
System.out.println("القيمة الكبرى بين 5 و 10 و 15: " + finder.max(5, 10, 15)); // الناتج: 15
System.out.println("القيمة الكبرى بين 7.5 و 2.3: " + finder.max(7.5, 2.3)); // الناتج: 7.5
}
}
هنا لدينا ثلاث دوال max:
- الدالة الأولى تقارن بين عددين صحيحين.
- الدالة الثانية تقارن بين ثلاثة أعداد صحيحة باستخدام الدالة الأولى كجزء من تنفيذها.
- الدالة الثالثة تقارن بين عددين عشريين.
ما هو Constructor؟.
الـ Constructor هو دالة خاصة تُستخدم لتهيئة (initialize) الكائنات (objects) عند إنشائها. يتم استدعاؤه عند إنشاء كائن جديد باستخدام الكلمة المفتاحية new. وظيفة الـ Constructor الأساسية هي تعيين القيم الأولية لأعضاء البيانات (attributes) في الكائن.
خصائص Constructor:
نفس اسم الصف (Class): يجب أن يكون اسم الـ Constructor هو نفس اسم الصف الذي يتم تعريفه بداخله.
لا يوجد نوع إرجاع (Return Type): لا يحتوي الـ Constructor على نوع إرجاع حتى void.
يُستدعى مرة واحدة فقط عند إنشاء الكائن.
أنواع Constructors:
Constructor الافتراضي (Default Constructor):
هو Constructor بدون معلمات، يتم إنشاؤه تلقائيًا إذا لم يتم تعريف أي Constructor في الصف. يعطي قيمًا افتراضية للبيانات مثل 0 أو null
public class Person {
private String name;
private int age;
// Constructor الافتراضي
public Person() {
name = "Unknown";
age = 0;
}
public void display() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person();
// استدعاء Constructor الافتراضي
person.display();// Output:
Name: Unknown, Age: 0
}
}
2-Constructor المُعَدل (Parameterized Constructor):
هو Constructor يحتوي على معلمات، يُستخدم لتعيين القيم للأعضاء بناءً على المعطيات المقدمة عند إنشاء الكائن.
مثال:
public class Car {
private String model;
private int year;
// Constructor مع معلمات
public Car(String model, int year) {
this.model = model;
this.year = year;
}
public void display() {
System.out.println("Model: " + model + ", Year: " + year);
}
}
public class Main {
public static void main(String[] args) {
Car car = new Car("Toyota", 2021); // استدعاء Constructor مع معلمات
car.display();
// Output: Model: Toyota, Year: 2021
}
}3-Constructor
النسخ (Copy Constructor):
يُستخدم لنسخ قيم كائن إلى كائن آخر من نفس النوع.
مثال:
public class Person {
private String name;
private int age;
// Constructor مع معلمات
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Constructor النسخ
public Person(Person other) {
this.name = other.name;
this.age = other.age;
}
public void display() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
public class Main {
public static void main(String[] args) {
Person original = new Person("Ali", 30);
Person copy = new Person(original); // استدعاء Constructor النسخ
copy.display(); // Output: Name: Ali, Age: 30
}
}Constructor Chaining
يتم استدعاء عدة Constructors من نفس الصف أو من صف الأب (parent class) باستخدام this() لاستدعاء Constructors داخل نفس الصف، أو super() لاستدعاء Constructors في الصف الأب.
مثال :
public class Employee {
// Constructor الافتراضي
Employee() {
this(2023); // استدعاء Constructor مع معلمة واحدة
System.out.println("In Default Constructor Of Employee Class");
}
// Constructor مع معلمة واحدة
Employee(int id) {
this("Ankush"); // استدعاء Constructor مع معلمة نصية
System.out.println("In Parameterized Constructor with Integer Parameter: " + id);
}
// Constructor مع معلمة نصية
Employee(String name) {
System.out.println("In Parameterized Constructor With String Parameter: " + name);
}
public static void main(String[] args) {
Employee emp = new Employee();
}
}الإخراج:
mathematica
In Parameterized Constructor With String Parameter: Ankushيُمكن تحميل Constructors بنفس اسم الصف مع عدد مختلف أو نوع مختلف من المعلمات.
In Parameterized Constructor with Integer Parameter: 2023
In Default Constructor Of Employee Class
Constructor Overloading
مثال:
public class Student {
private String name;
private int age;
// Constructor الافتراضي
public Student() {
name = "Unknown";
age = 0;
}
// Constructor مع معلمة واحدة
public Student(String name) {
this.name = name;
age = 0;
}
// Constructor مع معلمتين
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void display() {
System.out.println("Name: " + name + ", Age: " + age);
}
}اعتقد كافيي بس جان ضروري انزلهن لان هذا ماده الامتحان مال باجر
اذا سمحت فرصه الي بعشوي انزل امثله اكثر
هذا فقط امثله الملزمه
💚🌿
اذا غلطت بشي نبهوني لان تركيزي حاليا بالسالب
💋2❤1🔥1🥰1🌚1
سؤال المختبر القادم للهياكل علوم صباحي /
//
اكتب برنامج يقرء مصفوفه احاديه ومصفوفة ثنائيه ومصفوفه ثلاثيه ومصفوفه مثلثه تكون 4*4
وتكون بيها عمليات خاصه للجزء العلوي عمليات خاصه للجزء السفلي
ثم يطلب من المستخدم اختيار نوع المصفوفه ووحجم المصفوفه وعناصر المجموعه ثم طباعتها واجراء 5 عمليات عليها ويبقى يطلب من المستخدم اجراء عمليات لحين طلب المستخدم الخروج من العمليات
🤯5🔥1