Помогите! Прога по двумерным массивам!
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
ВСЕМ привет! помогите с решением задачи! двумерные массивы не очень понимаю. В общем, звучит так: Дан массив a[1..3,1..4]. Найти сумму элементов каждой строки массива, кратных К (К вводится с клавиатуры).
program asd2;
const
m=3;
n=4 ;
var k,i,j,s:integer;
a:array[1..m,1..n] of integer;
begin
for i:=1 to n do
begin
s:=0;
for j:=1 to m do
readln (a[i,j]);
writeln (k);
for j:=1 to m do
begin
if a[i,j]mod K=0 then
s:=s+a[i,j];
end;
writeln (s,' Fuck');
end;
end.
что тут не так?? заранее спасибо!
program asd2;
const
m=3;
n=4 ;
var k,i,j,s:integer;
a:array[1..m,1..n] of integer;
begin
for i:=1 to n do
begin
s:=0;
for j:=1 to m do
readln (a[i,j]);
writeln (k);
for j:=1 to m do
begin
if a[i,j]mod K=0 then
s:=s+a[i,j];
end;
writeln (s,' Fuck');
end;
end.
что тут не так?? заранее спасибо!
Строкой
writeln (k);
выводится на экран число k. А оно по заданию должно вводится с клавиатуры. Правильно будет
readln (k);
Обычно при записи a(i,j) имеют в виду элемент матрицы i-ой строки j-ого столбца. Тогда по заданию есть 3 строки из 4 элементов, и в программе m и n надо поменять местами.
Кстати, в программе есть цикл
for j:=1 to m do readln (a[i,j]);
т.е. каждая строка матрицы тоже должна вводиться с экрана.
writeln (k);
выводится на экран число k. А оно по заданию должно вводится с клавиатуры. Правильно будет
readln (k);
Обычно при записи a(i,j) имеют в виду элемент матрицы i-ой строки j-ого столбца. Тогда по заданию есть 3 строки из 4 элементов, и в программе m и n надо поменять местами.
Кстати, в программе есть цикл
for j:=1 to m do readln (a[i,j]);
т.е. каждая строка матрицы тоже должна вводиться с экрана.
а как по-вашему должна выглядеть? я попробовал исправить, при вводе массива вводится 1 строка и, в общем, скорее я ошибся
все, я разобрался!!!
в итоге так получилось!!
program asd2;
const
n=3;
m=4;
var k,i,j,s:integer;
a:array[1..n,1..m] of integer;
begin
for i:=1 to n do
for j:=1 to m do
readln (a[i,j]);
s:=0;
writeln ('BBEgu K');
readln (k);
for i:=1 to n do
for j:=1 to m do
begin
if a[i,j]mod k=0 then
s:=s+a[i,j];
end;
writeln (s,' Fuck');
end.
в итоге так получилось!!
program asd2;
const
n=3;
m=4;
var k,i,j,s:integer;
a:array[1..n,1..m] of integer;
begin
for i:=1 to n do
for j:=1 to m do
readln (a[i,j]);
s:=0;
writeln ('BBEgu K');
readln (k);
for i:=1 to n do
for j:=1 to m do
begin
if a[i,j]mod k=0 then
s:=s+a[i,j];
end;
writeln (s,' Fuck');
end.
Наверно, примерно так.
program asd2;
const
m=3;
n=4 ;
var k,i,j,s:integer;
a:array[1..m,1..n] of integer;
begin
Writeln('Enter k'); //Пользователь должен указать число к, нажать Enter
Readln(k);
for i:=1 to m do
begin
Writeln('Enter ',i,' string'); //Пользователь указывает 4 числа, после набора каждого числа нажимая Enter
for j := 1 to n do Readln(a[i,j]);
Writeln('You enter: ');
for j := 1 to n do Write(a[i,j],' '); //Здесь пользователь проверяет указанные числа
Writeln;
s = 0;
for j := 1 to n do
if ( a[i,j] mod k = 0 ) then s := s + a[i,j];
Writeln('Sum ',s);
end;
End.
program asd2;
const
m=3;
n=4 ;
var k,i,j,s:integer;
a:array[1..m,1..n] of integer;
begin
Writeln('Enter k'); //Пользователь должен указать число к, нажать Enter
Readln(k);
for i:=1 to m do
begin
Writeln('Enter ',i,' string'); //Пользователь указывает 4 числа, после набора каждого числа нажимая Enter
for j := 1 to n do Readln(a[i,j]);
Writeln('You enter: ');
for j := 1 to n do Write(a[i,j],' '); //Здесь пользователь проверяет указанные числа
Writeln;
s = 0;
for j := 1 to n do
if ( a[i,j] mod k = 0 ) then s := s + a[i,j];
Writeln('Sum ',s);
end;
End.
СПАСИБО, Katy!!!!!!!!!!!!!
Сам же и разобрался ) а я еще и задание не так поняла. Рада, что все получилось.
Можно немного оптимизировать
вместо
for i:=1 to M do
if i mod K=0 then <вывести строку i>
сделать
i:=0;
while i*K<=M do
begin
<вывести строку i*K>
i:=i+1;
end;
работает более оптимально, если строк много, а К большое
вместо
for i:=1 to M do
if i mod K=0 then <вывести строку i>
сделать
i:=0;
while i*K<=M do
begin
<вывести строку i*K>
i:=i+1;
end;
работает более оптимально, если строк много, а К большое
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.