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

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



  #6  
ישן 14-02-2010, 00:17
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 1 שנכתבה על ידי איציק2 שמתחילה ב "שבוע טוב ! בעניין פונקציה עם מספרים אקראיים."

אני כותב לך קוד מבלי לבדוק בקומפיילר שהוא אפילו עובר קומפילציה. מקווה שזה עובד, בכל מקרה אתה אמור להבין מה לתקן במידה ותמצא בו שגיאות
קוד PHP:
 intfillRand (int sizeint topBound)
{
    
int tempNum, *array;
    
bool flag true;
    array = new 
int[size];
    for (
int i size i++)
    {
        
tempNum rand() % (topBound+4);
        
tempNum tempNum 4;
        for (
int j j++)
        {
            if (
tempNum == array[j])
            {
                
i--;
                
i;
                
flag false;
            }
        }
        if (
flag)
        {
            array[
i] = tempNum;
        }
        
flag true;
    }
    return array;



עריכה: תיקנתי את הקוד - עכשיו הוא עובד בוודאות.
בדקתי עם ה main הבא:
קוד PHP:
 #include <iostream>
using namespace std;

intfillRand (int sizeint topBound);

int main()
{
    
int size 10topBound 60;
    
int *array = fillRand (sizetopBound);
    for (
int i size i++)
    {
        
cout << array[i] << " ";
    }
    
free (array);
    
cin >> size;
    return 
0;

_____________________________________
בברכה, מתן.
www.MatanNarkiss.com


נערך לאחרונה ע"י Narxx בתאריך 14-02-2010 בשעה 00:45.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 16-02-2010, 00:28
צלמית המשתמש של hellfrost
  hellfrost hellfrost אינו מחובר  
 
חבר מתאריך: 07.12.09
הודעות: 7,072
בתגובה להודעה מספר 6 שנכתבה על ידי Narxx שמתחילה ב "אני כותב לך קוד מבלי לבדוק..."

1. לא מגדירים משתנים מטיפוסים שונים באותה שורה, מערך ומספר זה טיפוסים שונים, זה מבלבל, ומתכון לטעויות.

קוד PHP:
 intNumsMoreNums


2. תן שמות משמעותיים למשתנים "דגל" זה לא משמעותי, נהוג לנסח בוליאנים כשאלה.
3. נהוג (בימינו המודרניים, והסעיף הזה זה המלצה) להגדיר משתנים הכי קרוב לשימוש, ולא מראש.
4. לא רושמים סתם מספרים בקוד, צריך להגדיר קבוע או מאקרו.
5. כל הFOR השני צריך להיות WHILE. (אני גם חושב שאתה צריך -1 אבל אני לא בטוח ואין לי כח להתעמק)

6. אסור(!) לשנות איטרטור של FOR זה ברמה של GOTO. מכות כאילו...
7. אין כמעט אף פעם היגיון בהשמה של ערך סתם לתוך בוליאני. זה כמעט תמיד תוצאה של פונקציה לוגית.

8. כל המשחק עם הדגל בסוף קצת לא ברור....
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 16-02-2010, 01:16
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 10 שנכתבה על ידי hellfrost שמתחילה ב "1. לא מגדירים משתנים מטיפוסים..."

1. בחיים לא שמעתי על זה... זה מתקמפל ועובד מצויין. מעולם לא ראיתי הערות מהסוג הזה, אבל אני מבין מדוע מתכנתים צעירים יתבלבלו בשורה מהסוג int* nums, nums2

2. כן, האמת שרציתי, אבל זה כבר היה בסוף הכתיבה ולא היה לי כבר כוח לתת שמות למשתנים. אתה צודק ואני בד"כ משתמש בשמות משמעותיים.

3. ממתי?

4. חחח, טוב, אז אני משנה במקום איפה שכתוב 4- למשתנה בשם lowBound שהערך שלו מינוס 4

5. ה for לא צריך להיות while, הוא צריך להיות for.
אפשר היה ליצור בוליאני נוסף ולבצע השוואה נוספת ולטחון את הזיכרון ולנפח את התוכנית עבור השוואה נוספת ועוד משתנים, אבל אם זה כל כך חשוב לך, פשוט תשנה את ה for ל:
קוד PHP:
 for (int j && isOkayj++) 

כאשר הבוליאני isOkay יאותחל ל true וישונה ל false במידה ומצאנו איבר במערך עם אותו מספר אקראי נוכחי.
שוה, הדרך שלי היתה בשביל לחסוך במשתנים והשוואה אבל תמיד אפשר לכתוב עם יותר 'שאלות לוגיות' כדי שיהיה יותר קריא. זה נכון.

6. אסור זה שם של דג
גם GOTO מותר לעשות... אל תספר לאף אחד שגיליתי לך

7. הפעם יש הגיון... נסה לקרוא שוב ולנסות להבין את הקטע של הדגל.. נסה להסיר את החלק הזה ולראות מה קורה (או לא קורה).

8. אבל בכל מקרה, תודה רבה - לקחתי את ההערות לתשומת ליבי
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #12  
ישן 16-02-2010, 10:36
צלמית המשתמש של hellfrost
  hellfrost hellfrost אינו מחובר  
 
חבר מתאריך: 07.12.09
הודעות: 7,072
בתגובה להודעה מספר 11 שנכתבה על ידי Narxx שמתחילה ב "1. בחיים לא שמעתי על זה... זה..."

ציטוט:
במקור נכתב על ידי Narxx
1. בחיים לא שמעתי על זה... זה מתקמפל ועובד מצויין. מעולם לא ראיתי הערות מהסוג הזה, אבל אני מבין מדוע מתכנתים צעירים יתבלבלו בשורה מהסוג int* nums, nums2

2. כן, האמת שרציתי, אבל זה כבר היה בסוף הכתיבה ולא היה לי כבר כוח לתת שמות למשתנים. אתה צודק ואני בד"כ משתמש בשמות משמעותיים.

3. ממתי?

4. חחח, טוב, אז אני משנה במקום איפה שכתוב 4- למשתנה בשם lowBound שהערך שלו מינוס 4

5. ה for לא צריך להיות while, הוא צריך להיות for.
אפשר היה ליצור בוליאני נוסף ולבצע השוואה נוספת ולטחון את הזיכרון ולנפח את התוכנית עבור השוואה נוספת ועוד משתנים, אבל אם זה כל כך חשוב לך, פשוט תשנה את ה for ל:
קוד PHP:
 for (int j && isOkayj++) 

כאשר הבוליאני isOkay יאותחל ל true וישונה ל false במידה ומצאנו איבר במערך עם אותו מספר אקראי נוכחי.
שוה, הדרך שלי היתה בשביל לחסוך במשתנים והשוואה אבל תמיד אפשר לכתוב עם יותר 'שאלות לוגיות' כדי שיהיה יותר קריא. זה נכון.

6. אסור זה שם של דג
גם GOTO מותר לעשות... אל תספר לאף אחד שגיליתי לך

7. הפעם יש הגיון... נסה לקרוא שוב ולנסות להבין את הקטע של הדגל.. נסה להסיר את החלק הזה ולראות מה קורה (או לא קורה).

8. אבל בכל מקרה, תודה רבה - לקחתי את ההערות לתשומת ליבי



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

1. ברור שזה מתקמפל, הבעיה היא לא עם צעירים, אלא עם כאלה שבאו משפות אחרות שבהן יש הגדרה טיפוסים נורמאלית, ולא כמו בC והילדים שלה. כאילו יש כאלה שיקראו את השורה ההיא ויהיו בטוחים שהגדרת שני מצביעים.

3. שנות ה80-90 מאז שאפשר להגדיר משתנים איפה שבא לך, אבל זה מין ויכוח קבוע בין אנשים שאין להם על מה להתווכח.
4. לקומפיילר לא, למי שקורא את הקוד זה משנה, וגם אם אותו מספר מופיע כמה פעמים וצריך לשנות.
5. הוא צריך להיות WHILE בגלל שהוא שובר את המשמעות של FOR, שזה לרוץ על כל התאים במערך, או על סדרה פשוטה של מספרים. גם בגלל התנאי אבל זה מאוד משני ודיי מקובל. אל תגיד לאף אחד אבל אפילו BREAK אפשר לעשות....

6. שוב זה משנה אתה המשמעות האינטואיטיבית של FOR כשמישהו אחר ניגש לקוד שלך

אה ותקרא את זה , זה של פרופסור אדגר דייקסטרה, בתור סטודנט אני חושב שתכיר את השם
http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF

7. אין היגיון, אפשר לכתוב את זה אחרת.... בכלל אתה לא צריך דגל...

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

נערך לאחרונה ע"י hellfrost בתאריך 16-02-2010 בשעה 10:38.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #16  
ישן 16-02-2010, 00:17
צלמית המשתמש של hellfrost
  hellfrost hellfrost אינו מחובר  
 
חבר מתאריך: 07.12.09
הודעות: 7,072
בתגובה להודעה מספר 1 שנכתבה על ידי איציק2 שמתחילה ב "שבוע טוב ! בעניין פונקציה עם מספרים אקראיים."

קוד PHP:
 #define LOW_BOUND 4

intMakeRndArray(const int Size, const int Num)
{
    
intarrNums = new int[Size];
    
    for(
int nI 0nI SizenI++)
    {
        
int nNewRnd GetRnd(LOW_BOUNDNum);
        
        
// you can use do{}while();
        
bool bContains DoesArrContain(arrNums0nI 1nNewRnd);
        while(
bContains)
        {
            
nNewRnd GetRnd(LOW_BOUNDNum);
            
bContains DoesArrContain(arrNums0nI 1nNewRnd);
        }
        
        
arrNums[nI] = nNewRnd;
    }

    return 
arrNums;
}

int GetRnd( const int Min, const int Max)
{
    
// you should use srand....
    
return ( rand( ) % ( Max Min ) + Min );
}

bool DoesArrContain( const int* const Array, const int Start, const int End,
    const 
int value)
{
    for(
int nI StartnI <= End nI++)
    {
        if (Array[
nI] == value)
        {
            return 
true;
        }

    }

    return 
false;

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #22  
ישן 17-02-2010, 01:16
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 16 שנכתבה על ידי hellfrost שמתחילה ב "[PHP] #define LOW_BOUND..."

נחמד, אבל אני חושב שדי פספסתם את הרעיון באשכול :/
הבנאדם מחפש עזרה בלהבין איך לפתור שאלה מסויימת. כרגע הוא נמצא במצב שהוא לא מבין איך לגשת לשאלה ואיך לפתור אותה.
אני מרגיש שלקחת קוד יחסית פשוט, ולכתוב אותו ביחד עם פונקציות עזר נוספות (ונחמדות, האמת) רק יסבך אותו.

יש תמיד איזה-שהוא trade-off. מצד אחד, יש רצון לכתוב 'by the book', בצורה מסודרת כדי שכולם יבינו וכדי שתהיה אחידות כלשהי.. מצד שני, זה לא נגיש עבור סטודנטים שרק נוגעים בפעם הראשונה בקוד.
אם אפשר לייצר את המספר האקראי בתוך הפונקציה, בתוך הלולאה... למה לא לעשות את זה?
אם אפשר לרוץ בתוך לולאה פנימית בכל פעם שרוצים לבדוק האם המספר שהוגרל קיים כבר - למה ליצור עוד פונקציה חיצונית (פונקציית עזר) שתעשה בדיוק את אותה הפעולה?

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

זה קצת נראה כאילו אתם עושים תחרות בינכם לבין עצמכם מי כותב 'יותר נכון' וקצת שכחתם את מהות האשכול המקורית.
סליחה על החפירה, ותודה בכל זאת על התשובות... גם אם איציק לא הבין אותן - אני בהחלט לקחתי כמה הערות לתשומת ליבי
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #24  
ישן 17-02-2010, 20:23
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 23 שנכתבה על ידי hellfrost שמתחילה ב "קודם כל הניחוש שלי זה שהוא..."

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

אתה מגיע מנקודת מבט שמי שכותב פה, הוא כבר שוחה בקוד - כאשר המצב רחוק מזה.
דוגמאות קוד נכונות זה אחלה, אבל רק במידה והן לא מסבכות את הקוד האחר. עדיף לתת לסטודנטים לכתוב עם break ולשנות איטרטור בלולאות for ולהבין את הפתרון, מאשר להציג להם פתרון אחר שכולל 2 פונקציות עזר ושימוש מיותר ב const (ולא ניכנס להאם זה יותר או פחות 'נכון' לציין במפורש כי המשתנה הוא const).

אני לא בא להגיד חלילה שהפתרונות שלכם לא טובים, אני פשוט מנסה לכוון את הזרימה של האשכול שתהיה יותר ברמה שהאשכול אמור לדבר בה, אחרת אנחנו מפספסים את הנקודה לשמה הוא נוצר מלכתחילה.
בכל מקרה, נראה שמר איציק נעלם כך שזה לא באמת משנה
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #28  
ישן 21-02-2010, 07:35
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 27 שנכתבה על ידי פסטן שמתחילה ב "לא לשנות את המונה של לולאת..."

אני לא מנסה להצדיק כתיבת קוד ששונה ממה שאתה רגיל אליו, אבל בתרגילים ושיעורי הבית של סטודנטים לא מכילים את הקוד הברור ביותר בעולם, אלא להיפך..
מבחן של סטודנט יכיל במקרים רבים מאוד - קוד מאוד מבולגן ומאוד מבלבל כאשר הסטודנט אמור לעקוב אחריו ולהסביר למרצה מה הקוד עושה (בד"כ מה הפלט שהקוד נותן).

ספציפית, את שינוי האיטרטור בתרגיל שלו לקחתי מתוך תרגיל אחר שהוא (איציק) קיבל [נתן לי בהודעה פרטית]. כלומר, הקוד כתוב לפי ה'שפה' של המרצה שלו (או המתרגל שלו).
שוב, אני לא בא להצדיק כתיבה כזו או אחרת, הוא בסך הכל סטודנט שלומד במסגרת מסודרת.
נכון שלא מלמדים בהנדסת תוכנה / מדעי המחשב "איך לכתוב נכון", אלא בעיקר את עקרונות השפה עצמה.
ללמוד לכתוב 'נכון' אפשר תמיד אח"כ בתעשייה עצמה. זו ממש לא הבעיה. ברגע שאתה מכיר את המילים בשפה, התחביר זה עניין טכני.

אני מסכים שכדאי לתת קוד נכון בפורום, אבל לקחת דברים בפרופורציה. כמו שכתבתי קודם - פונקציות עזר וקונסטים רק מסבכים עבור הסטודנט את ההבנה ולא מעבר.
כמו כן, ריבוי פתרונות זה דבר מצויין וזה מראה שאפשר לקבל את אותה התוצאה ע"י 100 קודים שונים שעושים את אותו הדבר (במידה ומבקש העזרה הוא תלמיד... ברור שאם מדובר על אדם שכותב לעצמו או אולי לחברה - כדאי לתת מראש קוד נכון עד הסוף).

אני שמח על האשכול הזה, שהתפתח למה שהוא התפתח
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

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

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

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

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

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



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

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

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

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