PDA

View Full Version : سوال: چرا بعضی از برنامه ها در پاسکال با 2 تا readlnکار می کنند.



som bejani
دوشنبه 24 آبان 1389, 20:38 عصر
سلام دوستان خسته نباشین برنامه هایی که من می نویسم بعضی هاشون با دوتا readlnکار می کنند یعنی اولی رو نمی خونه می پره رو دومی اما دلیل شو نمی دونم کسی هست که بدونه ؟

vcldeveloper
دوشنبه 24 آبان 1389, 22:02 عصر
کجا هست؟ یک نمونه اش رو اینجا قرار بدید که ما ببینیم. در ضمن، کامپایلر پاسکالتون رو هم مشخص کنید.

som bejani
جمعه 28 آبان 1389, 11:32 صبح
اینم یه نمونه از اون برنامه

Felony
جمعه 28 آبان 1389, 14:48 عصر
مشکل جای دیگه ای هست ، من کد شما رو تست کردم و readln دوم رو کامنت کردم هیچ مشکلی هم نداشت :

program example5;
var
i,temp:integer;
a:array[1..100] of integer;
begin
writeln('please enter 100 number:');
for i:=1 to 100 do
begin
read(a[i]);
if (i mod 10)=0 then
writeln;
end;
for i:=1 to 50 do
begin
temp:=a[101-i];
a[101-i]:=a[i];
a[i]:=temp;
end;
writeln;
writeln('The inversr of array');
for i:=1 to 100 do
begin
write(a[i]:5);
if (i mod 10)=0 then
writeln;
end;
readln;
//readln;
end.

xxxxx_xxxxx
جمعه 28 آبان 1389, 19:25 عصر
کامپایلر پاسکالتون رو هم مشخص کنید.
توی Turbo Pascal 7 این اتفاق میوفته.
این اتفاق زمانی رخ میده که شما قبلش ورودی تون رو با دستور Read دریافت کرده باشید. توی حلقه اول برنامه، بجای دستور Read از Readln استفاده کنید.

som bejani
شنبه 29 آبان 1389, 18:06 عصر
من اون کارو هم کردم(در حلقه اول به جای رید از رید ال ان استفاده کردم) این دفعه دیگه اصلا جواب نداد همون طوری تو صفحه اجرا می مونه و برنامه اجرا نمی شه.trase هم کردم .در ضمنیعنی چی که کامپایلتون رو مشخص کنید.درست معنی شو نمی دونم.:خجالت:

Mahmood_M
شنبه 29 آبان 1389, 18:16 عصر
در ضمنیعنی چی که کامپایلتون رو مشخص کنید.درست معنی شو نمی دونم.
یعنی اینکه از چه نرم افزاری برای نوشتن و اجرا کردن دستورات استفاده میکنید ؟

som bejani
شنبه 29 آبان 1389, 19:16 عصر
آهان توربو پاسکال هست.

xxxxx_xxxxx
یک شنبه 30 آبان 1389, 00:39 صبح
این دفعه دیگه اصلا جواب نداد همون طوری تو صفحه اجرا می مونه و برنامه اجرا نمی شه.منظورتون رو دقیق متوجه نشدم.
اما، احتمالاً شما اعداد رو به صورت سطری وارد می کنید. یعنی ده عدد رو در یک خط می نویسید، بعد Enter میزنید و باز دوباره ده عدد در سطر بعدی می نویسید. اینجا تفاوتی بین استفاده از دستور Read و Readln وجود داره. دقت کنید که شما هر بار با دستور Read فقط یک مقدار از ورودی میخونید. اگر بیشتر از یک مقدار در هر سطر وارد کنید، مقادیر بعدی در حافظه نگه داشته میشه تا بعداً در دستور های Read یا Readln بعدی قرار بگیره. اما وقتی Readln استفاده می کنید، ورودی های اضافی حذف میشه و در خونه های بعدی آرایه قرار نمیگیره (فقط مقدار اول در آرایه ذخیره میشه). بنابراین در هر سطر فقط یک عدد وارد کنید. یعنی بعد از هر عدد یک Enter بزنید تا حلقه دوباره اجرا بشه و روی Readln قرار بگیره.

حالا، دوباره Read رو به Readln تغییر بدید و اعداد رو ستونی وارد کنید. (یکی از Readln های اضافی آخر رو هم حذف کنید)

som bejani
یک شنبه 30 آبان 1389, 16:37 عصر
خیلی ممنونم ازتون حالا دیگه با یکی کار کرد.من به صورت ماتریسی وارد می کردم هیچ اتفاقی نمی افتاد.:تشویق: