נשלח בתאריך: 07 February 2010 בשעה 02:05 | | IP רשוּם
|
|
|
|
בס"ד
הנה פתרון ללא רשימות ואפי' ללא מערכים. לולאות מקוננות בלבד:
/* With God's help. */
# include <stdio.h> # include <conio.h>
void main() { int num, tmpNum, finalNum = 0, tmpFinal, digitsCount = 0, i; double j = 1;
clrscr();
printf("Enter a num "); scanf("%d", &num); tmpNum = num;
// מציאת מס' הספרות while(tmpNum) { tmpNum /= 10; digitsCount++; }
/* יצרנו משתנה 'סופי' שישמור מס' המורכב מספרות בלתי כפולות. בתחילה ערכו 0 השלבים: 1. נפרק את המספר הנקלט מספר פעמים כמספר ספרותיו בכל פעם נמצא את הספרה הבאה בתור- מהראשונה ואילך שלב 2. נפרק את המשתנה ה'סופי' לספרותיו ונבודקן אחת-אחת אם אינן זהות לספרה הנ"ל שלב 3. אם לא- נוכל להוסיף את הספרה הזו ל משתנה ה'סופי' הנ"ל */ for(i = 0; i < digitsCount; i++) { tmpNum = num; tmpFinal = finalNum; j *= 10;
while(tmpNum > j) tmpNum /= 10; // Step 1.
while(tmpFinal) { if(tmpNum % 10 == tmpFinal % 10) break; // Step 2.
tmpFinal /= 10; }
if(!tmpFinal) // Step 3 { finalNum *= 10; finalNum += (tmpNum % 10); } }
printf("%d", finalNum);
getch(); }
|