פורסם 2010 באפריל 2915 שנים אהלן!אני רוצה לכתוב תכנית שתקלוט מספר שלם למשל 1234 ותבדוק את הזוגיות / אי-זוגיות של כל אחת מהספרות שמרכיבות את המספר.למשל כאן:1 - אי זוגי2 - זוגי3 - אי זוגי4 - זוגיכל מספר זוגי מבחינתי שווה 1+ נקודה וכל אי-זוגי 1- נקודה, לכן הניקוד של המספר 1234 הוא 0.יש רעיונות איך אני יכול לעבור סיפרה סיפרה? (אני לא יודע מראש את גודל המספר. זה יכול להיות 1234 וזה יכול להיות 983768903)
פורסם 2010 באפריל 2915 שנים זה די פשוט, יש לך הרי אופרטור של שארית. תשתמש בו כל פעם על המספר שהוא INTEGER, וחשב את הMODULU 10, שהוא ספרת האחדות שלך. אותה תעשה מודולו 2, קיבלת 0 תוסיף 1 למשתנה צובר, קיבלת 1 תוריד 1 מהצובר. חלק את המשתנה ב10, ותחזור על התהליך עד שהמספר שווה ל0.
פורסם 2010 באפריל 2915 שנים מצחיק שאתה שואל, כי בדיוק אתמול מישהו שאל שאלה דומה.http://hwzone.co.il/community/index.php?topic=458854.0
פורסם 2010 באפריל 2915 שנים רקרוסיהint zug (int a){if ( a==0) return 0;int z;z= (a & 1) ? -1 : 1;return z + zug(a/10);}
פורסם 2010 באפריל 3015 שנים מחבר תודה על העזרה חברים!ירח אפל, לא הבנתי חצי ממה שכתבת ???a זה המספר למשל 1234? למה return 0? אפס הוא מספר זוגי בעקרון.והכי חשוב - z= (a & 1) ? -1 : 1;לא הבנתי מה קורה כאן. אני בכלל לא מכיר כזה אופרטור של סימן שאלה
פורסם 2010 באפריל 3015 שנים כי הרקורסיה צריכה לעצור איפשהו. תחשוב שהקוד יהיה:if (a==0) return 1;אז מה תהיה תוצאת הפעלת הפונקציה על המספר 5?חוץ מזה, הפעולה לא ממש מוגדרת היטב על 0, כי טכנית אין לו ספרות בכלל.אופרטור סימן שאלה ונקודתיים זה אופרטור שמקבל תנאי ושני ביטויים. אם התנאי הוא אמת אז הביטוי הראשון מוחזר, אחרת הביטוי השני מוחזר.
פורסם 2010 במאי 115 שנים sharonp,אומנם אני בשלבים ראשוניים של למידת C, אבל אנסה את כוחי...כך הייתי כותב את זה:#include<stdio.h>void main(){ int num, digit; printf("Enter an integer number...\n"); scanf("%d", &num); do { digit=num%10; (digit%2==0)?printf("%d is even.\n", digit):printf("%d is odd.\n", digit); num=num/10; }while (num>0);}ניסיתי לקמפייל וזה עבד לי.עריכה...עכשיו ראיתי שרצית גם לעשות צבירת ניקוד חיובי על מספר זוגי, וניקוד שלילי על ספרה אי זוגית...הנה הקוד המתוקן:#include<stdio.h>void main(){ int num, digit, sum=0; printf("Enter an integer number...\n"); scanf("%d", &num); do { digit=num%10; if (digit%2==0) { printf("%d is even.\n", digit); sum++; } else { printf("%d is odd.\n", digit); sum--; } num=num/10; }while (num>0); printf("Number total score is %d", sum);}
פורסם 2010 במאי 115 שנים שים לב כי אם תקח 1 פחות פעמיים השארית של כל ספרה מודולו 2, תקבל את ה"ניקוד" שלה. לכן, הנה קוד אלגנטי לחישוב מהיר של הניקוד הכולל של המספר:int main(){ int input, digit, score=0; printf("Enter a number:\n"); scanf("%d",&input); while (input!=0) { score+=1-2*((input%10)%2); input=input/10; } printf("Number's score is: %d.\n",score);}
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.