יש לי שגיאה בתוכנת פסקל - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

יש לי שגיאה בתוכנת פסקל


משיקומי

Recommended Posts

אני כרגע מנסה להכין תוכנית שמחפש מספרים ראשוניים וכותבת אותם (לא תוכנה מסחרית, סתם בשביל הכיף)

ויש לי שגיאות. מישהו יכול להגיד לי מה לא טוב פה??:

Program Tamir;
Uses Crt;
Var
X,Y: integer;
ANSWER: char;
Begin
clrscr;
X:= 2;
Y:= 2;
Writeln ('Do you realy want to find First Numbers??');
Readln (ANSWER);
If (ANDWER ='n') Then EXIT
Else Begin
Writeln ('If you want to STOP press S');
Repeat Begin
If (X/Y mod 0) Then (X:=X+1,Y:=2)
Else (Y:=Y+1);
If (Y:=X) Then Writeln (X,' is a First Number);
End;
Until Readln ('S')
End;
Readln;
END.

קישור לתוכן
שתף באתרים אחרים

  • תגובות 30
  • נוצר
  • תגובה אחרונה

כן. לדעתי סתם סיבכתה, ויש לך די הרבה טעויות, למשל אתה צריך לכתוב X mod Y=0 ובתנאי השני אתה בעצם קולט את Y לתוך X, כך שהתנאי יהיה נכון תמיד. עדיף שתעשה לולאת FOR, שבה תבדוק עם המספר מתחלק בכל מספר עד שורשו, ואם הוא לא, אז הוא מספר ראשוני.

קישור לתוכן
שתף באתרים אחרים

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

If (Y:=X) Then Writeln (X,' is a First Number);

תשים גרש אחרי Number.

שמתי, אבל יש עוד שגיאה.

כן. לדעתי סתם סיבכתה, ויש לך די הרבה טעויות, למשל אתה צריך לכתוב X mod Y=0 ובתנאי השני אתה בעצם קולט את Y לתוך X, כך שהתנאי יהיה נכון תמיד. עדיף שתעשה לולאת FOR, שבה תבדוק עם המספר מתחלק בכל מספר עד שורשו, ואם הוא לא, אז הוא מספר ראשוני.

תיקנתי את המוד, אבל עדיין יש עוד שגיאה .

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

תודה לכל מי שתיקן אותי.

עריכה:

ואה, ממבט מהיר, אין לך input, output' אחרי ה. PROGRAM

וזה גם לא משנה ב 99.99% מהמקרים.

קישור לתוכן
שתף באתרים אחרים

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

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


program ww;
var
num,sum,i,j:integer;
begin
j:=1;
sum:=0;
writeln('Enter a Number:');
readln(num);
for i:=1 to num do
begin
while i mod j<>0 do j:=j+1;
if (i=j)
then begin
writeln(i);
sum:=sum+1;
end;
j:=2;
end;
writeln;
writeln('The Number of "First Numbers" is ',sum,', Press Enter to Exit.');
readln;
end.

קישור לתוכן
שתף באתרים אחרים

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

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


program ww;
var
num,sum,i,j:integer;
begin
j:=1;
sum:=0;
writeln('Enter a Number:');
readln(num);
for i:=1 to num do
begin
while i mod j<>0 do j:=j+1;
if (i=j)
then begin
writeln(i);
sum:=sum+1;
end;
j:=2;
end;
writeln;
writeln('The Number of "First Numbers" is ',sum,', Press Enter to Exit.');
readln;
end.

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

התוכנה שלך מעולה, אבל ערכתי אותה ככה שתכתוב במקום

 Writeln (i) זה יהיה write (i,', ')

עכשיו, משהו שחשוב לי שיהיה בתוכנה. איך אני אעשה שהתוכנה תפעל עד שלוחצים על S וENTER?

קישור לתוכן
שתף באתרים אחרים

לגבי השאלה הראשונה - תיצור קובץ טקסט, תעתיק לשם את התוכנית ותשמור אותה עם סיומת pas.

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

קישור לתוכן
שתף באתרים אחרים

לגבי השאלה הראשונה - תיצור קובץ טקסט, תעתיק לשם את התוכנית ותשמור אותה עם סיומת pas.

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

מה?? היה פעם לשכן שלי כלב האסקי.

קישור לתוכן
שתף באתרים אחרים

מה?? היה פעם לשכן שלי כלב האסקי.

זה לא האסקי, זה אסקי, הוא רק שם את המילה יחד עם "ה" הידיעה.

קוד אסקי זה קוד של כל התווים שיש לך במחשב.

(דרך אגב, ניראה לי ששמונה זה ציפצוף של הרמקול הפנימי או משהו בסיגנון).

אני כבר עברתי 3 יחידות בפסקל, קיבלתי בהן 100 עגול.

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...