בעיה בקוד C

בעיה בקוד C

התוכנה אמורה לקחת את כל המספרים הראשוניים ולהדפיס אותם אבל בינתיים שידפיס 0 במקום מספרים פריקים . עכשיו לפני לולאת פור i=2 ואז הוא נכנס ובלי שום קוד הוא גורם ל-i=max אני מצרף את הקוד בתקווה שתעזרו סימנתי לפני איזה לולאה
 

The Albatross

New member
../images/Emo26.gif

יכול להיות שזה קשור ללולאה הראשונה שלך?
for(i=0;is_valid[max-i]=!is_valid[1];i++)​
לא אמור להיות
for(i=0;is_valid[max-i]==!is_valid[1];i++)​
?
 
בעייה שנייה

טוב אז התוכנה עובדת וכבר לא מדפיסה אפסים במקום מספרים פריקים אבל הבעייה עכשיו היא בקלט והפלט : קלט : 9 פלט: 2,3,5,7 שזה נכון אבל קלט: 7 פלט: 2,3,5 זה מתעלם מה-MAX מה אני צריך לשנות כדי שזה יעבוד
 

vinney

Well-known member
נסה פה

במקום
for(i=2;i<max;i++) { if(is_valid!=0) printf("%d ",is_valid); }

נסה
for(i=2;i<=max;i++) { if(is_valid!=0) printf("%d ",is_valid); }

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

עכשיו אני רוצה לעשות שהמערך יהיה בגודל של Max לומר יקלוט את MaX ואז יעשה את המערך שיהיה בגודל הזה (Max+1) אני ניסיתי לעשות כך : קודם לקלוט ואז שורה אחרי זה לרשום int is_valid[max] ; o.k וזה לא ממש עבד , רעיונות אחרים ? אה ואני יודע שיש דרכים אחרות לגלות מספרים ראשוניים אבל ביקשו ממני לגלות בדרך הזאת,בגלל זה זה לא הפתרון הכי יעיל שאפשר לעשות
 

vinney

Well-known member
ברור שזה לא עובד

max זה משתנה זמן ריצה, ואילו שימוש ב [] דורש הקצאת זכרון בזמן קומפילציה, כשערך של max לא מוגדר. מה שאתה צריך לעשות זה הקצאה דינמית בעזרת malloc.
 
למעלה