פורסם 2010 במרץ 1415 שנים שלום רב,יש לי בעיה בחלוקת מספר לספרות.אם לדוגמא אני לוקח את המספר999999999 (9 פעמים9) printf("Enter number to 10 digitals\n"); scanf("%d",&p); a = (p % 10); b = (p % 100) / 10; c = (p % 1000) / 100; d = (p % 10000) / 1000; e = (p % 100000) / 10000; f = (p % 1000000) / 100000; g = (p % 10000000) / 1000000; h = (p % 100000000) / 10000000; j = (p % 1000000000) / 100000000; k = (p/1000000000);אז זה בסדר, וכל ספרה נכנסת למקומה ו k מקבל 0(כל אותו מקבלת 9 חוץ מK שמקבלת 0)אבל ברגע שאני שם9999999999 (10 פעמים 9)זה כבר לא עובד והכל מתחרבש...החלפתי את המשתנה P מסוג אינטגר ל9999999999(10 פעמים 9) וזה עבד...זאת אומרת שיש הפרעה כלשהי במשתנה...אז ניסיתי לשים אותו כ Long וזה גם לא עזר....אז אשמח לעזרתכם לפתור את הבעיהתודה רבה!
פורסם 2010 במרץ 1415 שנים int הוא בדרך כלל מספר בן 32 ביט, כלומר מספר בתחום 2147483648- עד 2147483647.אם אתה מנסה להכניס לו מספר יותר גדול מ-2147483647, אז תהיה לך גלישה ותקבל תוצאות לא צפויות.במקרה של unsigned int המספר הוא בין 0 ל-4294967295, וגם אז תהיה גלישה.המשמעות של long בד"כ משתנה ממערכת למערכת, יש מערכות שבהן long הוא 64 ביט, ויש מערכות שבהן long הוא 32 ביט (כמו int) ובשביל 64 ביט צריך להשתמש ב-long long.
פורסם 2010 במרץ 1515 שנים מחבר תודה רבה אך לא הולך לי.יש לך דרך אחרת לחלק את איברי מספר עד 10 ספרות לכל ספרה בנפרד?
פורסם 2010 במרץ 1515 שנים מה זה "לא הולך לי"?לא מתקמפל? מתקמפל אבל לא רץ? לא מציג תוצאות נכונות? באה גודזילה ואוכלת לך את המחשב?כמו שאמרתי קודם, אי אפשר להכיל מספר בן 10 ספרות בתוך int, אתה חייב להשתמש ב-long long או int64 (שהם אותו דבר).חוץ מזה, למה שלא תשתמש בלולאה (כל פעם תחלק את המספר ב-10)?
פורסם 2010 במרץ 1515 שנים מחבר לא הולך לי=לא משפיע על התוכנית השינוי של הLong longחוץ מזה שלא למדנו את זה אז אני מעדיף שלא להשתמש בזה.התוכנית בעיקרון היא:מקבלת מספר עד 10 ספרות בלבד ובודקת האם הוא פלינדרום ( Palindrome : קריאת הספרות שלו זהה בשני הכוונים) ומדפיסה הודעה מתאימה בשני המקרים .(אסור להשתמש במערכים)אז חילקתי את הספרות והתחלתי לעשות איפים בכדי לבדוק שיוויון בין ספרות לפי הסדר הנדרש.אם האיברים האחרונים שווים ל0 והראשון הוא ספרה אז זה לא פלינדרום.אשמח לדעתך בנושא והסבר כיצד לעשות זאת בתור לולאה.אני חדש בקטע הזה, אז כל דבר הוא מבחינתי בגדר לימוד ולכןלא עשיתי לולאה כי אני לא יודע איך זה ישפיע.
פורסם 2010 במרץ 1515 שנים בשביל לפתור את הבעיה על מספרים עם 10 ספרות או יותר, צריך אחד משני דברים:להשתמש בטיפוס שמסוגל להחזיק 64 ביט, כלומר long long, שלטענתך זה לא רלוונטי, אובכלל לא להשתמש במספרים, אלא לקלוט את המספר כמחרוזת. כיוון שלא למדתם מערכים, אני אניח שגם זה לא רלוונטי.יש איזו דרישה מיוחדת שאתה אמור להיות מסוגל לטפל במספרים גדולים?בכל מקרה, חפש קצת בפורום על איך מפרקים מספר לספרותיו. יש דרך מאוד פשוטה לעשות את זה עם לולאות.
פורסם 2010 במרץ 1515 שנים מחבר מספר עד 10 ספרות כולל ולא עם 10 ספרות או יותר.אשמח אם תפנה אותי לקישור מתאים.תודה רבה.
פורסם 2010 במרץ 1515 שנים בהנחה שאסור לולאות ומערכים: אפשר לקלוט את המספר ספרה ספרה, ופשוט להגדיר 10 משתנים ולהשוות ביניהם.בטח קיימים עוד פתרונות מבוססי רקורסיה, אבל אם אסור לולאות ומערכים אז כנראה רקורסיה לא באה בחשבון.
פורסם 2010 במרץ 1515 שנים מחבר גררר זה ממש מייאש!כל נסיון לגרום לתוכנה לקלוט מספר שהוא 10 ספרות גורר תקלה.בדבר הלקוט ספרה-ספרה- אי אפשר כי אם אני אשים 10 משתנים אחד ליד השני וזה שיכניס מספר לתוכנה ירצה מספר של 5 ספרות? התוכנה לא תמשיך עד שהיא תקבל את כל הספרות.
פורסם 2010 במרץ 1515 שנים תשאל את המורה שלך, ותבין יותר טוב מה הוא מצפה שתעשה.יכול להיות שהוא מצפה לקלוט רק מספרים עד טווח מסוים (2147483647 או 4294967295).
פורסם 2010 במרץ 1515 שנים למה לא לקלוט את המספר בתור string? אם בסך הכל אתה צריך להדפיס את המספרים בחזרה כשהם מופרדים... אתה יכול לקרוא אותם ככה char* str;scanf("%s",str);//could be scanf("%s",&str); can't remember//print the i-th charprintf("digit - %c",str[i-1]); אולי זה לא הכיוון של הספרות שאתה רוצה... אבל זה אמור לעבוד וגם עם יותר מ-10 ספרות בהצלחה, סיון
פורסם 2010 במרץ 1515 שנים אסור לו להשתמש במערכים. מחרוזת = מערך.חוץ מזה, בתכנית שלך יש באג, כי אתה מעביר מצביע לא מאותחל ל-scanf.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.