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

בעיה בפסקל


MATTAN

Recommended Posts

היי מה קורה

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

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

ויש לי בעיה בקימפול זה רושם ERROR IN STATMENT

הינה הקוד

var
yxy:longint;
begin
write('enter the password: ');
readln(yxy);
if yxy = 1000 then
begin
writeln('this is the right password');
end
else
begin
writeln('this is the wrong password');
readln;
end;
var
xyx:longint
begin
repeat
writeln('access denied',xyx);
xyx:=1000;
until xyx=1000;
end.

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

אני לא בטוח שהבנתי מהקוד מה בדיוק ניסית לעשות אבל תנסה את זה

var
yxy:longint;

begin
repeat
write('enter the password: ');
readln(yxy);
if yxy = 1000 then
begin
writeln('this is the right password');
end else
begin
writeln('this is the wrong password');
readln;
end;
until xyx=1000;
end.

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

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

לדעתי יותר פשוט להוסיף משתנה BOOLEAN ולעבוד עם לולאת WHILE:

אתה מציב בתחילת התוכנית FALSE בBOOLEAN ואז לולאת WHILE:

WHILE B=false DO (כאשר B זה המשתנה שמוגדר כBOOLEAN)

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

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

אני לא בטוח שהבנתי מהקוד מה בדיוק ניסית לעשות אבל תנסה את זה

var
yxy:longint;

begin
repeat
write('enter the password: ');
readln(yxy);
if yxy = 1000 then
begin
writeln('this is the right password');
end else
begin
writeln('this is the wrong password');
readln;
end;
until xyx=1000;
end.

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

^^^^^^^^^^

סתם ביזבוז של שורות קוד ותנאי לוגי מיותר

אתה בודק פעמיים אם הססמא נכונה... בשביל מה???(גם מה שיאיר גובני כתב זה בזבוז של מקום יקר בזיכרון)

זה עדיף

var
yxy:longint;

begin
repeat
write('enter the password: ');
readln(yxy);
until xyx=1000;
write('correct ');
end.

אגב עדיף שססמא תהיה מחרוזת ולא מספר

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

ממש לא(מזמן כבר אין לי קומפיילר פסקל)

איזה שגיאה הוא מוציא לך על הקוד שלי?(ובאיזה שורה?)

אולי היה צריך Begin ו-end; בין ה-repeate וה-until?? אני פשוט כבר לא זוכר תנוסח אבל ניראה לי שזאת הבעיה

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

אין שום בעיה עם הקוד של Burton, פשוט הוא רשם XYX במקום YXY בUNTIL.

הנה הקוד ה"מתוקן":

var

yxy:longint;

begin

repeat

write('enter the password: ');

readln(yxy);

if yxy = 1000 then

begin

writeln('this is the right password');

end else

begin

writeln('this is the wrong password');

readln;

end;

until yxy=1000;

end.

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

http://study.eitan.ac.il/sites/index.php?portlet_id=110516

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

אין שום בעיה עם הקוד של Burton, פשוט הוא רשם XYX במקום YXY בUNTIL.

אופס :-X

מה שגם מראה לך למה חשוב לתת למשתנים שמות עם משמעות ולא סתם אותיות

עריכה*

var
yxy:longint;

begin
repeat
write('enter the password: ');
readln(yxy);
if yxy = 1000 then
begin
writeln('this is the right password');
end else
begin
writeln('this is the wrong password');
readln;
end;
until yxy=1000;
end.

זה לא הקוד שלי

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

הנה הקוד שלי מתוקן

var
yxy:longint;

begin
repeat
write('enter the password: ');
readln(yxy);
until yxy=1000;
write('correct ');
end.

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

ארכיון

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

×
  • צור חדש...