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

السؤال

نشر

في مصفوفة على لغة 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;
} 

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

 

Recommended Posts

  • 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();
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...