// PascalABC.NET 3.3, сборка 1611 от 06.01.2018 // Внимание! Если программа не работает, обновите версию!
type Exams=record fam:string; nam:string; ball:=new integer[4]; end;
begin var Ls:=new List<Exams>; var b:Exams; // буфер ReadLines('marks.csv') .Foreach(t->begin var a:=t.ToWords(','); (b.fam,b.nam):=(a[0],a[1]); b.ball:=a[2:].Select(q->q.ToInteger).ToArray; Ls.Add(b) end); var n:=Ls.Count; // а var m:=Arr(0,0,0,0); var c:=Ls.Select(t->t.Ball); foreach var d in c do for var i:=0 to 3 do m[i]+=d[i]; Writeln('Средние по предметам: ', m[0]/n:0:1,', ',m[1]/n:0:1, ', ',m[2]/n:0:1,', ',m[3]/n:0:1); // б var max:=Ls.Select(t->t.Ball.Sum).Max; Writeln(NewLine,'Максимальная сумма ',max); // в Writeln(NewLine,'Учащиеся, набравшие максимальную сумму :'); Ls.Where(t->t.Ball.Sum=max).Select(t->t.fam+' '+t.nam) .OrderBy(t->t).Println(NewLine); // г Writeln(NewLine,'Получили хотя бы одну двойку:'); Ls.Where(t->t.Ball.Any(t->t=2)).Select(t->t.fam+' '+t.nam) .OrderBy(t->t).Println(NewLine) end.
Пример: Средние по предметам: 3.3, 3.3, 4.0, 2.0
Максимальная сумма 13
Учащиеся, набравшие максимальную сумму : Алескеров Имран Бармин Владимир
Получили хотя бы одну двойку: Александрова Маргарита Алескеров Имран Бармин Владимир
Замечание: В PascalABC.NET 3.3 динамические массивы реализованы с списков, поэтому было принято решение использовать именно список, позволяющий не знать заранее размера массива и добавлять элементы по мере необходимости. Если возникнет причуда иметь данные именно в массиве, перед end. добавьте строку var x:=Ls.ToArray; - она создаст из списка массив х.
tanya62soldatova72
13.07.2020
целый целый R := A + B тип результата: целый
целый целый R := A - B тип результата: целый
целый целый R := A * B тип результата: целый
целый целый R := A / B тип результата: вещественный
целый целый A > B тип результата: логический (true/false)
целый целый A < B тип результата: логический (true/false)
вещественный вещественный R := A + B тип результата: вещественный
вещественный вещественный R := A - B тип результата: вещественный
вещественный вещественный R := A * B тип результата: вещественный
вещественный вещественный R := A / B тип результата: вещественный
вещественный вещественный A > B тип результата: логический (true/false)
вещественный вещественный A < B тип результата: логический (true/false)