Паскаль, создание списка. Подскажите, как сделать функцию сортировки учеников по...

0 голосов
45 просмотров

Паскаль, создание списка. Подскажите, как сделать функцию сортировки учеников по алфавиту, добавление нового ученика в середине программы и как удалять учеников? Желательно более простые способы. const m=100; type Mass = array[1..m] of string; var k: mass; n,k: byte; procedure Creat; var i:integer; begin write('введите кол-во учеников: '); readln(n); for i:= 1 to n do begin write('введите ФИО:'); readln(k[i]); end; end; procedure out; var i:integer; begin writeln('Список класса:'); for i:= 1 to n do writeln(k[i]); end; procedure menu; begin writeln('1, Создание списка класса'); writeln('2, Вывод списка класса'); writeln('6, EXIT'); end; var kom: byte; begin repeat menu; readln(kom); case kom of 1: creat; 2: out; //3: sort; // 4: dobavit; // 5:delet; 6: exit; end; until kom = 6; end.


Информатика (41 баллов) | 45 просмотров
Дан 1 ответ
0 голосов

Ответ:

На PascalABC.NET можно так:

var k: array of string;

procedure CreatOrAdd(add: boolean);

begin

 var i,n: integer;

 write('введите кол-во учеников: ');

 readln(n);

 if (add) then  

   begin

     setlength(k,k.Length+n);

     for i:= 0 to n-1 do  

       begin

       write('введите ФИО:');

       readln(k[k.Length-n+i]);

       end;

   end

 else  

   begin

   setlength(k,n);

   for i:= 0 to n-1 do  

     begin

     write('введите ФИО:');

     readln(k[i]);

     end;

   end;

end;

procedure out;

begin

 try

   writeln('Список класса:');

   for var i:= 0 to k.Length-1 do writeln(k[i]);

 except

   on e: System.Exception do writeln(e.Message);  

 end;

end;

procedure menu;

begin

writeln('1, Создание списка класса');

writeln('2, Добавление');

writeln('3, Удаление');

writeln('4, Вывод списка класса');

writeln('5, EXIT');

end;

procedure delet;

begin

 var n: integer;

 write('введите номер удаляемого ученика: ');

 readln(n);

  try

   if (n

   k := k.Where(t -> t<>k[n-1]).ToArray()

   else writeln('Ошибка');

 except

   on e: System.Exception do writeln(e.Message);  

 end;

end;

var

kom: byte;

begin

repeat

menu;

readln(kom);

case kom of

1: creatoradd(false);

2: creatoradd(true);

3: delet;

4: out;

5: exit;

end;

until kom = 5;

end.

Если будут вопросы, спрашивайте.

(2.5k баллов)