Помогите разобраься с задачкой.Условие такое:
Вводиться массив чисел MxM.Определить,сколько в нём пар одинаковых соседних элементов.
Пример:
Вводим массив размером 4x4
1 2 3 4
1 3 4 5
5 2 2 3
9 2 6 5
Ответ:3
Вот коешто написал:
count := 0;
for i := 1 to m do
for j := 1 to m do begin
if (succ(j) <= m) and (x[i, j] = x[i, succ(j)]) then inc(count);
if (succ(i) <= m) and (x[i, j] = x[succ(i), j]) then inc(count);
end;
ну, во-первых, ты считаешь и диагональные пары.
во-вторых, пары считаются по 2 раза.
Когда вводишь такой массив:
1 2 3 4
1 3 4 5
5 2 2 3
9 2 6 5
Ответ получается 24,я должно быть 3.Никак не пойму где ошибка.Вот мой текст
volvo Если записывать информацию с 1 индекса то получается вот что:
Указываем размер массива 4x4
Начинаем ввод значений массива:
1 2 3 4
1 3 4 5
5 2 2 3
Но после ввода третьей строки прога пишёт ответ 19.Тоесть до ввода последней строки дело не доходит.
Кто нибуть знает в чём может быть проблема?
for i:=1 to n do begin
for j:=1 to n do begin
Ха... Так у тебя структура программы нарушена... Смотри внимательно, что я поменял...
var(У тебя были неправильно вложенные циклы. Турбо-Паскаль на это внимания не обращает, но это есть ошибка...)
A:array[1..100,1..100] of integer;
n,i,j:integer;
count:integer;
begin
writeln('vv razmer massiva');
readln(n);
for i:=1 to n do
writeln('vvodite',n,'chisel');
for i:=1 to n do begin { <--- !!! }
for j:=1 to n do begin
Write('...');
Readln(a[i,j]);
end;
end; { <--- End переносится сюда }
count := 0;
for i := 1 to n do
for j := 1 to n do begin
if (succ(j) <= n) and (a[i, j] = a[i, succ(j)]) then inc(count);
if (succ(i) <= n) and (a[i, j] = a[succ(i), j]) then inc(count);
end;
writeln(count);
readln;
end.
volvo Всёравно прога работает неправильно.
Если указываешь размер массива 4x4 то после ввода четвёртой строки ввод не прекращается,приходится вводить ещё 12 строк .Если указать размер массива 2x2,то приходится вводить не 2 строки а 4.
ввод не по строкам а по элементам, сделай подсказку в цикле и все будет тебе понятно
or i:=1 to n do
writeln('vvodite',n,'chisel');
for i:=1 to n do begin { <--- !!! }
for j:=1 to n do begin
write('x[', i, ',', j, '] = '); { <---------------------------------------- }
Readln(a[i,j]);
end;
end;
fly, я перед тем как запостить - проверил на твоем примере... Так что в следующий раз - уточняй, что "прога у меня работает неправильно."
А вводишь 16 строк - потому что ReadLN ... И потом... Ты изначально спрашивал что? Почему выдается неправильный ответ? Тебе не кажется, что проблема организации ВВОДА данных - это уже другая проблема?
Ну дык я вначале и спросил про неправыльный ответ,а потом про ввод данных.
С здачкой разобрался)))
Спасибо за помощь)))