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

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



  #8  
ישן 10-08-2015, 15:09
צלמית המשתמש של קוביבי
  משתמש זכר קוביבי קוביבי אינו מחובר  
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
 
חבר מתאריך: 07.10.04
הודעות: 13,777
LinkedIn profile
בתגובה להודעה מספר 7 שנכתבה על ידי Benjamin Willard שמתחילה ב "אמממ... פדגוגית זאת תשובה לא..."

מה ההבדל בין התשובה של שובי לזו של דור לזו שלי (שהיא לא תשובה, רק חיזוק לזו של דור)? בכולם מחסירים את ערך ה ascii של 0, לכן אם התשובה של שובי "נכונה פדגוגית" אז גם של כל אחד אחר,
בנוסף - כיצד זה לא נכון פדגוגית להסביר שמשתנה מסוג מצביע לאות (שמציין מחרוזת) שונה ממשתנה מסוג תו?
בנוסף (2) כיצד שימוש בפונקציית סיפרייה שאתה הבאת מתאימה לשאלה של פותח השאלה אשר מקבל כל תו בנפרד ומשנה אותו? אם רצית לתת תשובה פדגוגית היית אומר שלקבל את כל המחרוזת עם gets היה מתאים יותר, אבל גם-אז זה לא היה מתאים לפותח השאלה שכן לא היית יכול להגביל את המספר המתקבל או לשים לב מתי המקשים המיוחדים מתקבלים.
ובאמת? צריך להכיר ספרייה שלמה כדי לדעת איך לעבוד עם דברים שמוגדרים בה? אתה הכרת את כל iostream לפני שהשתמשת ב endl; בפעם הראשונה?
פדגוגית, מעשית, ווירטואלית ובכול צורה שלא תסתכל עליה - אין הבדל בין להחסיר '0' לבין לעשות פונקציה (או מאקרו) שמחסירים '0' ואז להפעיל אותו.

ועוד מילה על הפתרון שלך, להעביר char ל atoi ייגרום לתוכנה לקרוס כנראה, ככה זה שאתה שולח מחרוזת שהיא לא null terminated לפונקציה שמצפה לזה, ב-c יש הרבה פחות בדיקות תקינות מכול שפה עילית אחרת, פדגוגית זה קצת חשוב לשים לב לזה.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 07-08-2015, 06:26
צלמית המשתמש של ShoobyD
  משתמש זכר ShoobyD מנהל ShoobyD אינו מחובר  
מנהל משבראש, בלשנות, תכנות ויהדות
 
חבר מתאריך: 04.06.06
הודעות: 33,130
שלח הודעה דרך MSN אל ShoobyD Facebook profile LinkedIn profile Follow me...
בתגובה להודעה מספר 2 שנכתבה על ידי dorM שמתחילה ב "שפת C שונה משפות התסריט - כדי..."

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


shasho, בשפת C קבועי תווים הם למעשה מספרים לכל דבר, לפי ערך ה־ASCII שלהם; כך הם מיוצגים בזיכרון המחשב.
התו 'A' לדוגמא שקול לחלוטין למספר העשרוני 65
אם תכתוב:
  • char c = 'A';
  • char c = 65;
  • char c = 0x41;
כל אלו זהים, המחשב רואה אותם אותו הדבר, ההבדל הוא רק בעיניים שלנו
בשלושתם יש אותו קבוע מטיפוס int שמקוצץ לגודל של בית אחד כדי שיוכל להיכנס למשתנה c.

בהתאם לכך, הפקודה printf("%d", 'A')‎ תדפיס למסך את המספר 65
ולעומת זאת הפקודה printf("%c", 65)‎ תדפיס למסך את התו 'A'
הדבר היחיד שקובע מה יודפס הוא אך ורק מחרוזת פורמט ההדפסה שסיפקנו ל־printf.


אם נמשיך לפי אותו עיקרון:
  • תו הספרה '0' הוא למעשה המספר 48 (דצימלי)
  • התו '1' הוא המספר 49
    ..
  • התו '7' הוא המספר 55
    ..
  • התו '9' הוא המספר 57
ולכן אם רוצים לקבל את הערך הנומרי של תו ספרה מסוים, יש להפחית ממנו את התו '0', כי למשל:
'7' - '0' = 55 - 48 = 7
שים לב שהתו '0' שמוחסר פה אינו המספר 0, אלא '0'==48 כאמור לעיל.


באותו אופן, אם נרצה לדוגמא לקבל את התו בא״ב האנגלי שנמצא 3 תווים לאחר 'd' – נחברם, כי:
'd' + 3 = 100 + 3 = 103 = 'g'
ואם נרצה בכלל לוודא שהמשתנה digit מסמל באמת תו ספרה נוכל לכתוב את התנאי:
( digit>='0' && digit<='9'‎ )
זה הודות לכך שגם תווי הספרות וגם תווי הא״ב האנגלי מסודרים ברצף בקידוד ה־ASCII.


נערך לאחרונה ע"י ShoobyD בתאריך 07-08-2015 בשעה 06:47.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

הדף נוצר ב 0.08 שניות עם 10 שאילתות

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

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