PDA

View Full Version : سوال: وارد کردن اعداد در آرایه دوبعدی با InputBox



Fastdesign
شنبه 12 آذر 1390, 23:26 عصر
سلام
برای وارد کردن اعداد در آرایه یک بعدی با InputBox به این صورت عمل می کنم :
MyList[I] := StrToInt(InputBox('ورود اعداد','لطفا عدد مورد نظر را وارد نمایید','1'));
ولی حالا می خوام در آرایه دوبعدی اعداد وارد کنم !!
حالا باید چجوری براش بنویسم؟
با تشکر

SAASTN
یک شنبه 13 آذر 1390, 01:31 صبح
MyList[I][J] := StrToInt(InputBox('ورود اعداد','لطفا عدد مورد نظر را وارد نمایید','1'));
یا
MyList[I, J] := StrToInt(InputBox('ورود اعداد','لطفا عدد مورد نظر را وارد نمایید','1'));

Fastdesign
یک شنبه 13 آذر 1390, 13:00 عصر
این نجوری که درست :
ولی منظورم این بود که من آرایه ای را با این مقدار معرفی کرده ام :
A:array[1..4,1..3] of Integer;
و حالا می خوام برای سطرها و ستون هاش با InputBox جداگانه اعداد وارد کنم :
طوری که یک InputBox برای سطرهاش و یک InputBox برای ستون هاش بیاد

SAASTN
یک شنبه 13 آذر 1390, 19:02 عصر
لطفا بیشتر برای بیان مسئله وقت بذارید، توضیحات به هیچ عنوان گویا نیست، حتی از ترکیبش با پست قبلی هم چیزی دستگیرم نمیشه، فقط از بعضی جملات یه سری حدس های ضعیف میشه زد. اگر فکر می کنید بیشتر از این نمیشه توضیح داد با مثال مطلب رو بیان کنید. البته شایدم من مغزم قفل کرده و نمی تونم متوجه بشم.
ببین شما برای پر کردن اون آرایه دو بعدی باید 12 مقدار مختلف از کاربر بگیری، حالا چطور می خوای با 2 بار فراخونی InputBox این کار رو انجام بدی؟ حداکثر کاری که میشه کرد اینه که مثلا مقادیر درایه های هر سطر (یا ستون) رو با یه InputBox از کاربر بگیری، به نحوی که کاربر این مقادیر رو با کاما از هم جدا کنه و بعد رشته رو با تابع SplitString به زیر رشته ها تقسیم کنی.

Fastdesign
یک شنبه 13 آذر 1390, 22:23 عصر
شرمنده!!!
منظور من اینه که با این آرایه 3*4 می خوام اعداد سطر و ستون را جداگانه وارد کنم.
من به این صورت نوشتم ولی خوب جواب نمیده :
var
A:array[1..4,1..3] of Integer;
i,j:Integer;
begin
for I := 1 to 3 do
for j := 1 to 4 do
A[i,j]:=strtoint(InputBox('ورود اعداد','گلطفا عدد مورد نظر را وارد نمایید',''));
for I := 1 to 3 do
for j := 1 to 4 do
StringGrid1.Cells[i-1,j-1]:=inttostr(a[i,j]);

end;
مثلا : وقتی [3,2]A را می خوام در خروجی برام نمایش بده عدد دیگه را برام نمایش میده.
با تشکر

SAASTN
دوشنبه 14 آذر 1390, 01:26 صبح
شما بازه های I و J رو توی حلقه ها برعکس در نظر گرفتین، یا باید شمارنده حلقه ها جابجا بشن (مثل کد پائین) یا باید بجای A[I, J] بنویسید A[J, I] در واقع کدی که قرار دادین بعضی مقادیر رو خارج از رنج تعریف آرایه پر می کنه و بعضی مقادیر آرایه رو پر نمی کنه، اگه از منوی Project\Options و در بخش Compiling گزینه Check Ranging رو True کنید خطای زمان اجرا اتفاق میافته. کد صحیح با فرض اینکه بعد اول متناظر با ستون ها و بعد دوم متناظر با سطر ها باشه به اینصورته:
var
A: array [1 .. 4, 1 .. 3] of Integer;
I, J: Integer;
begin
for J := 1 to 3 do
for I := 1 to 4 do
A[I, J] := strtoint(InputBox('ورود اعداد',
'گلطفا عدد مورد نظر را وارد نمایید', ''));
for J := 1 to 3 do
for I := 1 to 4 do
StringGrid1.Cells[I - 1, J - 1] := inttostr(A[I, J]);
end;