
Найдите ошибки, пожалуйста, не понимаю, что надо исправитьсама задача: Составить программу, которая
вычисляет сумму тех элементов двумерного массива, номера строк и столбцов которых принадлежат соответственно непустым множествам 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.

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

if(i in s1)and(j in s2) then sm:=sm+a[1..20];
Вы к integer пытаетесь добавить array.



Программа, которая вычисляет сумму элементов двумерного массива, номера строк и столбцов которых принадлежат непустым множествам 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. ```
После внесения этих исправлений программа должна работать корректно.


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









Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili