Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2009, 15:56   #1
Ukkas
Новичок
Джуниор
 
Регистрация: 17.01.2009
Сообщений: 2
Лампочка Требуется занести данные с клавиатуры в массив записей, упорядочить его по фамилиям в алфавитном порядке

Помогите пожалуйста с задачей:
Данные о сотрудниках содержат фамилию и оклад (целое число превышающее 50 000)
Требуется занести данные с клавиатуры в массив записей, упорядочить его по фамилиям в алфавитном порядке и вывести список для премирования. Установить премию, равной трем окладам.
Ограничение:
Число сотрудников не больше 7.
Порядок ввода данных:
- число сотрудников
- последовательность строк, содержащих фамилию и оклад, разделенные пробелом.

Я немного решила, осталось только упорядочить

program zapisi1;
const nmax=7;
type
Trab = record
name:string[30];
oklad:longint;
end;
Var
rab: Trab;
firma: array [1..nmax] of Trab;
s:string;
n, i, j, code:integer;
o:longint;
begin
writeln ('Записи 1');
repeat
write ('Введите число сотрудников ');
readln (n);
If (n < 1) Or (n > nmax) Then
writeln ('Ошибка ');
{endif}
until (n>=1) and (n<=nmax);
for i:=1 to n do begin
write ('Введите данные', i, 'сотрудника ');
readln (s);
for j:=1 to length(s) do
if s[j] = ' ' then begin
firma[i].name := copy (s, 1, j);
delete (s, 1, j);
val (s, o, code);
If code = 0 Then
firma[i].oklad := o;
{endif}
end;
{end}
end;

{Упорядочивание}

writeln ('Список на премирования:');
for i:=1 to n do
writeln (firma[i].name, firma[i].oklad);
{endfor}
writeln;
end.

Спасибо.

Последний раз редактировалось Ukkas; 17.01.2009 в 16:34.
Ukkas вне форума Ответить с цитированием
Старый 17.01.2009, 17:50   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот доделал, немного поправил по своему.
Код:
program zapisi1;
uses crt;
const nmax=7;
type Trab = record
            name:string[30];
            oklad:longint;
            prem:longint;
            end;
Var rab: Trab;
    firma: array [1..nmax] of Trab;
    s:string;
    n, i, j, code:integer;
    o:longint;
begin
clrscr;
writeln ('Записи 1');
repeat
write ('Введите число сотрудников ');
readln (n);
If (n < 1) Or (n > nmax) Then
writeln ('Ошибка ');
until (n>=1) and (n<=nmax);
for i:=1 to n do
   begin
    write ('Введите данные', i, 'сотрудника ');
    readln (s);
    firma[i].name := copy (s, 1, pos(' ',s)-1);
    delete (s, 1,pos(' ',s) );
    val (s, o, code);
    If code = 0 Then
    firma[i].oklad := o;
    firma[i].prem:=firma[i].oklad*3;
  end;
{Упорядочивание}
for i:=1 to n-1 do
for j:=i+1 to n do
if firma[i].name>firma[j].name then
   begin
    rab:=firma[i];
    firma[i]:=firma[j];
    firma[j]:=rab;
   end;

writeln ('Список на премирования:');
for i:=1 to n do
writeln (firma[i].name,' Oklad=',firma[i].oklad,'  Premia=',firma[i].prem);
readln
end.
puporev вне форума Ответить с цитированием
Старый 17.01.2009, 19:18   #3
Ukkas
Новичок
Джуниор
 
Регистрация: 17.01.2009
Сообщений: 2
По умолчанию

Спасибо большое, оказывается с упорядочиванием все намного проще, чем я думала. Просто обычная сортировка..
Ukkas вне форума Ответить с цитированием
Старый 17.01.2009, 19:22   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Конечно обычная сортировка, только в случае с записями по значениям одного из полей сортируются сами записи вместе со всеми полями. А сравнение и сортировка строковых переменных совершенно аналогична сортировке чисел.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить слова в алфавитном порядке sasha45 Общие вопросы C/C++ 36 20.06.2011 11:03
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
дан текстовый массив из 200 букв. Выстроить в алфавитном порядке все строчные буквы Тина Помощь студентам 6 02.07.2008 22:53
отсортировать таблицу сначала в алфавитном порядке фамилий продавцов, затем в порядке возростания получен Lora Microsoft Office Excel 1 31.05.2008 17:22