פורסם 2015 באפריל 710 שנים שלום לכולם, אני חדש בתחום ואין לי שום ידע מקדים. ביקשו מאינו לכתוב תכנית שמקבלת מספר שלם כלשהו ומקבלת גם ספרה בין 1-9 ואז התכנית צריכה להוציא את הספרה מהמספר. לדוגמה אם הכנסתי את המספר 648 ואת הספרה 4 אז התכנית צריכה להדפיס 68. התוכנית צריכה להשתמש רק בלולאות while,for, do. זה אחד הניסיונות שלי הוא נכנס ללולאה אינסופית ולא ממש ברור לי למה. הצלחתי להגיע למצב שזה מדפיס לי את הספרות אבל אם במספר שהמשתמש מכניס יש אפס אז זה עשה לי בלאגן וגם זה הדפיס את הספרות הפוך. אשמח לעזרה...תודה מראש וחג שמח. while (num1 > 0) { while ((num1 % 10) == digit) { num1 = (num1 / 10); } while ((num1 % 10) != digit) printf("%d", num1 % 10); num1 = (num1 / 10); }
פורסם 2015 באפריל 710 שנים כמה דברים. 1.שים לב שלא שמת סוגריים בלולאה השנייה.2.תחשוב מה קורה כשnum1%10=0 בלולאה השנייה ותבין מדוע זה נכנס ללואה אין סופית.3.עבור הספרות הפוך אני מאמין שתיהיה יצירתי ותמצא פתור4.בטוח שאי אפשר להשתמש ב if?? , כי לעשות לולאת while בתפקיד של if זה דיי מכוער
פורסם 2015 באפריל 710 שנים מחבר דבר ראשון תודה רבה על התגובה המהירה!בסוף ביררתי ומותר לנו להשתמש בדברים שלמדנו בעבר ככה שמותר להשתמש בתנאים.הצלחתי להגיע לתוצאה מספקת אבל היא לא עובדת עם כל המספרים. אם המספר ארוך אז היא מוציאה פלט לא קשור.יש דרך לשנות את זה?הקוד: int num1, digit, num2=0, ctr = 1, temp; printf("choose a number:\n"); scanf_s("%d", &num1); printf("choose a digit:\n"); scanf_s("%d", &digit); while (num1 != 0) { temp = num1 % 10; if (temp != digit) { if (temp != 0) { num2 = num2 + (temp*ctr); ctr = ctr * 10; } } num1 = num1 / 10; } printf("%d", num2);
פורסם 2015 באפריל 710 שנים יש גבול על גודל של מספרים, לדוגמה int שהוא 32 ביט הוא לכל היותר 2 בחזקת 31 פחות 1. אתה יכול לנסות להדפיס את num1 אחרי שאתה קורה אותו כדי לוודא שהוא נופל בטווח הנכון (אם מה שהודפס זהה למה שהוכנס אז זה בסדר).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.