مشاهده نسخه کامل
: مشخص کردن نمره سومین نفر در توربو پاسکال
hadi_vazi
18-02-2012, 15:17
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام یه پروژه دارم که تا 4 شنبه باید تحویل بدم نمی دونم این سوالو کجا بپرسم اگه امکانش هست همین جا جوابمو بدید.
من می خوام تو برنامه توربو پاسکال برنامه ای بنویسم که نمره 10 تا دانشجو رو بگیره و سومین نمره کلاس رو چاپ کنه یعنی نمره سوم تو محدوده خاصی نباشه هر نمره ای بود فقط اگه سومین بود چاپ بشه.
تا یه حدی با آراریه آشنائی دارم فقط نمیدونم چطور برای برنامه معلوم کنم سومین نمره کدومه.
delphidark
18-02-2012, 23:23
خیلی سادست دوست عزیز
یک آرایه 10 عنصری تعریف کنید و بعد مقادیر دریافتی رو به ترتیب در خانه های آرایه قرار بدین
مرحله بعد هم Sort کردن آرایه هست و در نهایت چاپ ایندکس سوم آرایه در خروجی
برای آشنایی با آرایه ها و Sort کردنشون در پاسکال اینجا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])رو مطالعه کنید
اگر مشکلی بود بفرمایید
موفق باشید.
hadi_vazi
19-02-2012, 01:11
داداش دستت واقعا درد نکنه خودم دارم روش کار میکنم که ببینم چیکار میکنم با آموزشیی که گذاشتید فقط میشد توی سورس برنامه 10 تا نمره رو وارد کرد و sort کرد و نمیدونم چطور باید سومین نمره رو بهش خرفهم کنم من میخوام بعد اجرای برنامه 10 تا نمره رو بدم بعد sort بعد سومین نفر رو برام مشخص و چاپ کنه. اگه زحمت بکشید سورسش رو برام بذارید که مطمئن بشم دارم درست کار میکنم ممنون میشم چون این 4 شنبه باید پروژمو تحویل بدم زیاد وقت ندارم.
delphidark
19-02-2012, 11:22
وقتی شما اعداد رو گرفتین و Sort هم کردین اصل کار رو انجام دادین
برای چاپ سومین نمره هم بعد از Sort شدن آرایه میتونید ایندکس سومش رو چاپ کنید :
فرضا اگر اسم آرایتون a باشه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
hadi_vazi
19-02-2012, 18:26
آخه من که گفتم تونستم sort کنم ولی وقتی که نمره هارو تو سورس برنامه نوشته باشم ولی من اینجوری نمی خوام میخوام نمره هارو بعد از اجرای برنامه بهش بدم بعد از دادن نمره اونا رو sort کنه و سومی رو چاپ کنه اینو بلد نیستم.
delphidark
20-02-2012, 11:00
میخوام نمره هارو بعد از اجرای برنامه بهش بدم بعد از دادن نمره اونا رو sort کنه.
برای گرفتن اعداد در هنگام اجرای برنامه میتونید از یک حلقه For استفاده کنید و در این حلقه با دستور Readln ورودی صفحه کلید رو در آرایه قرار بدید به این شکل :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در ادامه هم که Sort کردن و نمایش ایندکس سوم آرایه که خودتون بلد هستین
موفق باشید.]
hadi_vazi
20-02-2012, 11:27
من این طور نوشتم و ظاهرا سورت هم می شه :
Program test;
uses wincrt;
var
input:array[1..20] of real;
i,j:Integer;
tmp:real;
begin
writeln('Enter 20 Course');
for i:=1 to 20 do
readln(input[i]);
for i:=1 to 20 do
for j:= i to 20 do
begin
if input[i] > input[j] then
begin
tmp:=input[i];
input[i]:=input[j];
input[j]:=tmp;
end;
end;
writeln('Third course is =',input[3]: 6 : 2);
end.
ولی با این سورس فقط آرایه ای که دفعه سوم وارد کردم رو نشون میده به جای اینکه سومین نمره کلاس رو نشون بده چه تغییری بدم که بفهمه منظور من از 3ومین نمره چیه؟
delphidark
20-02-2012, 12:40
دوست عزیز کد رو درست نوشتین
فقط به یک نکته توجه نکردین که به صورت صعودی Sort کردین نمرات رو ... در نتیجه سومین نمره از آخر رو میده به شما
میتونید ایندکس دریافتی رو تغیر بدین (مثلا برای 20 تا نمره به جای 3 بنویسید 17) یا اینکه نحوه Sort کردن رو به صورت نزولی تغییر بدین(> رو با < تعویض کنید)
موفق باشید.
hadi_vazi
20-02-2012, 13:30
داداش من با اون سورس با تغییری که شما گفتید هم جواب نگرفتم یه تغییر دیگه دادم:
Program test;
uses wincrt;
var
i,j:integer;
x:array[1..20] of real;
y:real;
begin
writeln('Enter 20 Course');
for i:=1 to 20 do
readln(x[i]);
for i:=1 to 18 do
for j:= i+1 to 20 do
begin
if x[i]>x[j] then
begin
y:=x[i];
x[i]:=x[j];
x[j]:=y;
end;
end;
writeln('third course is =',x[i]: 6 :2);
end.
با این تغیر تا یه جای بیشتری کارم راه افتاد .
با این تغیر نمره ها رو شورت میکنه و سومین عدد رو نمایش میده ولی باز یه مشکل دارم .
مثلا اگه 5 تا نمره بود و نمره ها هم اینا بود:
10
12
14
14
15
با این نمره ها در اصل باید نمره 12 رو چاپ کنه که سومین نمره کلاسه ولی اسن سورس عدد 14 رو نشون می ده چون بعد سورت 14 سومین رقم سورت شدست .
حالا چطور بهش بفهمونم که سومین عدد از لحاظ بزرگی رو از سورت برداره؟:41:
به خدا شرمندم نمی خوام اذیتتون کنم.
delphidark
20-02-2012, 18:12
اختیار داری دوست عزیز خوشحال میشم کمکی بکنم
تو این کد که تو آخرین پستتون گذاشتین Sort دیگه درست نیست کد پست قبلی صحیح بود
به هر حال من همون کد خودتون رو تو پاسکال کپی کردم + یکم اصلاح
و بدون مشکل عمل میکنه
کد رو به صورتی تغیر دادم که تعدا کل نمرات هم اول برنامه گرفته بشه .
کد + فایل اجراییش رو از اینجا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])دانلود کنید
موفق باشید
hadi_vazi
20-02-2012, 19:06
داداش واقعا زحمت کشیدی به خدا روم نمی شه بگم ولی این جواب نداد دقیقا مشکل برنامه خودم رو داره.
مثلا این چند تا عددی که من میدم رو شما هم بده ببین درست در میاد یا نه:
من 5 تا نمره رو انتخاب کردم به ترتیب:
10
12
11
12
12
این پنج تا رو که به تریتیب بدید باید سومین نمره کلاس که 10 باشه رو نشون بده ولی اون 12 رو نشون می ده چون:
بعد از سورت به این شکل در میاد:
10
11
12
12
12
و سومین عدد هم 12 هست ولی سومین نمره 10 هست من نمیخوام سومین عدد رو چاپ کنه می خوام سومین نمره کلاس رو چاپ کنه.
به خدا شرمندتم من خودمم گیرم دقیقا همین جاست حالا چه با اون کدی که اول دادم چه با دومی هر دو اشتباه در میاد هر کدوم شما میگید درسته همونو تغییر بدید لطفا فرقی برام نداره.
delphidark
21-02-2012, 13:24
درسته در صورت وارد شدن اعداد غیر یکتا به عنوان نمرات ؛ پاسخ اشتباه میشه
برای حل این مشکل خیلی ساده میشه مقادیر تکراری رو از آرایه حذف کرد و مقادیر یکتا رو در یک آرایه جدید قرار داد و نهایتا سومین نمره رو هم از همین آرایه جدید خوند
البته بهتر بود این قسمت رو خودتون بهش اضافه میکردین اما با توجه به اینکه دیگه وقتی ندارین
این کد کامل و تست شده :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید
hadi_vazi
21-02-2012, 13:44
این کد کاملا درست بود کارت درست بود. داداش به خدا نمی دونم چطور ازتون تشکر کنم ممنون واقعا لطف بزرگی در حقم کردید - چند روزی داشتم دیوونه می شدم هر کاری میکردم جور در نمیومد شاید باور نکنید ولی واسه اکثر بچه های کلاس پروژه شونو من انجام دادم ولی تو مال خودم مثل خر موندم .
خیلی خیلی ممنون ان شالله بتونم جبران کنم .
hadi_vazi
21-02-2012, 14:45
یه سوال تو خط های آخر یه جا نوشتید inc(j) جریان این چیه؟
چه دستوریه؟
delphidark
21-02-2012, 19:20
خواهش میکنم دوست عزیز کاری نکردم ، لطف داری شما
دستور Inc که مخفف Increase هست پارامتری که بهش داده میشه رو یک واحد افزایش میده .
همواره موفق باشی .:11:
hadi_vazi
21-02-2012, 22:57
خیلی صبر و حوصله داری به خدا من هر جی سوال میکنم جواب میدی بابا دمت گرم خودمم در حق خودم اینقدر لطف نمیکنم مرسی.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.