פורסם 2008 בנובמבר 2017 שנים בוקר טוב,שאלה חדשה לשבוע, אני אמור לכתוב תכנית אשר מקבלת מספר והופכת אותו למס' רומי יש לי את הגדרת האותיות המקבילות ל-1000 500 וכו'.השאלה היא איך לפרק את המס' שהתקבל ע"י המשתמש ולתרגם לפלט של אותיותעזרה בבקשה.
פורסם 2008 בנובמבר 2017 שנים עם איזו שפה אתה עובד? TCL, PERL, PASCAL, ASEMBEL?אההה הבנתי, אנחנו אמורים לנחש לבד.כעקרון הלוגריתם של שליפת הספרות זה שארית של חלוקה בעשר, בדרך כלל שארית מוצאים על ידי % (אבל זה כמובן תלוי בשפה שאתה עובד בה)
פורסם 2008 בנובמבר 2017 שנים מחבר visual c++בכל מקרה אתה מתכוון למודולו?זא"מ קיבלתי את המס' 2500 הפלא יראה כ-MMDאז איך אני יודע שיש לי שני אלפים וכן הלאה
פורסם 2008 בנובמבר 2017 שנים באופן כללי זה אמור להיראות ככהint achadot, asarot, meot, alafim;int num = 2500;achadot = num %10;num = num /10;asarot = num %10;num = num /10;meot = num %10;num = num /10;alafim = num %10;זה כמובן בצורה בסיסית.
פורסם 2008 בנובמבר 2017 שנים מחבר הבנתי מה כוונתך אבל עוד שאלה, המשתמש מזין קלט לדוג'1078 התכנית צריכה לפרק את המס'להפלא יראה כך:MLXXVIIIM=1000L=50X=10V=5I=1זה הקושי שלי להבין את הנושא של איך התכנה תבין באמת כמה אלפים כמה מאות וכמה אחדות אם יש בכלל מס' בגודל כזה[br]פורסם בתאריך: 20.11.2008 בשעה 08:34:52טוב, ניסיתי את הרעיון שלך והוא עובד חלקית ז"א הצלחתי לפרק את המס' והפלט הראה באמת אותו מס' שהוקש עכשיו כנראה אני צריך צובר לכל ספרה אלפים מאות וכו כדי שיוציא כפלט את המס' הרומי הנכון, איך אני משנה זאת?#include <stdio.h>int main(){ int num,i_ac=0; int achadot=0,asarot=0,meot=0,alafim=0; int M=1000,D=500,C=100,L=50,X=10,V=5,I=1; printf("Enter Natural Number\n"); scanf("%d",&num); if (num <= 5000) { achadot = num % 10; num = num / 10; asarot = num % 10; num = num / 10; meot = num % 10; num = num / 10; alafim = num % 10; printf("%d%d%d%d\n",alafim,meot,asarot,achadot); } else printf("Error Please Enter Numbers Under 5000\n");}
פורסם 2008 בנובמבר 2017 שנים קיבלת מה הגודל של כל ספרה, אז אתה יכול לפענח אותה,אבל האמת שאתה לא חייב לפרק את המספר לפי השיטה העשרוניתהינה זה אמור לעשות ישירות int num = 2500; char romi[100] = ''; int i = 0; while (num > 0) { if (num >= 1000) { romi[i] = 'M'; num = num - 1000; romi[ ++i ] = 0; continue; } if (num >= 900) { romi[i] = 'C'; romi[++i] = 'M'; romi[++i] = 0; num = num -900; continue; } if (num >= 500) { romi [i] = 'D'; romi[++i] = 0; num = num -500; continue; } if (num >= 400) { romi[i] = 'C'; romi[++i] = 'D'; romi[++i] = 0; num = num -400; continue; } if (num >= 100) { romi [i] = 'C'; romi[++i] = 0; num = num -100; continue; } if (num >= 90) { romi[i] = 'x'; romi[++i] = 'C'; romi[++i] = 0; num = num -90; continue; } if (num >= 50) { romi [i] = 'L'; romi[++i] = 0; num = num -50; continue; } if (num >= 40) { romi[i] = 'X'; romi[++i] = 'L'; romi[++i] = 0; num = num -40; continue; } if (num >= 10) { romi [i] = 'X'; romi[++i] = 0; num = num -10; continue; } if (num >= 9) { romi[i] = 'I'; romi[++i] = 'X'; romi[++i] = 0; num = num -9; continue; } if (num >= 5) { romi [i] = 'V'; romi[++i] = 0; num = num -5; continue; } if (num >= 4) { romi[i] = 'I'; romi[++i] = 'V'; romi[++i] = 0; num = num -4; continue; } if (num >= 1) { romi [i] = 'I'; romi[++i] = 0; num = num -1; continue; } }
פורסם 2008 בנובמבר 2017 שנים פתרון סבבה. מאוד ישיר.רק כמה הערות:א. למה להשתמש ב-continue, במקום פשוט לעשות else if?ב. למה כל פעם להציב 0 בסוף, ולא פשוט להציב 0 בסיום הלולאה? זו סתם עבודה מיותרת.ג. כנראה יש דרך קצת יותר "קומפקטית" שתמנע מהרבה ifים (באמצעות מערכים שיחזיקו את המספרים 1000,900 וכו' ומערכים שמחזיקים את הערכים שלהם בספרות רומיות).
פורסם 2008 בנובמבר 2017 שנים ואם אתה לא יודע איזה מספר זה ומבקשים ממך לעשות לו פסיקים ? 1000 1,000?מי שמצליח מקבל ממני שקל..
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.