Rufilya-Belov
?>

Вдвоичной матрице размером 10х10 найти строки. на pascalabc

Информатика

Ответы

artem-dom
Procedure sovp;
var
  i, j, r, c: byte;
  ar: array[1..10, 1..10]of byte;
  s: array[1..4] of string;
  b: boolean;
label l1;
 begin
  r := random(2, 3);
  l1:
  c := 1;
  b := false;
  for i := 1 to 10 do
    for j := 1 to 10 do
    begin
    ar[i, j] := random(0, 1);
    if(i < 5) then s[i] := '';
    end;
     for i := 1 to 9 do
      begin
       for j := 1 to 10 do
       begin
        if(ar[i, j] <> ar[i + 1, j]) then b := true;
       end;
      if(b = false) then
     begin
      s[c] := i + ' строка совпалает с ' + (i + 1) + ' строкой';
      c := c + 1;
     end;
    b := false;
  end;
 if(c <> r) then goto l1
  else
  begin
    for var k := 1 to c do if(k<>c)then writeln(s[k]);
    for i := 1 to 10 do
    begin
      for j := 1 to 10 do write(ar[i, j], ' ');
        writeln;
    end;
  end;
   end;
 begin
  sovp;
end. 
ars-trushakova
// 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; - она создаст из списка массив х.
ВалерийАндреевна1788
В принципе, можно расписать, что делает эта программа (см. вложение). Так как изначально a[6] = 0, то a[3] = 50 раз к a[5] прибавится 2 * a[4] = 38, получится 38 * 50 + a[5] = 1917, затем значение a[5] будет выведено на экран.

Но проще не мучиться и просто написать программу, выполняющую этот код.

python 3.
array = [10, 330, 50, 19, 17, 0, 184, 0]
array_position = 2
program = "[->[->+>+<<]>>[-<+<+>>]<<<]>>."

stack = []
transitions = [None] * len(program)
for k, op in enumerate(program):
    if op == '[':
        stack.append(k)
    elif op == ']':
        v = stack.pop()
        transitions[k] = v + 1
        transitions[v] = k + 1
 
k = 0
while k < len(program):
    op = program[k]
    if op == '.':
        print(array[array_position])
    elif op == '>':
        array_position += 1
    elif op == '<':
        array_position -= 1
    elif op == '[' and array[array_position] == 0:
        k = transitions[k]
        continue
    elif op == ']' and array[array_position] != 0:
        k = transitions[k]
        continue
    elif op == '+':
        array[array_position] += 1
    elif op == '-':
        array[array_position] -= 1
    k += 1
Петя и вася придумали язык программирования мозг. в нём используются 8 ячеек памяти, и есть следую

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

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

Вдвоичной матрице размером 10х10 найти строки. на pascalabc
Ваше имя (никнейм)*
Email*
Комментарий*

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

olgakuz00261
Людмила902
НосовЖелиховская
ИНФОРМАТИКА решение на листочке
Анатольевич-Фатима
spodobnyi
ЭдуардовнаКлючников1361
si0000
Tatyana-Sergeevna108
iplizogub74
belegaj98
ЧумичеваГеннадьевна1827
Призначення програми програвача .​
mamaevmvv3
ilukianienko458
gusinica23
Borshchev1820