Другие языки программирования и технологии
Вопрос по двумерному массиву в Pascal?
Дан массив F:array [1..n,1,m] of byte определить кол-во "особых элементов в нем. Элемент считаеться "особым", если он больше суммы остальных элементов своего столбца. Вот код программы: Program lab7_z1; Uses crt; CONST n=3;m=3; Var i,j:byte; f:array [1..n,1..m] of byte; sum:word; BEGIN randomize; CLRSCR; sum:=0; for i:=1 to n do for j:=1 to n do f[i,j]:=random(18)+1; Writeln('Вывод массива :'); for i:=1 to n do begin for j:=1 to m do Write(' ',f[i,j]); Writeln; end; For j:=1 to m do begin For i:=1 to n do if f[i,j]>(f[i,j]+f[i,j]) then inc(sum) else if f[i,j]>(f[i,j-1]+f[i,j+2]) then inc(sum) else if f[i,j]>(f[i,j]+f[i,j+1]) then inc(sum) end; Writeln('Кол-во "особых" элементов в нем: ',sum); READLN; END. Считает не совсем правильно. То выведет на 1 больше кол-во, то на 1 меньше а то вообще не увидит. помогите плз с условием. Где и ошибка или что бы мне дополнить?
Вот здесь ты вообще вылазишь за границы массива:
if f[i,j]>(f[i,j-1]+f[i,j+2]) then inc(sum)
else
if f[i,j]>(f[i,j]+f[i,j+1]) then inc(sum)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Я себе алгоритм представляю примерно следующий:
- организуем цикл по столбцу:
Sum := 0; Max := f[1, j]; { предположим, что максимальный элемент в 1 позиции столбца }
- проходим циклом с подсчётом общей суммы и нахождением максимального элемента:
for i := 1 to n do
begin
Sum := Sum + f[i, j];
if f[i, j] > Max then Max := f[i, j];
end;
- теперь выясняем на сколько больше максимальный элемент суммы всех элементов столбца
if Sum - Max > Max then
Inc(Unical);
- в итоге результат будет:
Writeln('Кол-во "особых" элементов в нем: ', Unical);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ну уж саму программу переписывать не буду!
if f[i,j]>(f[i,j-1]+f[i,j+2]) then inc(sum)
else
if f[i,j]>(f[i,j]+f[i,j+1]) then inc(sum)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Я себе алгоритм представляю примерно следующий:
- организуем цикл по столбцу:
Sum := 0; Max := f[1, j]; { предположим, что максимальный элемент в 1 позиции столбца }
- проходим циклом с подсчётом общей суммы и нахождением максимального элемента:
for i := 1 to n do
begin
Sum := Sum + f[i, j];
if f[i, j] > Max then Max := f[i, j];
end;
- теперь выясняем на сколько больше максимальный элемент суммы всех элементов столбца
if Sum - Max > Max then
Inc(Unical);
- в итоге результат будет:
Writeln('Кол-во "особых" элементов в нем: ', Unical);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ну уж саму программу переписывать не буду!
Скажи пожалуйста что ты хочеш получить етой строчкой if f[i,j]>(f[i,j]+f[i,j]) then inc(sum), орсобенно интересно как элемент может быть больше удвоенного себя (if f[i,j]>(f[i,j]+f[i,j]))
Ты имел в виду что элемент с коородинатами "и","жи" должен быть больше елемента с индексом "И+И", "жи+жи"????
Да и в сторочке
if f[i,j]>(f[i,j-1]+f[i,j+2]) then inc(sum)
else
if f[i,j]>(f[i,j]+f[i,j+1]) then inc(sum)
end; - Это возможно только для первого (1,1) элемента, если номер элемента больше - у тебя получится выход за граници диапазона 1-3; Поставь отдельное условие для элементов, у которых при данном условии будет переполнение.
Ты имел в виду что элемент с коородинатами "и","жи" должен быть больше елемента с индексом "И+И", "жи+жи"????
Да и в сторочке
if f[i,j]>(f[i,j-1]+f[i,j+2]) then inc(sum)
else
if f[i,j]>(f[i,j]+f[i,j+1]) then inc(sum)
end; - Это возможно только для первого (1,1) элемента, если номер элемента больше - у тебя получится выход за граници диапазона 1-3; Поставь отдельное условие для элементов, у которых при данном условии будет переполнение.
Похожие вопросы
- Помогите сделать задания по програмированию(двумерные массивы)Turbo Pascal
- Создать двумерный массив. Pascal
- Pascal. Двумерный массив
- Помогите решить задачу pascal. Двумерные массивы (подробно)
- Перебор двумерного массива. Вопрос на засыпку.
- помогите срочно надо Квадратные массивы тема: Двумерные массивы на языке C++
- дан двумерный массив С(3,4).Получите новый массив А путём увеличения всех элементов исходного массива на число С.
- Необходимо упорядочить строки двумерного массива, по возрастанию первого эл-та. СИ.
- .помогите пожалуйста двумерный массив на языке c++
- Как можно передать ДВУМЕРНЫЙ массив в функцию в С++, не создавая его, как глобальный. Пример ниже: