לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 19-04-2011, 12:51
  benni7 benni7 אינו מחובר  
 
חבר מתאריך: 08.11.07
הודעות: 34
עזרה דחופה רקורסיה JAVA

שלום לכולם

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

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://img823.imageshack.us/img823/7119/picnr.jpg]


את הכוכב הבסיסי באמצע ציירתי כבר באמצעות פונקציה ... DRAWSNOWFLAKE שפועלת טוב!
עכשיו אני אמור לכתוב פונקציה רקורסיבית כדי לצייר את המעגלים מסביב- DrawCircle
הנה החתימה
public static void drawCircle(int x, int y, int radius, int size, int depth )

והנה הפרטים על הפרמטרים שהיא מקבלת

(x,y) is the center of the circle
o radius is the radius of the circle
o size is the lengths of the lines of the snowflakes in the circle
o depth is the number of times left to call the method recursively


והנה כמה הגבלות שנתנו:

Each circle has a radius which is larger than the previous circle’s radius by
3*size. (size is the size of the snowflake of the previous circle).
 Each circle has snowflakes which are 2 times smaller in size than the previous
snowflake.



ולבסוף זה הקוד שכתבתי אני לDrawCircle(משהו בו לא טוב כנראה רק קשה לי להבין מה ולמה

public static void drawCircle(int x, int y, int radius, int size, int depth ){

if (depth!=0){
for (int i = 0; i<6; i++) {
int endX = x + (int)(size*Math.cos(2*Math.PI/6*i));
int endY = y - (int)(size*Math.sin(2*Math.PI/6*i ));
drawSnowflake(endX,endY,size/3,4);
drawCircle(x,y,radius/3,size/2,depth-1);
}
}


מישהו יכול לעזור לי להבין מה לא טוב או איך אני אמור לשנות?


אני תקוע עם זה כבר הרבה זמן

תודה

נערך לאחרונה ע"י benni7 בתאריך 19-04-2011 בשעה 12:59.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 20-04-2011, 08:06
צלמית המשתמש של Eran
  משתמש זכר Eran Eran אינו מחובר  
 
חבר מתאריך: 27.02.02
הודעות: 4,536
שלח הודעה דרך ICQ אל Eran
בתגובה להודעה מספר 1 שנכתבה על ידי benni7 שמתחילה ב "עזרה דחופה רקורסיה JAVA"

א. ממש לא נוח לקרוא את ההודעה שלך.
ב. למה אתה עושה 6*i ??
זה אמור להיות (2ap/6)
x זה רדיוס כפול קוסינוס של הדבר שמעליי
ו y זה רדיוס כפול סינוס ...
i=a=alpha*
p=pie*

ג. למה אתה עושה y-
ממי העתקת? איפה הייתה בשיעורי מתמטיקה? (סתם צוחק...)


הכי פשוט זה לראות את התוצאה מול העיניים
ולשנות בהתאם לפגיעות.. כדי שנוכל לעזור לך תעלה בפעם הבאה גם את התוצאה שיצאו לך (דרך השרת של פרש כמובן)
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/list.png]

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/?https://2010-uploaded.fresh.co.il/2010/09/21/52868411.gif,http://www.boredpanda.com/blog/wp-content/themes/mimbo2.2/images/subscribe-panda-605px.png]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 20-04-2011, 10:59
  benni7 benni7 אינו מחובר  
 
חבר מתאריך: 08.11.07
הודעות: 34
בתגובה להודעה מספר 1 שנכתבה על ידי benni7 שמתחילה ב "עזרה דחופה רקורסיה JAVA"

הנה גרסה נוחה לקריאה



קודם כל הנה התמונה של מה שצריך לצאת :
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


א
ת הכוכב הבסיסי באמצע ציירתי כבר באמצעות פונקציה ... DRAWSNOWFLAKE שפועלת טוב!
עכשיו אני אמור לכתוב פונקציה רקורסיבית כדי לצייר את המעגלים מסביב- DrawCircle
הנה החתימה
public static void drawCircle(int x, int y, int radius, int size, int depth )

והנה הפרטים על הפרמטרים שהיא מקבלת

(
x,y) is the center of the circle
o radius is the radius of the circle
o size is the lengths of the lines of the snowflakes in the circle
o depth is the number of times left to call the method recursively

והנה כמה הגבלות שנתנו:

Each circle has a radius which is larger than the previous circle’s radius by
3*size. (size is the size of the snowflake of the previous circle).
 Each circle has snowflakes which are 2 times smaller in size than the previous
snowflake.

Each time drawCircle is called another circle of snowflakes is added around the
center
.



ולבסוף זה הקוד שכתבתי אני לDrawCircle(משהו בו לא טוב כנראה רק קשה לי להבין מה ולמה

public static void drawCircle(int x, int y, int radius, int size, int depth ){

if (depth!=0){
for (int i = 0; i<6; i++) {
int endX = x + (int)(size*Math.cos(2*Math.PI/6*i));
int endY = y - (int)(size*Math.sin(2*Math.PI/6*i ));
drawSnowflake(endX,endY,size/3,4);
drawCircle(x,y,radius/3,size/2,depth-1);
}
}

התמונות של מה שיוצא לי:
של הקוד הנוכחי

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


ושל אותו הקוד בשינוי של במקום /3 /2 *3 *2

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


ערן עכשיו אתה רואה שבסך הכל עשיתי מה שאמרת רק שאי אפשר היה לקרוא את זה כי הכל היה הפוך



אני מעריך את העזרה שלכם , אם יש שאלות נוספות שיעזרו לכם לעזור לי אל תתביישו

תודה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 21-04-2011, 11:08
צלמית המשתמש של Eran
  משתמש זכר Eran Eran אינו מחובר  
 
חבר מתאריך: 27.02.02
הודעות: 4,536
שלח הודעה דרך ICQ אל Eran
בתגובה להודעה מספר 4 שנכתבה על ידי benni7 שמתחילה ב "[B]הנה גרסה נוחה..."

ציטוט:
במקור נכתב על ידי benni7
public static void drawCircle(int x, int y, int radius, int size, int depth ){

if (depth!=0){
for (int i = 0; i<6; i++) {
int endX = x + (int)(size*Math.cos(2*Math.PI/6*i));
int endY = y - (int)(size*Math.sin(2*Math.PI/6*i ));
drawSnowflake(endX,endY,size/3,4);
drawCircle(x,y,radius/3,size/2,depth-1);
}
}

קודם כל, הרבה יותר טוב.

אני בתכלס לא מבין איך כן יצא צורה טוב כלשהי
א. חשבתי שהנוסחא של גיזרה במעגל קצת שונה אבל אם זה עובד (כל השלגונים במקום שלהם) אז לא נוגעים.
ב. לא ברור לי לאין נעלמו עוד צורות
drawCircle(x,y,radius/3,size/2,depth-1);
נמצא בתוך הלולאת FOR אבל אני לא רואה בתוצאה שלך מעגלים נוספים מסביב לכל שלגון שחוץ מהמעגל האחרון שאמור לקבל depth = 0
ג. האופציה היחידה שעושים חילוק ושהצורה תגדל היא שה size הוא מקבל מראש שבר לכן אולי כן צדקתי בסעיף א שלי והנוסחא שלך פשוט לא טובה
נסה
קוד PHP:
 public static void drawCircle(int xint yint radiusint sizeint depth ){

if (
depth!=0){

for (
int i 0i<6i++) {
int endX + (int)(radius*Math.cos(2*i*Math.PI/6));
int endY + (int)(radius*Math.sin(2*i*Math.PI/6)); 
drawSnowflake(endX,endY,size,4);    
}

drawCircle(x,y,radius+size*3,size/2,depth-1);


תריץ תגיד מה יוצא


דבר נוסף,
למרות שאתה עכשיו מדפיס משהו גרפי אתה לא אמור לנחש מה קורה בו
אני ממליץ לך עדיין להשתמש בפלט הרגיל בו תדפיס את כל מה שקורה בסקריפט שלך.
או לפחות בדיבאגר או גם וגם מה שנוח לך... רק תבין מה קורה בלולאה
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/list.png]

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/?https://2010-uploaded.fresh.co.il/2010/09/21/52868411.gif,http://www.boredpanda.com/blog/wp-content/themes/mimbo2.2/images/subscribe-panda-605px.png]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:31

הדף נוצר ב 0.06 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר