rgmarket
?>

Дан массив а, содержащий 30 элементов. найти сумму элементов больших 10.

Информатика

Ответы

testovich1012
// PascalABC.NET 3.0, сборка 1128
begin
  var a:=ArrRandom(30,-10,20).Println(',');
  Writeln('Сумма элементов, больших 10, равна ',
    a.Where(x->x>10).Sum);
end.

Тестовое решение:
4,-8,-7,10,13,0,11,-6,-9,-1,-7,-6,2,19,4,-10,-6,9,4,13,-6,20,-4,15,-3,-2,-7,3,16,18
Сумма элементов, больших 10, равна 125

Дан массив а, содержащий 30 элементов. найти сумму элементов больших 10.
ElenaSkvortsova2
Подробный ответ во вложении. 
mbykovskiy
Последовательности длиной 7, содержащей 5 букв А могут быть следующими:
** (* - любой из символов В или С)
*А*
ААА*АА*
АА*ААА*
А**
** (пока 6 вариантов)
Далее - аналогично:
**А
ААА*А*А
АА*АА*А
А*ААА*А
**А (ещё 5 вариантов)
ААА**АА
АА*А*АА
А*АА*АА
*ААА*АА (ещё 4 варианта)
АА**ААА
А*А*ААА
*АА*ААА (ещё 3 варианта)
А**
*А* (ещё 2)
** (ещё 1)
Итого: 6+5+4+3+2+1=21
Так как на месте * могут быть любые из 2 символов В или С, то это даст ещё по 4 варианта для каждого случая.
Можно здесь, конечно, комбинаторику вспомнить.
Итого: 21*4 = 84
Грудинин604
// 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; - она создаст из списка массив х.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Дан массив а, содержащий 30 элементов. найти сумму элементов больших 10.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

соловьев_Куркина
annakuznetsova841
Григорьевич915
betepah
ecocheminnov437
Blekjek730
Amulenkov
e-s-i-k
anovikovsr
Liliya-buc
Lolira64
aci2003
verkop9
RozaAsadullina
Sergei1805