البرمجة

فرز أعمدة مصفوفة 2D باستخدام Java

في البداية، يظهر أن لديك كودًا يستخدم لفئة ColumnSorting في لغة البرمجة Java، حيث تقوم بقراءة مصفوفة ثنائية الأبعاد (2D array) من المستخدم بحجم 3×3 ومن ثم تعرضها باستخدام الدالة displayArray. ومن ثم، تحاول تنفيذ الفرز لكل عمود على حدة باستخدام الدالة sortColumns.

لكن يبدو أن هناك بعض الأخطاء في الكود. أولاً، يوجد خطأ في توازن القوسين في الجزء الخاص بالإدخال حيث أنك استخدمت “<" و ">” بدلاً من “<" و ">“. ثانيًا، يجب عليك إضافة بعض التغييرات لجعل الكود يعمل بشكل صحيح.

فيما يلي تعديلات على الكود:

java
package newproject; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class ColumnSorting { public static void main(String[] args) { double a[][] = new double[3][3]; Scanner input = new Scanner(System.in); for (int row = 0; row < 3; row++) { for (int col = 0; col < 3; col++) { System.out.println("Enter value: "); a[row][col] = input.nextDouble(); } } displayArray(a); // Sort columns sortColumns(a); // Display the sorted array System.out.println("Sorted Array:"); displayArray(a); } public static void displayArray(double x[][]) { for (int row = 0; row < x.length; row++) { for (int column = 0; column < x[row].length; column++) { System.out.print(x[row][column] + "\t"); } System.out.println(); } } public static void sortColumns(double[][] m) { Arrays.sort(m, new Comparator<double[]>() { public int compare(double[] a, double[] b) { return Double.compare(a[0], b[0]); } }); } }

قمت بإضافة استدعاء لدالة sortColumns في main بعد عرض المصفوفة الأصلية. يتم الآن فرز العمود الأول فقط، ويمكنك تعديل الكود حسب احتياجاتك لتنفيذ الفرز لكل الأعمدة.

المزيد من المعلومات

بالطبع، سنقوم بتوسيع المعلومات حول الكود وتحسين الشرح.

الكود الحالي يقوم بقراءة مصفوفة ثنائية الأبعاد من المستخدم باستخدام فئة Scanner في Java. يتيح للمستخدم إدخال قيم لكل عنصر في المصفوفة، ومن ثم يقوم البرنامج بعرض المصفوفة الأصلية باستخدام الدالة displayArray.

بعد ذلك، تقوم الدالة sortColumns بفرز الأعمدة في المصفوفة باستخدام Arrays.sort ومقارنة العناصر الأولى في كل عمود. ومع ذلك، يجب عليك مراعاة أن هذا الفرز يتم فقط للعمود الأول. إذا أردت فرز لكل الأعمدة، فيجب عليك تعديل الدالة لتأخذ بعين الاعتبار العمود الذي ترغب في فرزه.

تحتاج إلى تغيير مقارنة العناصر في الدالة compare لتأخذ بعين الاعتبار العمود المحدد، على سبيل المثال:

java
public static void sortColumns(double[][] m, int columnIndex) { Arrays.sort(m, new Comparator<double[]>() { public int compare(double[] a, double[] b) { return Double.compare(a[columnIndex], b[columnIndex]); } }); }

وبعد ذلك يمكنك استدعاء هذه الدالة لفرز أي عمود ترغب فيه.

أتمنى أن هذه المعلومات تكون مفيدة، وإذا كنت بحاجة إلى مزيد من التوضيح أو تعديلات، فلا تتردد في طرح المزيد من الأسئلة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر