עבור לתוכן

בעיה בפתירת תוכנית פשוטה של מערך דו-מימדי &#14

Featured Replies

פורסם

program t;

type

darray=array [1..5,1..5] of integer;

function ipus(ar:darray):integer;

var

i,j:integer;

begin

for i:=1 to 5 do

for j:=1 to 5 do

ar[i,j]:=0

end;

procedure getnums(var ar1:darray);

var

i,j:integer;

begin

for i:=1 to 5 do

for j:=1 to 5 do

read(ar1[i,j])

end;

procedure print_col(ar2:darray);

var

i,j:integer;

begin

for j:=1 to 5 do

writeln(ar2[i,j])

end;

var

i,j,b:integer;

ar:darray;

begin

ipus(ar);

getnums(ar);

b:=1;

i:=1;

while i<=5 do

b:=1;

for j:=1 to 5 do

if (ar[i,j]<5) OR (ar[i,j]>10)

then b:=1

else b:=2;

if b=2

then print_col(ar);

i:=i+1;

end.

------------

ויתרתי על

B

כבוליאני כי לא הסתדר לי משהו

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

הנה המשימה שהיא אמורה לבצע:

כתוב תוכנית הבודקת עבור כל טור במערך אם הוא מכיל את כל המספרים מ-5 עד 10

ומדפיסה את הטורים המקיימים תנאי זה.

תודה לכל המגיבים.

פורסם

(עכשיו זה אני עם המשתמש הרגיל שלי)

למה? היא דווקא כן מקבלת ... זאת פרוצדורה שמדפיסה ושמתי אותה בתוך לולאה של J מ 1 עד 5 את הזימון של הפרוצדורה

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

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

אז איך אני שומר את זה... חשבתי בבוליאני אבל לא הלך לי... אני לא יודע מה לעשות..

ועשיתי את ה ן+ כדי לעבור שורה הלאה כדי לבדוק את העמודה הבאה

פורסם

טוב, אני אנסח את עצמי מחדש:

print_col לא מקבלת i.

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

במבט יותר מעמיק, הנה הבעיה שלך - לא השתמשת בכלל ב-begin ו-end בתוך הלולאות שבתכנית הראשית.

מה שקורה הוא שבתוך ה-while נמצאת אך ורק השורה b:=1, ושאר השורות נמצאות מחוץ לו.

בגלל זה, i תמיד נשאר 1 ולא יעבור את 5, ולכן תישאר תקוע בלולאה לנצח...

חוץ מזה, שים לב שאתה לא בודק את העמודה מכילה את כל המספרים מ-5 עד 10, אלא אם כל המספרים שבעמודה הם בין 5 ל-10 (שים לב להבדל...)

ארכיון

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

דיונים חדשים