• 0

كيف أرتب مصفوفة بلغة Java على شكل 3-3 بدلالة الأعمدة؟

في مصفوفة على لغة Java يقوم المستخدم بإدخال القيم على شكل 3 قيم كل مرة، بحيث تكون المصفوفة على الشكل:

[15, 87, 37,
55, 5, 22, 
30, 12, 40]

وأريد ترتيب عناصر المصفوفة بدلالة الأعمدة 3-3، لتصبح على الشكل:

[15, 5, 22,
30, 12, 37,
55, 87, 40]

وهذه محاولتي المتواضعة:

public static double[][] sortColumns(double[][] array)
{
double[][] sorted = array;
  for(int x = 0; x < 3; x++)
  {
     Arrays.sort(sorted[x]);
  }  
  return sorted;
} 

لكن دون جدوى، فما الحل؟

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

بما أن المستخدم يُدخل البيانات على شكل 3-3، لنجعل عملية التخزين تتم على أساس الأعمدة وليس الصفوف، أي على هذا الشكل :

Scanner scan = new Scanner(System.in);
int[] col1 = new int[3];
int[] col2 = new int[3];
int[] col3 = new int[3];
for (int i=0; i<3; i++){ //الترتيب بالإعتماد على الأعمدة لا الصفوف
    col1[i] = scan.nextInt();
    col2[i] = scan.nextInt();
    col3[i] = scan.nextInt();
}
int[][] matrix = new int[3][3];
matrix[0] = col1;
matrix[1] = col2;
matrix[2] = col3;
for (int i=0; i<3; i++){  //  columnsترتيب الأعمدة 
    Arrays.sort(matrix[i]);
}
//طباعة المحتوى بالإعتماد على الصفوف 
for (int i=0; i<3; i++){
    for (int j=0; j<3; j++){
        System.out.print(matrix[j][i]+" ");
    }
    System.out.println();
}

بعد عملية الفرز اعتمادا على الأعمدة، يمكن تغيير المصفوفة إلى التخزين حسب الصفوف.

كما يمكن للمستخدم تعيين حجم المصفوفة، أي بطريقة أخرى يكون حجم المصفوفة ديناميكي، ومُتَحكّم به من طرف المستخدم، بهذا الشكل:

Scanner scan = new Scanner(System.in);
int N = 3;  //حجم المصفوف، والذي يتحكم فيه المستخدم

int[][] matrix = new int[N][N];
for (int n=0; n<N; n++){  //بداية الأعمدة
    for (int column=0; column<N; column++){
        matrix[column][n] = scan.nextInt();  //Store based on column
    }
}
for (int i=0; i<N; i++){  //ترتيب الأعمدة
    Arrays.sort(matrix[i]);
}

for (int i=0; i<N; i++){
    for (int j=0; j<N; j++){
        System.out.print(matrix[j][i]+" ");
    }
    System.out.println();
}

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن