ABA


"חברים אני צריך עזרה בבניית תוכנית (C++) עם פונקציות"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13259 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13259
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   18:43   03.05.06   
אל הפורום  
  חברים אני צריך עזרה בבניית תוכנית (C++) עם פונקציות  
 
אז ככה אני צריך לבנות תוכנית עם פונקציה בשם min שמחזירה את המספר הקטן משני מספרים ב float והשתמש בה כדי למצוא טת המספר הקטן ביותר מבין שלושה מספרים.

מישהו יודע איך לעשות את זה כי אני אפילו לא הבנתי מה מבקשים ממני

תודה מראש


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  איפה בדיוק הבעיה...? nesher  03.05.06 20:00 1
     כן אבל יש לי בעיה בכלל בבניה עצמה silvering  03.05.06 22:11 2
         לבנות תוכנית בסיסית אתה יודע? nesher  04.05.06 22:30 4
             רגע ועכשיו מה עם המשתנה השלישי? silvering  04.05.06 23:14 5
                 הסברתי לך כבר לגבי המשתנה השלישי nesher  04.05.06 23:39 6
                     טוב תודה רבה אחי אני ינסה ליסם את זה silvering  05.05.06 00:08 7
                         בבקשה ובהצלחה nesher  05.05.06 00:50 8
  מישהו בבקשה אני חייב עזרה silvering  04.05.06 22:20 3
     בבקשה... מקווה שמובן... Phinox  05.05.06 11:19 9
         אפשר לכתוב הכל בשורה עם האופרטור ''?'' Net_Boy  05.05.06 13:46 10
         אוקי ראיתי מה שכבת וזה באמת עובד silvering  05.05.06 15:55 12
             אוקי אני הבנתי אנשים זה באמת ממש עזר לי silvering  05.05.06 16:14 13
  ישבתי על וניסיתי להבין תטעות שלי אבל לא הלך silvering  05.05.06 15:48 11
     כמה דברים... Phinox  05.05.06 18:42 14
  תודה אחים שלי הכל עובד ממש תודה silvering  06.05.06 16:56 15

       
nesher 

דרג אמינות חבר זה
   20:00   03.05.06   
אל הפורום  
  1. איפה בדיוק הבעיה...?  
בתגובה להודעה מספר 0
 
   להכין פונ' כזאת אתה יודע...? באמת שזה לא הדבר הבעייתי
בקשר למצוא מס' הקטן מבין 3... אתה פשוט משתמש בפונ' מס' פעמים למצוא מי מהמספרים הוא הקטן ביותר
למשל 3,4,1
תשלח בהתחל את 1 ו-4.. יחזיר 1
תשלח את 4 ו-3 יחזיר 3
ומבין 3 ו-1 שתשלח תקבל את 1 שהוא הכי מינימלי מבין שלושתם


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   22:11   03.05.06   
אל הפורום  
  2. כן אבל יש לי בעיה בכלל בבניה עצמה  
בתגובה להודעה מספר 1
 
כי אני לא כל כך שולט בזה אני חייב לראות תוכנית בנויה שבאמת עובדת כי הרעיון של קריאה של פונקציה והבניה עצמה לא כל כך נקלט לי
אתה יכול להראות לי אם לא אכפת לך?

תודה מראש


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
nesher 

דרג אמינות חבר זה
   22:30   04.05.06   
אל הפורום  
  4. לבנות תוכנית בסיסית אתה יודע?  
בתגובה להודעה מספר 2
 
   עם main והכל?
אתה עושה אותו הדבר רק מוסיף פונ' בשם min לפני כתיבת ה-main
וקורא לפונ' מתי שאתה רוצה כמובן ב-main או בכל פונ' אחרת

או שאתה יכול להגדיר prototype שזה בעצם הגדרת הפונ' בראש התוכנית ואז מימוש שלה בכל מקום אחרי (כולל אחרי ה-main)

לדוגמא


float min(float a,float b);

int main()
{
קוד...
}

float min(float a,float b)
{
if ( a > b ) return a
else return b
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   23:14   04.05.06   
אל הפורום  
  5. רגע ועכשיו מה עם המשתנה השלישי?  
בתגובה להודעה מספר 4
 
מתי זה בודק אותו

ומה אני אמור למלות במקום "קוד"

מצטער אחי לא ממש הבנתי אותך

תודה מראש


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
nesher 

דרג אמינות חבר זה
   23:39   04.05.06   
אל הפורום  
  6. הסברתי לך כבר לגבי המשתנה השלישי  
בתגובה להודעה מספר 5
 
   ומה שאתה אמור למלא במקום קוד אתה צריך לחשוב לבד
זה לא פורום להכנת שיעורי בית
ומצטער להגיד לך שאם את זה אתה לא יודע, וותר על תיכנות או שתתחיל לקחת את העניין ברצינות


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   00:08   05.05.06   
אל הפורום  
  7. טוב תודה רבה אחי אני ינסה ליסם את זה  
בתגובה להודעה מספר 6
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
nesher 

דרג אמינות חבר זה
   00:50   05.05.06   
אל הפורום  
  8. בבקשה ובהצלחה  
בתגובה להודעה מספר 7
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   22:20   04.05.06   
אל הפורום  
  3. מישהו בבקשה אני חייב עזרה  
בתגובה להודעה מספר 0
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Phinox 
חבר מתאריך 3.9.05
3489 הודעות, דרג אמינות חבר זה
   11:19   05.05.06   
אל הפורום  
  9. בבקשה... מקווה שמובן...  
בתגובה להודעה מספר 3
 
   ערכתי לאחרונה בתאריך 05.05.06 בשעה 11:21 בברכה, Phinox
 
http://www.rafb.net/paste/results/qjqmjz21.html

נ.ב: הרבה זמן לא תכנתתי ב-++C, ככה שיכולות להיות טעויות בסיסיות קטנות בתוכנית, אולם אל תתן לזה להדאיג אותך. מה שצריך לעניין אותך זה המבנה של הפונקציה ואיך שהיא עובדת!

בברכה, אריה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   13:46   05.05.06   
אל הפורום  
  10. אפשר לכתוב הכל בשורה עם האופרטור ''?''  
בתגובה להודעה מספר 9
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   15:55   05.05.06   
אל הפורום  
  12. אוקי ראיתי מה שכבת וזה באמת עובד  
בתגובה להודעה מספר 9
 
אבל עדיין אני צריך שמישהו יעמוד על הטעות שלי כי איך שכתבת זה קצת שונה ממה שאני מכיר...


תודה מראש


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   16:14   05.05.06   
אל הפורום  
  13. אוקי אני הבנתי אנשים זה באמת ממש עזר לי  
בתגובה להודעה מספר 12
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   15:48   05.05.06   
אל הפורום  
  11. ישבתי על וניסיתי להבין תטעות שלי אבל לא הלך  
בתגובה להודעה מספר 0
 
ישבתי עם הקומפיילר שעות ומשום מה לא הולך
הנושא הזה של הפונקציות לא ממש הולך לי אם מישהו יוכל לתקן אותי אני אשמח או לפחות להכווין אותי

#include <iostream.h>

float check_min(float a,float b);

float check_min(float a,float b)
{
float a,b;
if(a<b)
return a;
else
return b;
}

void mian()
{
float a,b,c,min;
cout<<"Enter Three numbers:"<<endl;
cin>>a>>b>>c

min = check_min(float a,float b);
cout<<"The minimum is: "<<min<<endl;
}

תודה מראש


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Phinox 
חבר מתאריך 3.9.05
3489 הודעות, דרג אמינות חבר זה
   18:42   05.05.06   
אל הפורום  
  14. כמה דברים...  
בתגובה להודעה מספר 11
 
   ערכתי לאחרונה בתאריך 05.05.06 בשעה 19:24 בברכה, Phinox
 
בס"ד

1. כשיישמת את הפונקציה, למה הגדרת בתוכה עוד שתי משתנים מסוג נקודה-צפה בשם a ו-b? הרי a ו-b הם הפרמטרים שהפונקציה מקבלת, לא? שתי משתנים זהים באותו בלוק של קוד... אני בספק אם המהדר ייפסח על זה ויריץ לך את התכנית בשקט.

2. תבין, נשמה - רק כשאתה מצהיר על הפוקנציה ומיישם אותה אתה מצרף לפרמטרים את הטיפוס שלהם! כדוגמה, בפונקציה הראשית שלך, במשתנה min, למה נתת לפונקציה check_min את הפרמטרים float a ו-float b? היא הרי אמורה לקבל את הפרמטרים a ו-b ולהשוות ביניהם, ולא בין הפרמטרים float a ו-float b... מבין? ברגע שאתה כותב תכנית כמו שכתבת, המהדר אוטומאטית רץ לך בכל התכנית ומחפש משתנים בשם float a ו-float b, ומנסה להעביר אותם כפרמטרים לפונקציה check_min. לא כך זה צריך להיות! אתה אמור להעביר לפונקציה את המשתנים a ו-b, שהם מטיפוס float, שמכילים בתוכם את הקלט שהמשתמש הכניס.

3. בוא ואני אסביר לך את העיקרון הכללי שעל-פיו עובד האלגוריתם לבעיה שהצגת. נניח ונתונים לנו שלושה מספרים שונים, b ,a ו-c. אם a>b, ו-b>c, אזי גם a>c. ההיפך גם הוא הנכון (ז"א, אם a<b, ו-b<c, אזי גם a<c). אותו הפסוק ניתן ליישום גם בקטע של שוויון. נניח ויש לנו שלושה גדלים. הראשון מבניהם שווה לשני, והשני מבניהם שווה לשלישי. משתי הנתונים הללו ניתן להסיק גם כי הראשון שווה לשלישי (אפשר גם להדגים זאת כך: אם אני בגובה שלך, ואתה בגובה שלו, אז גם אני בגובה שלו.) מה שאנחנו צריכים לעשות בתכנית שלנו זה לבצע, למעשה, שלושה בדיקות עקריות. האחת תבדוק איזה משתנה קטן יותר מבין הנתון הראשון והשני שהכניס המשתמש (ז"א, איזה משתנה קטן יותר, a או b). השנייה תבדוק איזה משתנה קטן יותר מבין הנתון השני והשלישי שהכניס המשתמש (ז"א, איזה משתנה קטן יותר, b או c). השלישית תבדוק, למעשה, איזו תוצאה קטנה יותר מבין תוצאות שתי הבדיקות שכרגע ערכנו. התכנית שלך, במידה והייתה עובדת, הייתה מבצעת אך ורק את השלב הראשון, ולא מייחסת כלל חשיבות לשלב השני ובוודאי שלא לשלישי. אם תרצה, תוכל להגדיר משתנה בשם bdika_rishona, שבו תאוחסן תוצאת הבדיקה הראשונה, ומשתנה בשם bdika_shnia, שבו תאוחסן תוצאת הבדיקה השנייה. לבסוף, תוכל להגדיר משתנה בשם bdkia_sofit, שבו תאוחסן תוצאת בדיקת ההשוואה בין המשתנים bdika_rishona ו-bdika_shnia, ולהשתמש בו להצגת תוצאת הבדיקה הסופית.

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

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

בברכת שב"ש, אריה.

נ.ב: בגלל שאני מרגיש נדיב היום, הרשתי לעצמי לתקן לך את התכנית ולהעיר\להאיר לך בה בכל שורה. צפה בקישור המצ"ב, וקרא היטב את ההערות\הארות!
http://www.rafb.net/paste/results/5MT89O78.html


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
silvering 
חבר מתאריך 2.8.02
56 הודעות, דרג אמינות חבר זה
   16:56   06.05.06   
אל הפורום  
  15. תודה אחים שלי הכל עובד ממש תודה  
בתגובה להודעה מספר 0
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net