פורסם 2005 בדצמבר 1819 שנים 1.השאלות שלי ככה:אחרי שאני מבצע % 2 על מספר מסויים, איך אני מקבל את הערך אחרי השארית?לדוגמא: אם ביצעתי על 2 % 9 אז השארית = ל1 והערך שנשאר אחרי השארית הוא 4...2.אני צריך לקבל מספר כלשהו ולבדוק האם הוא עשרוני הוא בינארי איך אני יכול לבדוק זאת?
פורסם 2005 בדצמבר 1819 שנים 1. x / y בין שתי INTEGER יתן את החלוקה בלי השארית. x % y בין שתי INTEGER יתן את השארית בלבד.2. כדי לבדוק האם מספר x הוא בבסיס b. תבצע לולאה שבכל פעם עושה x % b, אם התוצאה של זה גדולה/שווה מ b אזי הוא לא בבסיס הזה. לאחר מכן תעדכן את x = x / b.3. אם הגעת לסוף x וכל התוצאות היו קטנות מ b, אזי הוא בבסיס הנ"ל.
פורסם 2005 בדצמבר 1819 שנים פשוט תדפיס אותו ? מה זה משנה באיזה בסיס הוא ? או שיש לך מספר בבסיס אחר שאתה רוצה להמיר לבסיס בינארי ואז להציג ?
פורסם 2005 בדצמבר 1819 שנים מחבר אני מקבל עשרוני ואמור להציג אותו כבינארי...לפי השיטה שלך הוא יציג אותו אבל בסדר הפוך...
פורסם 2005 בדצמבר 1819 שנים מחבר לא הבנתי למה אתה מתכווין...בקיצור איך אני מקבל מספר עשרוני ומציג אותו כבינארי....1. x / y בין שתי INTEGER יתן את החלוקה בלי השארית. x % y בין שתי INTEGER יתן את השארית בלבד.2. כדי לבדוק האם מספר x הוא בבסיס b. תבצע לולאה שבכל פעם עושה x % b, אם התוצאה של זה גדולה/שווה מ b אזי הוא לא בבסיס הזה. לאחר מכן תעדכן את x = x / b.3. אם הגעת לסוף x וכל התוצאות היו קטנות מ b, אזי הוא בבסיס הנ"ל.זה יהיה בעייתי עם המספר 10 100 וכו' כי הם תקינים כעשרוניים וגם כבינאריים...לעומת 01 שלא תקין...
פורסם 2005 בדצמבר 1819 שנים 1. לא הבנתי בדיוק מה אתה רוצה, מן הסתם כל מספר שתקין בבסיס X יהיה תקין בכל בסיס מעליו...אי אפשר להבדיל. ואם אתה קובע ש 01 לא תקין, הוא לא תקין באף בסיס...2. לגבי הצגת מספר, אני מניח שאת האלגוריתם הבנת, אז אחרי שיש לך את התוצאה ההפוכה, אתה פשוט יכול להפוך אותה לתוך משתנה שהוא ההפך (כל שארית מהראשון תכפיל ב 10 * המיקום בשני).
פורסם 2005 בדצמבר 1819 שנים מחבר אוקיי...אז איך אני מקבל מספר בינארי והופך אותו לעשרוני?איך בכלל משתנה יכול לשמור מספר כזה למשל:01010110 ואיך אני מפרק אותו והופך אותו לעשרוני...
פורסם 2005 בדצמבר 1819 שנים אתה יכול לעשות מערך של אותיות/אינטגרים שכל איבר בו הוא ספרה.אתה לא מכיר את האלגוריתם להפוך מספר מבסיס לבסיס ?
פורסם 2005 בדצמבר 1919 שנים מחבר אני צריך לפתור את התרגיל ללא מערך...ואני לא מכיר את היישום של האלגוריתים בשפת C....
פורסם 2005 בדצמבר 1919 שנים ל-PRINTF יש אפשרות להדפיס את המספר באיזה בסיס שאתה רוצה.לא מדויק, אפשר רק בסיסים סטנדרטיים (עשרוני, הקסדצימלי ואוקטלי).אני צריך לפתור את התרגיל ללא מערך...ואני לא מכיר את היישום של האלגוריתים בשפת C....אז תדפיס את המספר ביט-ביט, מהסוף להתחלה:int get_bit(int x, int bit_num) { return (x >> bit_num) & 1;}void print_bin(int x) { if (x == 0) { // במקרה שהמספר הוא 0, סתם להדפיס 0 printf('0'); return; } int i = sizeof(x)*8 - 1; // להתחיל הביט העליון ביותר במספר for ( ; (i >= 0) && (get_bit(x,i) == 0) ; --i); // לדלג על כל ביטי האפס for ( ; i >= 0 ; --i) { printf("%d", get_bit(x,i)); }}הפונקציה get_bit מחזירה את הביט במקום ה-i (כאשר 0 הוא הביט הימני ביותר)והפונקציה print_bin מדפיסה את המספר, תוך שהיא מדלגת על האפסים שבהתחלה.
פורסם 2005 בדצמבר 1919 שנים או פשוט:void print_bin(int x){if(x==0)printf("0");//else כמובן שלא חייביםprint_bin(x/10);printf("%d", x%10);}שניצל: אם כבר- מה יותר יעיל, להדפיס '0' או "0"?האם בזמן ריצה זה משנה, או רק בקומפילציה?
פורסם 2005 בדצמבר 2019 שנים איכס, רקורסיה קודם כל, אתה צריך לעשות שאם x==0 אז הוא יצא מהרקורסיה (כלומר חייבים else) חוץ מזה, שים לב שאם x!=0, אז הפונקציה תדפיס לך 0 מיותר בסוף... פתרון אפשרי הוא להוסיף פרמטר לפונקציה שאומר לה מה לעשות אם x==0 (להדפיס 0 או לא), שהערך הדיפולטי שלו הוא true, ובתוך הפונקציה היא תקרא לו עם false. תיאורטית נראה לי שיותר יעיל להדפיס '0', אבל אני לא יודע אם מעשית יש הבדל (יכול להיות שהקומפיילר מייעל את זה). אפשר לבדוק תקמפל את שתי האפשרויות ותשווה את האסמבלי שיוצא. בכל מקרה, זה זניח לעומת הזמן שלוקחת ההדפסה עצמה... (הדפסה לוקחת כמה אלפי קלוקים)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.