נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: עזרה ב-java

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
רוני
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 03 March 2005 בשעה 20:31 | IP רשוּם
ציטוט רוני

שלום לכולם.אודה למי שיוכל לעזור לפתור 3 בעיות תכנות אלו:

 

שאלה 1.

 

כתבו תוכנית - CalcArea.java - המבקשת מהמשתמש את אורכי הצלעות במשולש ומדפיסה את היקף המשולש ושטחו. על התוכנית לבקש אורכי צלעות שלמים (integers) בלבד. לצורך חישוב השטח תוכלו להיעזר בנוסחת Heron. 

שורש ריבועי תחשבו ב-java ע"י השיטה Math.sqrt.

 

שאלה 2.

 

פירוק לגורמים של מספר שלם חיובי הוא אוסף של מספרים ראשוניים (שונים מ-1 ומהמספר עצמו) שמכפלתם היא המספר. לדוגמא, המספר 36 מתפרק לגורמים הבאים: 2 , 2 , 3 , 3. למספר ראשוני אין פירוק לגורמים.

כתבו תוכנית - Factorize.java - המבקשת מהמשתמש מספר שלם גדול מ-1. אם המספר קטן מ-2 (כולל מספרים שליליים) התוכנית תבקש מספר חדש. אם המספר פריק (לא ראשוני) לאחר קבלת המספר תדפיס התוכנית את גורמיו בסדר עולה, כל גורם בשורה

חדשה. אם המספר הוא ראשוני תכתוב התוכנית את המילה prime.

 

שאלה 3

 

 a,b,c,dהם ארבעה משתנים בוליאנים. כתבו תוכנית - TruthTable.java - המדפיסה את טבלת האמת של הביטוי הבא:

 

(a || d) && (!a || c || !d) && !(b && c) || c

חזרה לתחילת העמוד הצג את כרטיס החבר של רוני חפש הודעות אחרות של רוני בקר בדף הבית של רוני
 
(super(this
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 05 March 2005 בשעה 21:08 | IP רשוּם
ציטוט (super(this

קוד:

// פתרון שאלה מספר 1

import corejava.*;

public static void CalcArea(){

//המשתמש יכניס את אורכי שלוש הצלעות

int a = Console.readInt("Please enter the 1st side");

int b = Console.readInt("Please enter the 2nd side");

int c = Console.readInt("Please enter the 3rd side");

// היקף המשולש

int circumferenc = a + b + c;

// שטח המשולש

double area = //תרשום כאן ת'נוסחא לחישוב שטח

System.out.println("the circumferenc  is: " + circumferenc );

System.out.println("the area  is: " + area );

}

//corejava  אתה חייב להוריד ת'חבילה של ה

//

כדי שתוכל להריץ ת'תוכנית

חזרה לתחילת העמוד הצג את כרטיס החבר של (super(this חפש הודעות אחרות של (super(this בקר בדף הבית של (super(this
 
SBD
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 13 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1194
נשלח בתאריך: 05 March 2005 בשעה 21:12 | IP רשוּם
ציטוט SBD

בשביל לחשב את השטח אם זכרוני אינו בוגד בי חייבים את הגובה לא?

גובה * בסיס \ 2 [:?]



__________________
~ Nobody Is Perfect, I'm Nobody ~
פורומים
חזרה לתחילת העמוד הצג את כרטיס החבר של SBD חפש הודעות אחרות של SBD בקר בדף הבית של SBD
 
(super(this
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 05 March 2005 בשעה 21:58 | IP רשוּם
ציטוט (super(this

קוד:
// פתרון שאלה מספר 2

// הקוד שאני כותב כאן, כמו בשאלה הקודמת, לא נוסה

//Factorize אני רואה שביקשו את המחלקה

//  אז אני אכתוב ת'תוכנית מההתחלה בתור מחלקה ולא בתור פונקציה

import corejava.*;

public class Factorize{

   public static void main(String[] args){

   // קבל מספר שלם גדול מאחד מהמשתמש

   int a = Console.readInt("enter a number

               larger than one");

   // כל עוד המספר שקיבלת קטן מ-2

  // תבקש מהמשתמש להכניס מספר חוקי

   while(a<2){

    System.out.println("this number is illegal");

      a = Console.readInt("enter a number

               larger than one");

  }

   // בדיקה האם המספר הוא ראשוני

   // לא בטוח בכלל שהבדיקה נכונה

   if(a%2!=0 || a%3!=0 || a==2 || a==3){

    System.out.println("Prime");

  }

  else{

        //מונה את מספר הפעמים שיש את הגורם הראשוני 3 

        int counter4three=0;

        //מונה את מספר הפעמים שיש את הגורם הראשוני 2 

        int counter4two=0;

  // כל עוד המספר מתחלק ב-3

  // תוסיף למונה 1

 // והמספר יהיה המספרחלקי 3

        while(a%3==0){

                 ++counter4three;

                 a = a/3;

        }

  // כל עוד המספר מתחלק ב-2

  // תוסיף למונה 1

 // והמספר יהיה המספרחלקי 2

        while(a%2==0){

                 ++counter4four;

                 a = a/2;

         }

// הדפסת הגורמים שורה שורה

// כל עוד המונה גדול מאפס

// תדפיס את המספר 2 ותרד שורה

// המונה יקטן באחד

     while(counter4two>0){

             System.out.println("2");

             counter4two--;

     }

// כל עוד המונה גדול מאפס

// תדפיס את המספר 3 ותרד שורה

// המונה יקטן באחד

      while(counter4three>0 ){

             System.out.println("3");

             counter4three--;

     }

         

        

 

  }

 

}

}

חזרה לתחילת העמוד הצג את כרטיס החבר של (super(this חפש הודעות אחרות של (super(this בקר בדף הבית של (super(this
 
(super(this
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 05 March 2005 בשעה 22:07 | IP רשוּם
ציטוט (super(this

בקשר לשאלה 3

תסביר מה ז'תומרת להדפיס טבלת אמת, לא כל כך מתמצא בזה

בקשר לשאלה מספר 1

כן, נכון שחישוב שטח נעשה ע"י הנוסחא

2/(גובה * בסיס)

אבל צריך למצוא ת'גובה!!!ואני לא יודע ת'נוסחא לכך

אז חשבתי שאולי נתנו לו איזשהי נוסחא מתמטית אחרת לחישוב השטח

חזרה לתחילת העמוד הצג את כרטיס החבר של (super(this חפש הודעות אחרות של (super(this בקר בדף הבית של (super(this
 
SBD
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 13 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1194
נשלח בתאריך: 06 March 2005 בשעה 01:30 | IP רשוּם
ציטוט SBD

אחי הבדיקה למספר ראשוני שבצעת לא נכונה...

מספר ראשוני הוא לא מספר שלא מתחלק ב-2,3

לדוגמא:

121



__________________
~ Nobody Is Perfect, I'm Nobody ~
פורומים
חזרה לתחילת העמוד הצג את כרטיס החבר של SBD חפש הודעות אחרות של SBD בקר בדף הבית של SBD
 
(super(this
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 06 March 2005 בשעה 19:11 | IP רשוּם
ציטוט (super(this

שאלה 2 בכלל לא נכונה

לא בדקתי האם המספר ראשוני כמו שצריך

ולא הדפסתי את כל הגורמים כמו שצריך

הנה תשובה נכונה שעברה בדיקה

import java.io.*;
// חבילה בג'אווה שנועדה להתמודדות עם קלט ופלט
public class Factorize
{

    public static void main(String[] args) throws IOException {
       
        // בקשה מהמשתמש להקליד מספר שלם גדול מ1-
        System.out.println("Enter a number (integer) larger than 1");
        //String המקבל קלט מהמקלדת בתור stdin משתנה בשם
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        // number והשמתו במשתנה int ל string הפיכת ה
        int number = Integer.parseInt(stdin.readLine());
        // בדיקה האם המספר שהזין המשתמש חוקי
        // אם המספר לא חוקי לבקש מהמשתמש להזין מספר חוקי
        while(number<2){
             System.out.println("This number is illegal!!");
             System.out.println("You must enter a number larger than 1");
             number = Integer.parseInt(stdin.readLine());
        }
        //isPrime משתנה בוליאני בשם
        // ערך התחלתי - אמת
        boolean isPrime = true;
        // בדיקה האם המספר ראשוני
        for(int i=2; i<number && isPrime; ++i){
             if(number%i==0){
                 isPrime = false;
             }
        }
        // במקרה שהמספר אכן ראשוני
        if(isPrime) {
             System.out.println("Prime");
        }
        // אחרת, כלומר אם המספר אינו ראשוני
        //  i נבדוק האם הוא מתחלק ב
        // i=2 החל מ
        // באופן זה נדפיס את כל הגורמים המחלקים אותו
        // מן הגורם הקטן לגדול
        else{
             for(int i=2; i<=number; ++i){
                 while(number%i==0){
                          System.out.println(i);
                          number/=i;
                 }
       
             }
        }
    }
}

 

חזרה לתחילת העמוד הצג את כרטיס החבר של (super(this חפש הודעות אחרות של (super(this בקר בדף הבית של (super(this
 
SBD
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 13 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1194
נשלח בתאריך: 06 March 2005 בשעה 19:30 | IP רשוּם
ציטוט SBD

קוד:
import java.io.*;
// חבילה בג'אווה שנועדה להתמודדות עם קלט ופלט
public class Factorize
{

    public static void main(String[] args) throws IOException {
       
        // בקשה מהמשתמש להקליד מספר שלם גדול מ1-
        System.out.println("Enter a number (integer) larger than 1");
        //String המקבל קלט מהמקלדת בתור stdin משתנה בשם
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        // number והשמתו במשתנה int ל string הפיכת ה
        int number = Integer.parseInt(stdin.readLine());
        // בדיקה האם המספר שהזין המשתמש חוקי
        // אם המספר לא חוקי לבקש מהמשתמש להזין מספר חוקי
        while(number<2){
              System.out.println("This number is illegal!!");
              System.out.println("You must enter a number larger than 1");
              number = Integer.parseInt(stdin.readLine());
        }
        //isPrime משתנה בוליאני בשם
        // ערך התחלתי - אמת
        boolean isPrime = true;
        // בדיקה האם המספר ראשוני
        for(int i=2; i<number && isPrime; ++i){
              if(number%i==0){
                  isPrime = false;
              }
        }
        // במקרה שהמספר אכן ראשוני
        if(isPrime) {
              System.out.println("Prime");
        }
        // אחרת, כלומר אם המספר אינו ראשוני
        //  i נבדוק האם הוא מתחלק ב
        // i=2 החל מ
        // באופן זה נדפיס את כל הגורמים המחלקים אותו
        // מן הגורם הקטן לגדול
        else{
              for(int i=2; i<=number; ++i){
                  while(number%i==0){
                             System.out.println(i);
                             number/=i;
                  }
       
              }
        }
    }
}

** פעם הבאה רק שים את זה בתגי קוד, ושוב יש לך בעיה עם הבדיקת מספר ראשוני, הפעם לא שזה לא יעבוד זה יעבוד מצויין רק חבל על הזמן מחשב לא חושב..?! לעבור כל מספר עד המספר...

במקום אפשר לעבור כל מספר מ-2 עד השורש שלו :) [יחסוך הרבה זמן מחשב...]



__________________
~ Nobody Is Perfect, I'm Nobody ~
פורומים
חזרה לתחילת העמוד הצג את כרטיס החבר של SBD חפש הודעות אחרות של SBD בקר בדף הבית של SBD
 
יונתן
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 06 March 2005 בשעה 22:53 | IP רשוּם
ציטוט יונתן

זו תשובה יותר קלאסית:

קוד:
public class Factorize  {
 public static void main(String [] args) {
  int i,j,k;

  i=Console.readInt("Please enter an integer larger than one:");
         while(i<2) 
   i=Console.readInt("Please enter an integer larger than one:");
     j=i;
     for(k=2;k<=i;k++) {     
       if(j==k)
       System.out.println("Prime");
       else  
          while((i%k)==0) {
      System.out.println(+k);   
     i=i/k; }
  } } }

חזרה לתחילת העמוד הצג את כרטיס החבר של יונתן חפש הודעות אחרות של יונתן בקר בדף הבית של יונתן
 
SBD
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 13 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1194
נשלח בתאריך: 06 March 2005 בשעה 23:04 | IP רשוּם
ציטוט SBD

את הדרך שלך אחי באמת שלא הבנתי...:(

אפילו לא את העקרון....:? [של הבדיקת ראשוני...]



__________________
~ Nobody Is Perfect, I'm Nobody ~
פורומים
חזרה לתחילת העמוד הצג את כרטיס החבר של SBD חפש הודעות אחרות של SBD בקר בדף הבית של SBD
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה