پروژه: مدیریت نمرات
سیستم مدیریت نمرات دانشجویان با آرایهها: میانگین، بیشینه/کمینه، مرتبسازی و آمار.
پروژه ۳: سیستم نمرات 📊
پروژهای واقعی با آرایهها: نمرات کلاس را نگه دارید و آمار کامل بگیرید.
ویژگیها
- نگهداری نمرات در آرایه
- میانگین، بیشینه، کمینه
- شمارش قبول/مردود
- مرتبسازی نزولی
- گزارش فرمتبندیشده
کد کامل
program GradeSystem;
const
N = 8;
var
grades: array[1..N] of integer;
i, j, temp: integer;
function Average(const g: array of integer): real;
var
i: integer;
s: integer;
begin
s := 0;
for i := 1 to N do
s := s + g[i];
Result := s / N;
end;
function FindMax(const g: array of integer): integer;
var
i, m: integer;
begin
m := g[1];
for i := 2 to N do
if g[i] > m then m := g[i];
Result := m;
end;
function FindMin(const g: array of integer): integer;
var
i, m: integer;
begin
m := g[1];
for i := 2 to N do
if g[i] < m then m := g[i];
Result := m;
end;
function CountPassed(const g: array of integer): integer;
var
i, c: integer;
begin
c := 0;
for i := 1 to N do
if g[i] >= 10 then c := c + 1;
Result := c;
end;
procedure SortDesc(var g: array of integer);
var
i, j, temp: integer;
begin
for i := 1 to N - 1 do
for j := 1 to N - i do
if g[j] < g[j + 1] then
begin
temp := g[j];
g[j] := g[j + 1];
g[j + 1] := temp;
end;
end;
begin
{ داده نمونه }
grades[1] := 18; grades[2] := 9; grades[3] := 15;
grades[4] := 20; grades[5] := 7; grades[6] := 12;
grades[7] := 16; grades[8] := 11;
writeln('===== GRADE REPORT =====');
write('Grades: ');
for i := 1 to N do
write(grades[i]:4);
writeln;
writeln('Average: ', Average(grades):0:2);
writeln('Max: ', FindMax(grades));
writeln('Min: ', FindMin(grades));
writeln('Passed: ', CountPassed(grades), ' of ', N);
SortDesc(grades);
write('Sorted: ');
for i := 1 to N do
write(grades[i]:4);
writeln;
end.
ساختار پروژه را ببینید
هر کار یک تابع/رویه است: Average، FindMax، FindMin، CountPassed، SortDesc — برنامه اصلی فقط فراخوانی میکند. این همان برنامهنویسی ساختیافته است که پاسکال پادشاهش است!
چالشهای تکمیلی
- اسم دانشجویان را با آرایه رشتهای نگه دارید
- معدل حرفی (A/B/C) با case تعیین کنید
- هیستوگرام نمرات با ستاره چاپ کنید
- جستجوی نمره خاص با binary search (بعد از مرتبسازی!)
چه یاد گرفتیم؟
- آرایه + رویهها = سیستم واقعی
- توابع آماری (avg/max/min/count)
- مرتبسازی در عمل
- گزارش فرمتبندیشده
این مبحث بخشی از دوره آموزش کامل پاسکال است.