PDA

View Full Version : مشخص کردن نمره سومین نفر در توربو پاسکال



hadichaloos
یک شنبه 30 بهمن 1390, 01:49 صبح
سلام یه پروژه دارم که تا 4 شنبه باید تحویل بدم نمی دونم این سوالو کجا بپرسم اگه امکانش هست همین جا جوابمو بدید.
من می خوام تو برنامه توربو پاسکال برنامه ای بنویسم که نمره 20 تا دانشجو رو از ورودی بگیره و سومین نمره کلاس رو چاپ کنه یعنی نمره سوم تو محدوده خاصی نباشه هر نمره ای بود فقط اگه سومین بود چاپ بشه.
20 تا نمره رو میخوام بعد از اجرا شدن برنامه خودم بهش بدم نه اینکه از قبل تو سورس برنامه نوشته شده باشه.
اگه امکانش هست سورس برنامه رو بهم بدید چون وقت زیادی برای یادگیری ندارم.

pezhvakco
یک شنبه 30 بهمن 1390, 17:36 عصر
اگه امکانش هست سورس برنامه رو بهم بدید
نه امکانش نیست .
با یه حلقه (For یا While) تعداد نمره مورد خواسته رو بگیر و در آرایه بریز .
سپس آرایه رو براساس نمره ها مرتب کن.
نمره مورد نظر رو بدست بیار .

کد های این سه کار در کتاب پاسکال وجود داره و فقط نیاز داره در پاسکال نوشته بشه .

hadichaloos
یک شنبه 30 بهمن 1390, 18:07 عصر
مشکلم اینه که نمیدونم چطور نمره ها رو sort و بگم سومین رو برام چاپ کنم /البته وقتی 20 تا نمره رو توی سورس برنامه بنیسم بلدم چطور sort کنم ولی وقتی نمره ها رو بعد اجرای برنامه بهش بدم نمیدونم چطور sort کنم.

Mask
یک شنبه 30 بهمن 1390, 18:25 عصر
نیازی به سورت ندارید.
زمانی که اندیس های آرایتون رو با مقدار پر کردید واسه دسترسی به سومین اندیس آرایه مینویسید :

ArrayName[3]
ArrayName نام آرایتونه.

hadichaloos
یک شنبه 30 بهمن 1390, 22:32 عصر
آخه اگه سورت نکنم بنویسم سومین آرایه رو چاپ کن شاید سومین آرایه سومین نمره کلاس نباشه منظورم از سومین نمره از بالا به پائینه یعنی اگه 12 و 18 و20 و 16 و14 داشتیم نمره 16 رو که چهارمین بار وارد کردیم ولی نمره سومه رو چاپ کنه نمیدوننم منظورم رو فهمید؟
اصلا شاگرد سوم کلاس رو مشخص کنه اینجوری فکر کنم بهتر باشه.

tiphooo
دوشنبه 01 اسفند 1390, 01:07 صبح
Program test;
var
input:array[1..10] 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 %f=') input[3]
end.
شاید یک سری کدها را با C++ قاطی کردم ولی اول به ترتیب صعودی ارایه را مرتب می کنیم بعد قاعدتا ایندکس سوم نمره سوم خواهد بود
از مرتب سازی حبابی استفاده شده

hadichaloos
دوشنبه 01 اسفند 1390, 12:37 عصر
اون سورسی که بهم دادید یه جاهائیشو تغییر دادم و کارم راه افتاد ولی یه مشکل دیگه هم داره اونم اینه که اگه به فرض
مثلا برای 5 تا نمره مثلا این ها باشه:
5
10
10
11
9
سومین نمره کلاس میشه 9
ولی این بهمون 10 رو نشون می ده چون سورت شده و 3ومین عدد سورت شده هم میشه 10
چطور بهش بفهمونم که عدد سوم سورت شده از لحاظ بزرگی رو می خوام نه سومین عدد سورت شده.

tiphooo
دوشنبه 01 اسفند 1390, 21:06 عصر
برای این موردی که گفتید سومین عدد 10 است نه 9 ولی منظورتون رو متوجه شدم
برای اینکار به جای این کد
writeln('Third course is %f=') input[3] این را قرار بده
j:=1;
k:=input[1];
for i:=2 to 20 do
begin
if input[i] > k then
begin
k:=input[i];
j:=J+1;
end;
if j=3 then
break;
end;
writeln('Third course is %f=') input[i]
با خروج از حلقه i مقدار سومین نمره را دارد ولی ممکن است i ایندکس سوم نباشد
فرض کنید نمرات به ترتیب 5,9,9,10,12 باشد نمره سوم کلاس 10 است
در اینجا ما k را برابر 5 قرار داده و مقدار ان را با اعداد مابعد خودش مقایسه می کنیم اگر عدد بعدی بزگتر از k است مقدار فعلی k برابر آن عدد قرار گرفته و به j یک واحد اضافه می شود زمانی که مقدار ورودی با K برابر باشد به J چیزی اضافه نشده و به عبارتی از روی آن رد می شود
K را هم در قسمت متغبرها از نوع Real تعریف کن

hadichaloos
سه شنبه 02 اسفند 1390, 10:40 صبح
ممنون از زحمتت ولی اون دستور break رو که گذاشتید اشتباه نیست ؟
هیچ رقمه تو این برنامه کار نمیده همش ایراد میگیره .
مجبورم پاکش کنم و وقتی هم که پاک می شه بازم وضعیت قبلی رو داره.

tiphooo
سه شنبه 02 اسفند 1390, 14:12 عصر
به جای If j=3 then break; و حلقه FOR می توانی از While استفاده کنی به صورت
j:=1;
k:=input[1];
i:=2
while (j <> 3) and (i<20) do
begin
if input[i] > k then
begin
k:=input[i];
j:=J+1;
end;
i:=i+1;
end;
writeln('Third course is %f=') input[i

hadichaloos
سه شنبه 02 اسفند 1390, 18:58 عصر
داداش واقعا ممنون از لطفت و پیگیریت ممنون کارم راه افتاد هم با سورسی که شما دادید هم با یه سورس دیگه واقعا از کسائی که راهنمائیم کردن که پروژه ام رو تموم کنم ممنون دیگه دقیقه نود کارم راه افتاد فردا باید پروژه رو میدادم.