Программа в Паскале. Даны фамилии 10 сотрудников и зарплаты каждого. Вывести фамилию...

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

Программа в Паскале. Даны фамилии 10 сотрудников и зарплаты каждого. Вывести фамилию сотрудника с наименьшей зарплатой


Информатика (20 баллов) | 70 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
const
  n=10;
 
type
  Sot=record
  fam:string;
  zp:integer;
  end;  

begin
  var Sotr:=new Sot[n];
  Writeln('Вводите фамилию и через пробел зарплату');
  for var i:=0 to n-1 do begin
    var s:=ReadlnString(i+1+':');
    var ms:=s.Split;
    (Sotr[i].fam,Sotr[i].zp):=(ms[0],StrToInt(ms[1]));
    end;
  var r:=Sotr.OrderBy(x->x.zp).First;
  WritelnFormat('{0} получает всего лишь {1}',r.fam,r.zp)
end.

Тестовое решение:
Вводите фамилию и через пробел зарплату
1: Иванов 32000
2: Петров 28000
3: Козлов 34000
4: Сидорова 41400
5: Пупкин 30000
6: Кузьмина 36000
7: Васечкин 29700
8: Бененсон 32500
9: Паутова 41000
10: Ромашкин 36400
Петров получает всего лишь 28000


(142k баллов)
0 голосов

//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)
const
  n = 10;
type
  tabel = record
    f: string[20];
    money: integer;
  end;

var
  a: array[1..n] of tabel;
  i, min, imin: integer;

begin
  min := a[1].money;imin := 1;
  for i := 1 to n do begin
    write('Введите Фамилию ',i,' сотрудника : ');
    readln(a[i].f);
    write(a[i].f,' получает :');
    readln(a[i].money);
    if a[i].money < min then begin
      min := a[i].money;imin := i;
    end;
  end;
  writeln(a[imin].f, ' получает меньше всех ');
end.

Тестовое решение:
Введите Фамилию 1 сотрудника : Иванов
Иванов получает :15000
Введите Фамилию 2 сотрудника : Петров
Петров получает :12000
Введите Фамилию 3 сотрудника : Сидоров
Сидоров получает :30000
Введите Фамилию 4 сотрудника : Железнов
Железнов получает :75000
Введите Фамилию 5 сотрудника : Греков
Греков получает :23000
Введите Фамилию 6 сотрудника : Смирнов
Смирнов получает :34000
Введите Фамилию 7 сотрудника : Сурков
Сурков получает :27000
Введите Фамилию 8 сотрудника : Водный
Водный получает :14000
Введите Фамилию 9 сотрудника : Беляев
Беляев получает :33000
Введите Фамилию 10 сотрудника : Жуков
Жуков получает :17000
Петров получает меньше всех

(13.9k баллов)
0

Можно создать два массива. Один с фамилиями, другой с с зарплатами. Но, уверяю вас это не будет проще.

0

сожалению, такое решение я не могу добавить к тому, что уже есть

0

"Попроще без string" записать фамилию? Хм...

0

Я тоже об этом подумал, без string да еще, чтобы было проще ...

0

Тут, как я понял записи еще не проходили кстати и строковый тип тоже. А задача без познаний в этих областях программирования не решается.

0

Теоретически могу допустить, что где-то преподается "додревняя" версия Паскаля, где вместо строк используются массивы символов, т.е. array[1..n] of char

0

Но это идеи точно из прошлого века (не фигурально) - первые ДОС-компиляторы.

0

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

0

*не особо напрягал*

0

И это еще один довод в пользу изучения сразу самых мощных возможностей языка.