Вопрос задан 27.04.2019 в 20:44. Предмет Информатика. Спрашивает Sheviwama Selatyra.

Найдите ошибки, пожалуйста, не понимаю, что надо исправитьсама задача: Составить программу, которая

вычисляет сумму тех элементов двумерного массива, номера строк и столбцов которых принадлежат соответственно непустым множествам S1 и S2. var a:array[1..20] of integer; n,m,i,j,k:byte; sm,b:integer; s1,s2:set of byte; begin randomize; repeat write('количество строк='); readln(m); until m in [1..10]; repeat write('количество столбцов='); readln(n); until n in [1..10]; writeln('исходная матрица:'); for i:=1 to m do begin for j:=1 to n do writeln; end; writeln; writeln('множество S1:'); s1:=[]; for i:=1 to m do begin b:=random(m)+1; s1:=s1+[b]; end; for i:=1 to m do if i in s1 then write(i,' '); writeln; writeln('множество S2:'); s2:=[]; for i:=1 to n do begin b:=random(n)+1; s2:=s2+[b]; end; for i:=1 to n do if i in s2 then write(i,' '); writeln; writeln; sm:=0; for i:=1 to m do for j:=1 to n do if(i in s1)and(j in s2) then sm:=sm+a[1..20]; write('сумма=',sm); readln end.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Смирнов Евгений.
Четвёртая строка снизу:

if(i in s1)and(j in s2) then sm:=sm+a[1..20];

Вы к integer пытаетесь добавить array.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Программа, которая вычисляет сумму элементов двумерного массива, номера строк и столбцов которых принадлежат непустым множествам S1 и S2, содержит несколько ошибок. Давайте разберем их по порядку:

Ошибка 1:

В строке `for+i:=1+to+m+do+begin+for+j:=1+to+n+do+writeln;+end;` пропущено указание, что нужно вывести элемент массива. Вместо `writeln;` нужно написать `writeln(a[i, j]);`.

Ошибка 2:

В строке `for+i:=1+to+m+do+if+i+in+s1+then+write(i,'+');` пропущено указание, что нужно вывести пробел после номера строки. Вместо `write(i,'+');` нужно написать `write(i, ' ');`.

Ошибка 3:

В строке `for+i:=1+to+n+do+if+i+in+s2+then+write(i,'+');` также пропущено указание, что нужно вывести пробел после номера столбца. Вместо `write(i,'+');` нужно написать `write(i, ' ');`.

Ошибка 4:

В строке `sm:=sm+a[1..20];` происходит попытка сложить весь массив `a` с переменной `sm`. Вместо этого, нужно сложить конкретный элемент массива `a[i, j]` с переменной `sm`. Замените эту строку на `sm := sm + a[i, j];`.

Ошибка 5:

В строке `readln+end.` пропущен пробел между `readln` и `end`. Замените эту строку на `readln end;`.

Исправленный код программы выглядит следующим образом:

```pascal var a: array[1..20] of integer; n, m, i, j, k: byte; sm, b: integer; s1, s2: set of byte;

begin randomize;

repeat write('количество строк = '); readln(m); until m in [1..10];

repeat write('количество столбцов = '); readln(n); until n in [1..10];

writeln('исходная матрица:'); for i := 1 to m do begin for j := 1 to n do begin writeln(a[i, j]); end; end;

writeln;

writeln('множество S1:'); s1 := []; for i := 1 to m do begin b := random(m) + 1; s1 := s1 + [b]; end;

for i := 1 to m do begin if i in s1 then write(i, ' '); end;

writeln;

writeln('множество S2:'); s2 := []; for i := 1 to n do begin b := random(n) + 1; s2 := s2 + [b]; end;

for i := 1 to n do begin if i in s2 then write(i, ' '); end;

writeln; writeln;

sm := 0; for i := 1 to m do begin for j := 1 to n do begin if (i in s1) and (j in s2) then sm := sm + a[i, j]; end; end;

write('сумма = ', sm); readln; end. ```

После внесения этих исправлений программа должна работать корректно.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос