الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Programming applications- مساعدة

بدأه Ghada Othman في 7 أبريل 2013 · 13 رد · 1,138 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم 

 

كيفكم شباب و صبايا

 

بليز عندي سؤالين في الجافا

 

و محتاجة مساعدتكم في الحل:

 

 

1. Sphere

 

Design and implement a class called Sphere that contains instance data that represents the sphere's diameter. Define the Sphere constructor to accept and initialize the diameter, and include getter and setter methods for the diameter. Include methods that calculate and return the volume and surface area of the sphere  (Volume= 3/4 π r3 , area = 4 π r2 ). Include a toString method that returns a one-line

description of the sphere. Create a driver class called MultiSphere, whose main method instantiates and updates several (at least 5) Sphere objects.

 

 

2- Leap Year

 

Design and implement an application that reads an integer value representing a year from the user. The purpose of the program is to determine if the year is a leap year(and therefore has 29 days in February) in the Gregorian calendar. A year will be a leap year if it is divisible by 4 but not by 100. If a year is divisible by 4 and by 100, it is not a leap year unless it is also divisible by 400. For example, the year 2003 is not a leap year, but 2004 is. The year 1900 is not a leap year because it is divisible by 100, but the year 2000 is a leap year because even though it is divisible by 100, it is also divisible by 400. Produce and error message for any input value less than 1582 (the year the Gregorian calendar was adopted).

 

 

3. Simple Calculator

 

Write a program that will evaluate simple expressions such as 17 + 3 and 3.14159 * 4.7. The expressions are to be typed in by the user. The input always consist of a number, followed by an operator, followed by another number. The operators that are allowed are +, -, *, and /. Your program should read an expression, print its value, read another expression, print its value, and so on. The program should end when the user enters 0 as the first number on the line.

 

#2
اقتباس

و محتاجة مساعدتكم في الحل:

 

اذا ابدئى بالحل ونساعدك ان شاء الله


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

اولاً من بديهيات وشروط المنتدى انه للمساعدة والمشاركة وليس لحل الواجبات فاين محاولاتك؟؟

ثانياً إن أغلب (إن لم يكن كل) أعضاء المنتدى يجيدون اللغة الانكليزية لكن يحظر  ويمنع طرح المواضيع كاملة بغير اللغة العربية

 

لذلك كشرط أساسي عرض محاولاتك بالاضافة الى طرح السؤال مجددا باللغة العربية

تم تعديل هذه المشاركة بواسطة vector_ever في 8 أبريل 2013 في 21:39

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#4

السلام عليكم 

 

اولا : طبعا حابة انبه على معلومة بسيطه صعب تترجم سؤال في لغة برمجة بالعربية 

لأنو البرمجة عموما محتاجة لغة انجليزية بحته ، هالشي نعتبره من مهارات المبرمج الهامه . 

 

ثانيا : لا اخفيكم سرا انا حاولت و صدقوني لو ما حاولت كان ما عرضت عليكم السؤال 

 

و رح اعرض محاولتي بس رجاءا لا تضحكوا .

لأني بدأت صح بس ظهرت عندي اخطاء و ما قدرت اكمل.

 

:(

 

 

 

 

 

package sphere;
public class Sphere{
private  double area;
  private double volume;
  public double r;
    public sphere () {
               volume=0.0;
                area=0.0;
                r=0.0;
    }
    public void volume (double volume){
        final double PI=3.14;
volume = 3/4*( PI)*Math.pow( r , 3);}
    public void area(double area){
        final double PI=3.14;
      
        area = 4*(PI)*Math.pow(r,2);
    }
       
        public double getVolume( ) {
        return volume ;
    }
    public double getArea( ) {
        return area ;
    }
      public void setVolume   (double vol) {
         volume= vol;
    }
    public void setArea(double ar) {
        area = ar;
    }
}

 

وفتحت الكلاس الجديد : 

 

 

 

 

 

package sphere;
public class MultiSphere {
public static void main (String []args) {
      Sphere sph;
     double r=5.4;
       sph = new Sphere( );   
       sph.setArea(r);
       sph.setVolume(r);
       sph.area(18.0);
       sph.volume(14.0);
       System.out.println("the area" + sph.getArea());
      System.out.println("the volume"+ sph.getVolume());
}
}

 

 

 

 

ترجمة السؤال الأول 

 

1.المجال او اسفير الكرة

صمم و نفذ كلاس يسمى سفير الذي يحتوي على بيانات المثيل التي تمثل قطر المجال (المجال او اسفير الكرة) .

عرف دالة الانشائية الكونستراكتر(المجال او اسفيرالكرة) لقبول و تهيئة القطر ، ويشمل الميثود

get , set

للقطر . و تشمل الميثود التي تقوم بحساب قيمة الحجم و المساحة السطحية للكرة:

Volume= 3/4 π r3

 area = 4 π r2

تشمل على String  method

لإرجاع سطر واحد يصف المجال او اسفير الكرة .

انشأ كلاس يسمى: MultiSphere     يحتوي على الميثود الرئيسية

وعدة من التحديثات لكائنات المجال او اسفير الكرة- على الأقل 5  - . 

تم تعديل هذه المشاركة بواسطة Ghada Othman في 8 أبريل 2013 في 23:54

#5

حسناً لدي في البداية بعض الملاحظات قبل أن اقدم لكي المساعدة

 

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

أم قولك أن البرمجة محتاجة لغة انكليزية بحتة فهذا قول لا أساس له من الصحة وانا اتكلم عن دراية ومعرفة بهذا وقولك جاوز الصواب ولنا أسوة في أمم الأرض كالألمان والصينين واليابانيين الذين لا يستعملون سوى لغاتهم القومية

على كل حال هذا ليس مجال الحديث صراحة طرحك للسؤال باللغة العربية كان غير واضح البتة ولدى قرائتي للسؤال باللغة الانكليزية استرعى انتباهي ان السؤال يصر على استخدام الـ diameter أي القطر وليس الـ Radius  نصف القطر مع ان كل الحل مبني فقط على نصف القطر ولم أفهم سبب الاصرار على طلب التعامل مع القطر ولذلك في حلي المقبل لن أستخدم سوى نصف القطر متجاهلاً القطر لان الحل المنطقي مبني على نصف القطر فقط

تم تعديل هذه المشاركة بواسطة vector_ever في 9 أبريل 2013 في 04:41

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#6

أيضا ملاحظة سريعة أختي الكريمة نحن هنا لنفيد ونستفيد ونتعلم من بعضنا البعض وليس لنضحك على بعض وانتي مخطئة حين ظننتي أن أحد من الاخوة سوف يضحك على محاولاتك

الكود الذي كتبتيه بعيد كل البعد عن الحل ومليئ بالأخطاء وساحاول ان أشرح بعض الأخطاء في عجالة

أولا لا حاجة لتحديد قيم ابتدائية لكل من الحجم والمساحة الحجم والمساحة يتم حسابهم بواسطة نصف القطر

 

ثانيا اغفلتي كتابة باني constructor يضم بداخله قيم نصف القطر (والا كيف واين سنحدد قيم نصف القطر الخمسة المطلوبة)

ثالثاً اغفلتي كتابة المعرفات لنصف القطر واقصد الـ setters and getters لنصف القطر مع انه في هذه المسألة ليس ضروريا لكن التعود على ذلك مهم

 

رابعاً نحن نريد حساب قيم الحجم والمساحة للكرة يعني لا يجوز ان تكتبي ميثود بهذا الشكل setArea الواضح انكِ استعملتي الـ setters and getters للمساحة والحجم وهذا خطأ كبير فلا حاجة هنا لتحديد اي setters and getters لهما بل يتم حسابهما عن طريق الـ setters and getters الخاصة بنصف القطر

 

أخيرا في الكلاس الثاني خطأ كله

المهم في الحل هو المحاولة وهذا ما جعلني أكتب هذه الردود وأرغب بمساعدتك وقد كتبت هذا الرد لتوضيح بعض النقاط كي تستفيدي منها في المستقبل ان شاء الله

تم تعديل هذه المشاركة بواسطة vector_ever في 9 أبريل 2013 في 04:43

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#7

الحل هو كما يلي:

 

public class Sphere {

    private double radius;
    
    //constructor with specified radius
    public Sphere(double radius){
        this.radius = radius;
    }
    
    //return radius
    public double getRadius(){
        return radius;
    }
    
    //set a new radius
    public void setRadius(double radius){
        this.radius = radius;
    }
    
    //Area of the Sphere
    public double getArea(){
        return 4 * 3.14159 * getRadius() * getRadius();
    }
    
    //Volume of the Sphere
    public double getVolume(){
        return 0.75 * 3.14159 * getRadius() * getRadius() * getRadius();
    }
    
    public String toString(){
        return "The radius of the Sphere is " + getRadius();
    }
    
}

 

 

public class MultiSphere {        public static void main (String []args) {                Sphere [] mySphere = new Sphere[5];        mySphere[0] = new Sphere (5.0);        mySphere[1] = new Sphere (6.0);        mySphere[2] = new Sphere (8.0);        mySphere[3] = new Sphere (9.0);        mySphere[4] = new Sphere (10.0);                for (int i = 0; i < mySphere.length; i++ ){            System.out.println(mySphere);           System.out.println("the area is " + mySphere.getArea());           System.out.println("the volume is "+ mySphere.getVolume());           System.out.println("---------------------------------------");        }    }}

تم تعديل هذه المشاركة بواسطة vector_ever في 9 أبريل 2013 في 22:03

1

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#8

طبعا من غير ما اقول اكيد امبين عليي اني مبتدأه

 

و بجد مش سهل علييا من اول ما اتعلم الجافا اسوي برامج بهالطريقه 

 

و الله يسامح دكتور المادة على هيك اسئلة . 

 

 

vector_ever

 

يعطيك العافية و شكرا كتير الك 

 

بس في حاجات ما فهمتها او انها لسه ما مرت علي في المنهج 

 

يا ريت تجاوبني عليها عشان افهم الحل 

 

 

 

1.ايش معنى : ؟؟؟

;this.radius = radius

2. لما سويت قانون الvolume لو استخدمت Math.pow بيكون صح بدل get ثلاث مرات ؟؟؟

 

3. ليش استخدمت مصفوفه في الأخير و فرضت لها قيم ؟؟ و ليش استخدمت فور لوب ؟؟؟

تم تعديل هذه المشاركة بواسطة Ghada Othman في 9 أبريل 2013 في 20:17

#9

أهلا بك اختي الكريمة

لا ضير أن يكون الانسان مبتدئ فكلنا بدانا كمبتدئين

أما عن نوعية هذه الأسئلة ولومك أستاذ الجامعة فاقول ان الأسئلة عادية لكم واضح لي أن الاستاذ ربما لم يشرح سوى القليل لكم عن الجافا

حيث هناك أشياء وجوهرية لم تسمعي بها مثل this والآن لو انك درستي الـ setters and getters فان المعرف this لن يكون غريبا عنكي وهو دائما ما نستخدمه مع الـ set

وذلك لتحديد القيم

 

    private double radius;
    
    //constructor with specified radius
    public Sphere(double radius){
        this.radius = radius;
    }

حيث أخبره هنا أن الـ radius الموجودة في الميثود Sphere هي نفسها الـ radius المعرفة في السطر الاول

لو لم أستخدم الـ this عند اض لا يحدث توافق لكن يجب استخدامها طالما يحملان نفس التسمية أي radius

في مثالي هذا أستطيع عدم استخدام الـ this وقتها ستكون المعطيات كما يلي

 

    private double radius;
    
    //constructor with specified radius
    public Sphere(double newRadius){
        newRadius = radius;
    }

اعتقد الآن الفكرة أصبحت واضحة أليس كذلك

أما بالنسبة للجواب على السؤال الثاني نعم كان باستطاعتي استخدام الـ Math.pow لكنني لم أفعل
 وباستطاعتكِ أن تعدلي على الكود وتستخدميها

أما السؤال الأخير عن سبب قيامي باستخدام مصفوفة وحلقة Loop
السؤال كان يريد عرض 5 قيم على الأقل فكيف علي اذاً ان اقوم بعمل ذلك

لو كان يريد عرض قيمة وحيدة فقط لكنت عملت ما يلي
           Sphere  mySphere = new Sphere (5.0);
            System.out.println(mySphere);
           System.out.println("the area is " + mySphere.getArea());
           System.out.println("the volume is "+ mySphere.getVolume());
           System.out.println("---------------------------------------");

الآن هنا قمنا بعمل كائن واحد فقط وقمنا بعملية حساب المساحة والحجم له

ولكننا وبما اننا يجب علينا القيام بعمل 5 عمليات حساب للحجم والمساحة كل منها يأخذ نصف قطر مختلف عن الآخر فهذا يعني القيام بعمل 5 كائنات Objects من الكلاس Sphere

ولذلك ليس من المعقول أن أقوم بكتابة مقطع الكود أعلاه 5 مرات لأحصل على الجواب لذلك الحل الامثل هو استخدام المصفوفات

 

أما عن سبب استخدامي لحلقة Loop فهو كي أعرض نتائج كل عناصر المصفوفة الخمسة حيث أمرر المصفوفة على الـ Loop وهو يقوم بعرض كل واحدة فيهم كما في الحل

 

لو كنتي ما زلتي بحاجة لاستفسارات فلا تترددي

التوفيق

تم تعديل هذه المشاركة بواسطة vector_ever في 9 أبريل 2013 في 21:01

1

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#10

صح صح أخدنا كدا :

 

 

 

;newRadius = radius

و هذا هو ال Run للبرنامج :

 

http://www.0zz0.com'>550722229.jpg

 

بس سؤال :

 

ليش ال volume صفر في ال run ؟؟

 

و هل ممكن ندخل الـ radius من الــ user مثالا عن طريق JOptionPan أو Scanner ؟؟؟ خمس مرات !!

 

لو بينفع احكي لي و انا بجرب

#11

سبب ظهور نتيجة قيم الحجم بصفر هو بسبب القيم 3/4 لا يقبل كتابتها بهذه الصغية الظاهر في الكود ولذلك سأستخدم ناتج 3/4 وهو 0.75 وقد قمت بالتعديل عليه بالكود في الاعلى فيرجى تجربته

 

اما السؤال الآخر فنعم يستطيع المستخدم ادخال القيم بنفسه

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#12

مساء الخير 

 

رجعت بعد الامتحانات 

 

بالنسبة للسؤال التاني : Leap year

 

سؤال يبين السنة الكبيسة ( بالتالي رح يكون في 29 يوم في شهر فبراير ) في التقويم الميلادي .

 

السؤال يريد ادخال سنة من المستخدم نوعها integer  ، السنه سوف تكون كبيسة اذا كانت القيمة تقبل القسمة على 4 و لا تقبل القسمة على 100 .

 

و إذا كانت القيمة تقبل القسمة على 4 أو 100 لا تكون سنة كبيسة إلا إذا كانت ايضا تقبل القسمة على 400 . 

 

و يجب ان تظهر رسالة خطأ عند إدخال اي قيمة اقل من 1582 . 

 

و هذه هي محاولتي : 

 

يظهر عندي أخطاء .. مابعرف ليش 

 

و ماعرفت كيف أسوي رسالة خطأ عند ادخال قيمة اقل من 1582 

 

يا ريت تفيدوني .

 

 

 

 

import javax.swing.*;
public class LeapYear {


 public static void main(String[] args) {
int year;
yearStr = JOptionPane.showInputDialog(null, "Enter radius: " );


year = Integer.parseInt( yearStr );


boolean isLeapYear;
isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); 


 if(boolean == true){
JOptionPane.showMessageDialog(null, "Leap Year!");
 } 
 else{
JOptionPane.showMessageDialog(null, "Not a Leap Year!");
    }
    }
    }
#13

الحل كالتالي

 

 

import javax.swing.*;

public class LeapYear {


 public static void main(String[] args) {
int year;

String yearStr = JOptionPane.showInputDialog(null, "Enter radius: " );


year = Integer.parseInt( yearStr );

if (year >= 1582 ){
boolean isLeapYear;
isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);


 if(isLeapYear == true){
JOptionPane.showMessageDialog(null, "Leap Year!");
 }
 
 else{
JOptionPane.showMessageDialog(null, "Not a Leap Year!");
 }
}

 else {
     JOptionPane.showMessageDialog(null, "unvalid year, please enter a value after year 1582", null, JOptionPane.ERROR_MESSAGE);
    
 }
    }
    }

صراحة محاولتك كانت قريبة جدا من الحل وكانت عندك هفوات صغيرة جدا

وهي

 

yearStr = JOptionPane.showInputDialog(null, "Enter radius: " );

لم تحددي نوع المتغير yearStr يعني هل هو int or float or String......

ثانياً الأمر التالي والغريب

if(boolean == true)

لا يجب ان تكتبي هنا سوى المتغير الذي من نوع boolean وليس الـ boolean نفسه أي هكذا

 if(isLeapYear == true)

وبالنهاية نسيتي شرط تم تحديده في السؤال وهو انه يجب ان تكون قيمة السنة المدخلة أكبر من 1582

 

2

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#14

B)

 

فعلا هفوات فظيعه !!

 

 يسلموووووو كتير  :blush:

 

و يعطيك العافيه 

 

فعلا في كتير حاجات ما كنت فاهمتها و كتير افكار راحت عن بالي  و نبهتني ع شغلات كان لازم انتبع لها في المرات الجايه .

 

اما بالنسبه للسؤال الثالث حليته و زبط معايا الحمدلله ^_^ 

 

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

مواضيع مشابهة