נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: תוכנית בשפת C שאני מעוניין לשכלל

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
lirany
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 15 March 2005
משתמש: מנותק/ת
הודעות: 49
נשלח בתאריך: 23 June 2005 בשעה 19:51 | IP רשוּם
ציטוט lirany

פונקציה המקבלת ארבעה מספרים: sum, a, b, וc, כולם גדולים מ 0.
נתון כי
a b ו c קטנים (כל אחד מהם) מ sum.
על הפונקציה למצוא את כל האופנים בהם ניתן לקבל את
sum תוך סכימה של a, b ו c.

עבור כל אופן שכזה – על הפונקציה להדפיס שורה מתאימה – ראו בדוגמת ההדפסה שכאן.
אין כל הגבלה על מספר הפעמים בהם ניתן להשתמש בכל אחד מהמספרים
a, b ו c.
ה
prototype של הפונקציה:           void find(int sum, int a, int b, int c);

אני מעוניין לשפר  את הקוד שנכתב  בכך שלא יבוזבז זמן מחשב על חיפושי צירופים שברור כי אין להם סיכוי.ובכלל קוד הקצר ביותר

קוד:
#include <stdio.h>
#include <conio.h>
void find(int,int,int,int);


int main()
{
    int sum,a,b,c;
    clrscr();
    printf("enter the sum: ");
    scanf("%d",&sum);
    printf("\nenter 3 numbers: ");
    scanf("%d%d%d",&a,&b,&c);
    find(sum,a,b,c);
    getch();
    return 0;
}


void find(int sum , int a,int b,int c)
{
    int i,j;
    for(i=0 ; i<sum ; i++)
    for(j=0 ; j<sum-i*a-j*b ; j++)
            if((sum-(i*a+j*b))%c==0)
                  printf("%d can be achieved by: %d of %d, %d of %d, %d of %d\n",
                sum, i, a, j ,b, (sum-i*a-j*b)/c,c);
}

 

חזרה לתחילת העמוד הצג את כרטיס החבר של lirany חפש הודעות אחרות של lirany
 
Nameless
אחראי פורומים
אחראי פורומים


הצטרף / הצטרפה: 08 March 2005
מדינה: Armenia
משתמש: מנותק/ת
הודעות: 69
נשלח בתאריך: 24 June 2005 בשעה 04:46 | IP רשוּם
ציטוט Nameless

ניסיתי לתקן את היישור לימין הזה ולעשות אותו לשמאל, לא הולך
:(
בכל מקרה תיקנתי קצת.
אם חירבשתי תגיד.
בינתיים נבדוק ונחזור אליך.



__________________
meow
חזרה לתחילת העמוד הצג את כרטיס החבר של Nameless חפש הודעות אחרות של Nameless
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 24 June 2005 בשעה 05:36 | IP רשוּם
ציטוט ניר

תשתמש ב-backtracking, זה יהיה הפתרון

__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
lirany
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 15 March 2005
משתמש: מנותק/ת
הודעות: 49
נשלח בתאריך: 24 June 2005 בשעה 20:43 | IP רשוּם
ציטוט lirany

??gnicartkcab

התכוונת לגבי התוכנית???

כן התיקון מוצלח תודה גבר...

חזרה לתחילת העמוד הצג את כרטיס החבר של lirany חפש הודעות אחרות של lirany
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 24 June 2005 בשעה 21:08 | IP רשוּם
ציטוט ניר

לגבי התוכנית, כן.. אתה נכנס ברקורסיה, ואם אתה מגיע למצב שאתה כבר יודע שהמצב לא חוקי ואין טעם להמשיך, אתה פשוט חוזר שלב אחורה ומנסה אפשרות נוספת, וככה אתה מסנן אפשרויות שבברור אינן רלוונטיות

__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
lirany
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 15 March 2005
משתמש: מנותק/ת
הודעות: 49
נשלח בתאריך: 24 June 2005 בשעה 22:35 | IP רשוּם
ציטוט lirany

אז יש מצב לשיפור הקוד?

תוכל לרשום זאת בבקשה?

 

חזרה לתחילת העמוד הצג את כרטיס החבר של lirany חפש הודעות אחרות של lirany
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה