پروژه: مدیریت نمرات

سیستم مدیریت نمرات دانشجویان با آرایه‌ها: میانگین، بیشینه/کمینه، مرتب‌سازی و آمار.

پروژه ۳: سیستم نمرات 📊

پروژه‌ای واقعی با آرایه‌ها: نمرات کلاس را نگه دارید و آمار کامل بگیرید.

ویژگی‌ها

کد کامل

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 — برنامه اصلی فقط فراخوانی می‌کند. این همان برنامه‌نویسی ساخت‌یافته است که پاسکال پادشاهش است!

چالش‌های تکمیلی

  1. اسم دانشجویان را با آرایه رشته‌ای نگه دارید
  2. معدل حرفی (A/B/C) با case تعیین کنید
  3. هیستوگرام نمرات با ستاره چاپ کنید
  4. جستجوی نمره خاص با binary search (بعد از مرتب‌سازی!)

چه یاد گرفتیم؟

این مبحث بخشی از دوره آموزش کامل پاسکال است.

ابزارهای مرتبط