פורסם 2012 בנובמבר 1813 שנים שלום,יש לי בעיה בהדפסת מספרי ז'רמן (http://he.wikipedia.org/wiki/%D7%A8%D7%90%D7%A9%D7%95%D7%A0%D7%99_%D7%96'%D7%A8%D7%9E%D7%9F).התוכנית אמורה לקבל שני מספרים ולהדפיס את מספרי ז'רמן בטווחהתוכנית שכתבתי עוברת קומפילציה. הערכים שהכנסתי הם 1 ו 23כשעקבתי באמצעות הדיבאגר על ריצת התוכנית משום מה הוא נתקע לי בלולאת ה for על הערך 13.[color=rgb(51, 51, 51)][font=lucida grande][size=13px]#include <stdio.h>void main(){int num1,num2,i,temp1=0,temp2=0;printf("enter two numbers:");scanf("%d%d",&num1,&num2);if(num1<num2){for(i=num1;i<=num2;i++){temp1=2;while(temp1<i/2){if(i%temp1==0)break;elsetemp1++;if(temp1==(i/2-1)){temp1=2;temp2=(i*2+1);while(temp1<temp2/2){if(temp2%temp1==0)break;elsetemp1++;}}[/color][/font][/size][color=rgb(51, 51, 51)][font=lucida grande][size=13px]}if(temp1==(temp2/2-1))printf("%d",i);} }}[/color][/font][/size]
פורסם 2012 בנובמבר 1813 שנים מחבר אסור לי להשתמש במערכים או בפונקציות חיצוניות.הכל חייב להתבצע בפונקציית ה main
פורסם 2012 בנובמבר 1813 שנים א. הקוד שלך לא קריא בעליל. תשתמש בהזחות.ב. תדאג שאחרי כל if/while/for יהיו סוגריים מסולסלים, אחרת הקוד שלך הוא מתכון לאסון.ג. אל תשתמש ב-void main אלא ב-int main, ובסוף התוכנית שים ;return 0ד. שים לב שכשמחלקים מספר שלם בשלם, התוצאה מעוגלת כלפי מטה.
פורסם 2012 בנובמבר 1913 שנים מחבר אני משתמש בהזחות אבל משום מה גם שהשתמשתי בכפתור # בשביל לעלות את הקוד הוא ביטל לי את ההזחות. אם מישהו יודע איך אפשר לעלות עם ההזחות אני מאוד אודה לו.אני לא מבצע חלוקה בקוד בכלל אלא משתמש בפעולת השארית בלבד.תודה מראש לעוזרים
פורסם 2012 בנובמבר 1913 שנים ודאי שאתה משתמש בחלוקה, יש המון מקומות שבהם אתה מחלק ב-2 (אני לא טוען שזה מה שגורם לבעיה, פשוט זה משהו שצריך לשים לב אליו). באופן כללי עדיף לך להשתמש בכפל במקום בחלוקה - לדוגמה, במקום לבדוק אם x==y/2, עדיף לבדוק אם y==x*2.בכל מקרה, אני מאוד מאוד ממליץ שתוסיף סוגריים מסולסלים איפה שאמרתי.בלי קשר, הקוד שלך מאוד מאוד מסורבל, ולא ממש הבנתי מה הוא אמור לעשות... הרי האלגוריתם הבסיסי צריך להיות די פשוט (לכל i, לבדוק האם גם i וגם 2i+1 הם מספרים ראשוניים, וזהו). לדוגמה, אני רואה שאתה משתמש ב-temp1 בכמה לולאות מקוננות (בשני ה-whileים שמקוננים זה בתוך זה), מה שבסיכוי סביר גורם לבעיה שלך.
פורסם 2012 בנובמבר 2213 שנים מחבר תיקנתי את הקוד קצת ועכשיו הוא מדפיס רק את המספר 3 כאשר הקלט שלי למספר הקטן הוא 1 ולמספר השני הוא 23.למישהו יש כיוון לתת לי למה זה לא מדפיס את השאר. אני יודע שהכיוון פתרון שלי נכון ואני בטוח מחמיץ משהו קטן[size=1]#include <stdio.h>[/size][size=1] void main(){[/size][size=1] int num1,num2,i,j,k,temp1,temp2,check1=0,check2=0;;[/size][size=1] printf("enter two numbers:");[/size][size=1] scanf("%d%d",&num1,&num2);[/size][size=1] if(num1<num2){[/size][size=1] for(i=num1;i<=num2;i++){[/size][size=1] temp1=2;[/size][size=1] while(temp1<i){[/size][size=1] if(i%temp1==0)[/size][size=1] check1=1;[/size][size=1] else[/size][size=1] temp1++;[/size][size=1] if(check1==0){[/size][size=1] temp1=2;[/size][size=1] temp2=(i*2+1);[/size][size=1] while(temp1<temp2){[/size][size=1] if(temp2%temp1==0)[/size][size=1] check2=1;[/size][size=1] else[/size][size=1] temp1++;[/size][size=1] }[/size][size=1] }[/size][size=1] }[/size][size=1] if(check2==0)[/size][size=1] printf("%d",i);[/size][size=1] } [/size][size=1] }[/size][size=1] else{[/size][size=1] for(j=num1;j<=num2;i++){[/size][size=1] temp1=2;[/size][size=1] while(temp1<j){[/size][size=1] if(j%temp1==0)[/size][size=1] check1=1;[/size][size=1] else[/size][size=1] temp1++;[/size][size=1] if(check1==0){[/size][size=1] temp1=2;[/size][size=1] temp2=(i*2+1);[/size][size=1] while(temp1<temp2){[/size][size=1] if(temp2%temp1==0)[/size][size=1] check2=1;[/size][size=1] else[/size][size=1] temp1++;[/size][size=1] }[/size][size=1] }[/size][size=1] }[/size][size=1] if(check2==0)[/size][size=1] printf("%d",j);[/size][size=1] } [/size][size=1] }[/size][size=1] }[/size][size=1]}[/size]
פורסם 2012 בנובמבר 2213 שנים הקוד שלך לא קריא...תערוך אותו במצב תצוגת קודים (צריך ללחוץ על הכפתור שנראה כמו A אדומה) ואז זה יהיה יותר ברור.הבעיה היא (לדעתי) שהאלגוריתם שלך הרבה יותר מורכב ממה שהוא צריך להיות. נסה לתאר את האלגוריתם שלך במילים (כמו שעשיתי בהודעה הקודמת שלי).
פורסם 2012 בנובמבר 2213 שנים מחבר תודה על העזרה, הבעיה הייתה ששכחתי לאפס את אחד המשתנים בכניסה ללולאה(check)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.