الوقت/التاريخ الآن هو الجمعة أبريل 19, 2024 4:30 pm

1 نتيجة بحث عن RandomNum

حل اسئلة وتمارين بلغة جافا الجزء الثالث

الاخت و الاستاذة الكريمة @زهراء اشكرك والله على مجهودك و نشاطك بالمنتدى فاسمحى لى ان يتم وضعك فى رتبة العضو الشرفى بالمنتدى طالما انك ترفضي الانضمام للادارة.........الاخ الكريم @abushuber اهلا بيك و معذرة فلم استطيع الدخول بالامس

السؤال الثالث : يطلب انشاء برنامج يقوم بتخصيص نقطة ثنائية الأبعاد مع إحداثيات x و y وحساب المسافة من هذه النقطة إلى نقطة أخرى عند الإحداثيات المعينة (x، y)

قبل ان نبدء برمجيا تعال نفهم السؤال رياضيا

يعتبر قانون البعد بين نقطتين أحد قوانين الرياضيات لاحتساب المسافة بين أيّ نقطتين على المستوى الديكارتي، ويُمكن حساب المسافة بين النقطة (س1, ص1) والنقطة (س2, ص2) من خلال الصيغة التالية: المسافة ^2 = (س2 – س1)2 + (ص2 – ص1)2، 

وبالتالي فإنّ المسافة تُساوي الجذر التربيعي ل((س2 – س1)2 + (ص2 – ص1))2


الوسم randomnum على المنتدى منتدى مصر التقني Distance-between-points
الوسم randomnum على المنتدى منتدى مصر التقني Java-program-distance-between-two-points
source


ويتم حسابها برمجيا باستخدام المعادلة التالية 

الكود:

dis=Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))





- إنشاء فئة باسم Point وانشاء طريقة بها لاحساب المسافة بين نقطتين على النحو التالى مع شرح كل سطر بالكود :

الكود:


 class Point {
    
   //الاعلان عن المتغيرات التى تمثل الاحداثيات س و ص  
   private int x , y;
  
  
   //مشيد الفئة  من إحداثياتها.
   public Point(int x, int y)
   {
     this.x = x;
     this.y = y;
   }

    
   // عند تحديدها يدويا(x,y)حساب المسافة من هذه النقطة إلى النقطة المحددة في
   public double distance(int x, int y) {
      int xDiff = this.x - x;
      int yDiff = this.y - y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
   // (another)حساب المسافة من هذه النقطة إلى النقطة المحددة في الكائن .
   public double distance(Point another) {
      int xDiff = this.x - another.x;
      int yDiff = this.y - another.y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
  
}
  



و لتنفيذة الفئة اعلاه فى الدالة الرئيسية على النحو التالى :


الكود:

public class Test {


    public static void main(String[] args) {

            Point p1 = new Point(1, 2); 

      System.out.printf("Distance is: %.2f%n", p1.distance(10, 11));

 
    }




 

المخرجات :
Distance is: 12.73


لكن السؤال لم يكتفى بذلك بل طلب فئة باسم #Circle وإنشاء دائرتين و حساب المسافة بينهما....أذن سنحاول فعل ذلك 

_ حتى استطيع انشاء دائرة لابد من توافر المعلومات التالية :

1_مركز الدائرة على المستوي الاحداثى (x,y) لذلك سوف نستخدم الفئة اعلاه #point التى تقوم بتعين نقطة على المستوى الاحداثى (x ,y)

2_ نصف قطر الدائرة #Radius لذلك سيتم الاعلان عنه كمتغير

و ذلك على النحو التالى :

_ إنشاء الفئة باسم Circle
الكود:

class Circle
{
   // تعريف متغيرين واحد لتمثيل مركز الدائرة و الاخر لنصف القطر
   private Point center;
   private int radius;

  
  
  //منشىء الفئة لانشاء دائرة مع نقطة مركزية معينة ونصف قطرها.
  Circle(Point center, int radius) {
   this.center = center;
   this.radius = radius;
}
 

// طريقة لحساب المسافة بين مزكر الدائرة مع مركز دائرة اخرى
public double distance(Circle another) {
   return center.distance(another.center);
}
}



و يتم استخدام الفئتين السابقتين على النحو التالى :
الكود:

public class Test {
 
    
    public static void main(String[] args) {
        // تعين مركز الدائرة الاولى بالقيم التى وردت فى السؤال
        Point p1 = new Point(2, 4);
       // تعين مركز الدائرة الثانية بالقيم بقيم افتراضية غير التى وردت فى السؤال حتى لا تتقاطع الدائرتين
        Point p2 = new Point(5, 7);
        
         // إنشاء الدائرة الاولى باستخدام نقطة المركز الاولى و نصف قطر  اثنين
        Circle c1 = new Circle(p1, 2);
       //إنشاء الدائرة الثانية باستخدام نقطة المركز الثانية و نصف قطر  اثنين
        Circle c2 = new Circle(p2, 2);
        
      //طباعة المسافة بين الدائرتين
       System.out.printf("The distance between the two circles is: %.2f%n", c1.distance(c2));
      
    }
    

    
}




و المثال بالكامل على النحو التالى :

الكود:

 class Point {
    
   //الاعلان عن المتغيرات التى تمثل الاحداثيات س و ص  
   private int x , y;
  
  
   //مشيد الفئة  من إحداثياتها.
   public Point(int x, int y)
   {
     this.x = x;
     this.y = y;
   }

    
   // عند تحديدها يدويا(x,y)حساب المسافة من هذه النقطة إلى النقطة المحددة في
   public double distance(int x, int y) {
      int xDiff = this.x - x;
      int yDiff = this.y - y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
   // (another)حساب المسافة من هذه النقطة إلى النقطة المحددة في الكائن .
   public double distance(Point another) {
      int xDiff = this.x - another.x;
      int yDiff = this.y - another.y;
      return Math.sqrt(xDiff*xDiff + yDiff*yDiff);
   }
  
}
  

class Circle
{
   // تعريف متغيرين واحد لتمثيل مركز الدائرة و الاخر لنصف القطر
   private Point center;
   private int radius;

  
  
  //منشىء الفئة لانشاء دائرة مع نقطة مركزية معينة ونصف قطرها.
  Circle(Point center, int radius) {
   this.center = center;
   this.radius = radius;
}
 

// طريقة لحساب المسافة بين مزكر الدائرة مع مركز دائرة اخرى
public double distance(Circle another) {
   return center.distance(another.center);
}
}

public class Test {
 
    
    public static void main(String[] args) {
        // تعين مركز الدائرة الاولى بالقيم التى وردت فى السؤال
        Point p1 = new Point(2, 4);
       // تعين مركز الدائرة الثانية بالقيم بقيم افتراضية غير التى وردت فى السؤال حتى لا تتقاطع الدائرتين
        Point p2 = new Point(5, 7);
        
         // إنشاء الدائرة الاولى باستخدام نقطة المركز الاولى و نصف قطر  اثنين
        Circle c1 = new Circle(p1, 2);
       //إنشاء الدائرة الثانية باستخدام نقطة المركز الثانية و نصف قطر  اثنين
        Circle c2 = new Circle(p2, 2);
        
      //طباعة المسافة بين الدائرتين
       System.out.printf("The distance between the two circles is: %.2f%n", c1.distance(c2));
      
    }
    

    
}




المخرجات :

The distance between the two circles is: 4.24



السؤال الرابع : يطلب انشاء عدد 2 طريقة لطباعة ارقام عشوائية ضمن نطاق الرقم n ثم ايجاد اكبر قيمة بينهما ...اذن سنفعل الاتى :

1_ طريقة باسم #RandomNum لتوليد ارقام عشوائية فى نطاق الرقم n
2_طريقة اخرى باسم #Stornumbers  لتخزين الارقام العشوائية التى تم توليدها فى مصفوفة
3_ طباعة قيم المصفوفة
4_ ايجاد اكبر رقم فى المصفوفة

الحل :

توفر لغة #Java العديد من الطرق لإنشاء أرقام عشوائية ضمن نطاق معين لذلك سوف نستخدم طريقة واحدة وهى باستخدام الطريقة #nextInt التابعة للفئة #Random لتي يمكن أن تولد أرقام عشوائية بين 0 وحدود النطاق المحدد n ....وسيكون الرقم العشوائي الذي يتم إنشاؤه بين 0  وقيمة الحد الأعلى n.
حيث تأخذ هذه الطريقة عددًا صحيحًا كوسيطة. تمثل هذه القيمة الصحيحة الحد الأعلى للرقم العشوائي الذي سيتم إنشاؤه بواسطة هذه الطريقة.....و بالتالى لإنشاء رقم عشوائي بين 1 و 50 ، نقوم بإنشاء كائن من فئة #java#.util#.Random واستدعاء طريقة #nextInt الخاصة به مع تمرير الرقم 50 كوسيطة. سيؤدي هذا إلى إنشاء رقم بين 0 و 49 لذلك سنقوم بإضافة 1 إلى النتيجة مما سيجعل نطاق القيمة التي تم إنشاؤها من 1 إلى 50

تعال نترجم ذلك برمجيا

1_إنشاء طريقة لتوليد الارقام العشوائية فى نطاق الرقم n

الكود:
static int RandomNum1(int n) {
        
 Random rand = new Random();// انشاء كائن جديد
        int randomInt;// انشاء متغير لتخزين الرقم العشوائى
        randomInt = rand.nextInt(n) + 1;// استخدام الدالة nextint لتوليد رقم عشوانى فى نطاق الرقم n +1
        
        
     return randomInt;// ارجاع الارقام العشوائية
        
  }


2_إنشاء مصفوفة و تخزين الارقام العشوائية بها ....لم يحدد السؤال عدد الارقام العشوائية المطلوبة لذلك سنفترض انها 5 ارقام لذلك سوف ننشىء مصفوفة بحجم 5 ارقام
الكود:
static int[] Stornumbers(){
        
        int[] numbers = new int[5]; // تعين حجم المصفوفة
        for(int i = 0; i < numbers.length; i++) {// حلقة تكرارية للحصول على خمسة ارقام تم توليدها عشوائية
        numbers[i] = (int)(RandomNum1(50));// استخدام الطريقة RandomNum1 لتوليد الارقام العشوائية
    }
            // ارجاع قيمة المصفوفة
          return numbers;
    }


3_ استخدام و تنفيذ الطريقة Stornumbers فى الدالة الرئيسة

الكود:

    public static void main(String[] args) {
        
               int[] printNo = Stornumbers();//انشاء مصفوفة لطباعة محتويات الطريقة
               System.out.println("Random number generated is : " + Arrays.toString(printNo));
                
                 int max = Arrays.stream(printNo).max().getAsInt();// الحصول على اكبر قيمة فى المصوفة لطباعتها
                System.out.println("max number is : " + max);
                      
    }


و المثال بالكامل على النحو التالى :

الكود:

import java.util.Arrays;
import java.util.Random;

public class test {

    public static void main(String[] args) {
        
               int[] printNo = Stornumbers();//انشاء مصفوفة لطباعة محتويات الطريقة
               System.out.println("Random number generated is : " + Arrays.toString(printNo));
                
                 int max = Arrays.stream(printNo).max().getAsInt();// الحصول على اكبر قيمة فى المصوفة لطباعتها
                System.out.println("max number is : " + max);
                      
    }
    static int RandomNum1(int n) {
        
 Random rand = new Random();// انشاء كائن جديد
        int randomInt;// انشاء متغير لتخزين الرقم العشوائى
        randomInt = rand.nextInt(n) + 1;// استخدام الدالة nextint لتوليد رقم عشوانى فى نطاق الرقم n +1
        
        
     return randomInt;// ارجاع الارقام العشوائية
        
  }
    
     static int[] Stornumbers(){
        
        int[] numbers = new int[5]; // تعين حجم المصفوفة
        for(int i = 0; i < numbers.length; i++) {// حلقة تكرارية للحصول على خمسة ارقام تم توليدها عشوائية
        numbers[i] = (int)(RandomNum1(50));// استخدام الطريقة RandomNum1 لتوليد الارقام العشوائية
    }
    
     // ارجاع قيمة المصفوفة
          return numbers;
    }
    
}


المخرجات :
Random number generated is : [19, 37, 50, 26, 25]
max number is : 50
من طرف أحمد مناع
في الخميس يناير 31, 2019 1:15 pm
 
ابحث في: نقاش و أستفسارات الاعضاء
موضوع: حل اسئلة وتمارين بلغة جافا الجزء الثالث
المساهمات: 28
مشاهدة: 15467

الرجوع الى أعلى الصفحة

انتقل الى: