1

Тема: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

задати цілочисельний масив В[8,12].Визначити кількість "особливих"елементів згідно ознаки:в його рядку зліва
знаходяться елементи менші від нього а справа-більші. Вивести вхідну матрицю в натуральному вигляді. Значення
і загальну кількість "особливих"елементів .

2

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

>> "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

З чим конкретно допомогти?

I belong to the Dead Generation.

3

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

так ось я написав умову задачі

4

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

vlad написав:

так ось я написав умову задачі

Так, це суттєво. Але якось недостатньо.
Зазвичай допомоги просять, коли є питання з конкретної проблеми. Коли ж проблема описується у вигляді кількох "підпроблем" - виникає логічна підозра у спробі уламування на "напишіть за мене, бо я ніц не буду розбиратися".

У даному випадку яка ситуація?

I belong to the Dead Generation.

5

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

я вже 2 день мучуся  з цією програмою нажаль нічого не вийшло я питав знайомих та допомогти мені ніхто не в змозі.В двовимірних масивах в мене деякі проблеми.Я й прошу написати мені програму.

6 Востаннє редагувалося Bartash (11.12.2012 15:16:33)

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

Визначити кількість "особливих"елементів згідно ознаки:в його рядку зліва
знаходяться елементи менші від нього а справа-більші. Вивести вхідну матрицю в натуральному вигляді. Значення
і загальну кількість "особливих"елементів .

var arr: array[8,12] of integer;
var iRow, jCol, kItem: integer;
var counter: integer;
var leftFlag, rightFlag: boolean;
begin

{Initialize your array here in the way you want}

    for iRow:=1 to 8 do
    begin
        for jCol:=1 to 12 do
        begin
            leftFlag:=true;
            {Check items at the left}
            for kItem:=1 to jCol do
            begin
                if arr[iRow, kItem] > arr[iRow, jCol] then {Stop checking if someone item is larger}
                begin
                    leftFlag:=false;
                    break;
                end;
            end;
            if leftFlag = false then continue;

            rightFlag:=true;
            {Check items at the right}
            for kItem:=(jCol+1) to 12 do
            begin
                if arr[iRow, kItem] < arr[iRow, jCol] then {Stop checking if someone item is lower}
                begin
                    rightFlag:=false;
                    break;
                end;
            end;
            if rightFlag = false then continue;
            
            {Item is good}
            counter := counter + 1;
            writeln("Item [", iRow, ";", jCol, "] = ", arr[iRow, jCol]);
        end;
    end;
    writeln("Total: ", counter, " items");
end.

Можливості перевірити код не маю, бо наразі відсутній компілятор для Паскаля. Але десь так мало би виглядати, імхо.

I belong to the Dead Generation.
Подякували: vlad1

7

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

Bartash
У вашому коді можна застосувати логічне and, і викинути усю логіку пов'язану із leftFlag та rightFlag.

Подякували: vlad1

8

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

Torbins написав:

Bartash
У вашому коді можна застосувати логічне and, і викинути усю логіку пов'язану із leftFlag та rightFlag.

Порівнянням значень лічильників циклів?

I belong to the Dead Generation.
Подякували: vlad1

9

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

for iRow:=1 to 8 do
  for jCol:=2 to 11 do
    if (arr[iRow, jCol -1] < arr[iRow, jCol]) and (arr[iRow, jCol] < arr[iRow, jCol +1]) then
    begin
      counter := counter + 1;
      writeln('Item [', iRow, ';', jCol, '] = ', arr[iRow, jCol]);
    end;

Щоправда логіка тут дещо інша. Сподіваюся автор розбереться який варіант йому підходить більше.

10 Востаннє редагувалося Bartash (11.12.2012 22:08:22)

Re: "двовимірні масиви"прошу допомоги у вирішенні поставленої задачі

Torbins написав:
for iRow:=1 to 8 do
  for jCol:=2 to 11 do
    if (arr[iRow, jCol -1] < arr[iRow, jCol]) and (arr[iRow, jCol] < arr[iRow, jCol +1]) then
    begin
      counter := counter + 1;
      writeln('Item [', iRow, ';', jCol, '] = ', arr[iRow, jCol]);
    end;

Щоправда логіка тут дещо інша. Сподіваюся автор розбереться який варіант йому підходить більше.

Варіант можливий, якщо визначити умовою порівняння лише сусідніх елементів.
Мені з умови здалося, що кожен елемент порівнюється з діапазонами по обидва боки, тому і флагова реалізація була.

I belong to the Dead Generation.