М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
1шрус220
1шрус220
03.07.2022 13:42 •  Информатика

Опешите программный код, надо begin//начало if (a[h,v]=0) or (a[h-1,v]< > 0) then eng+=1; if a[h,v]< > 0 then if a[h-1,v]=0 then begin//начало a[h-1,v]: =a[h,v]; a[h,v]: =0; end; //конец end; //конец

👇
Ответ:
Вот правильно отформатированный код. Пока код не отформатирован, понять его очень сложно, поэтому программисты всегда сразу пишут код с необходимым форматированием. Начинающим писать программы тоже необходимо всегда следовать этому же принципу.

if (a[h,v]=0) or (a[h-1,v]<>0) then eng+=1;
if a[h,v]<>0 then
  if a[h-1,v]=0 then begin
    a[h-1,v]:=a[h,v];
    a[h,v]:=0;
  end;

Наличие переменных вида a[h,v] позволяет сделать вывод, что фрагмент программы что-то делает с элементами двумерного массива "а". При этом, эдементы все время встречаются парами вида a[h,v] и a[h-1,v]. Если a[h,v] - некий текущий элемент в строке h и столбце v, то a[h-1,v] - это элемент в предыдущей строке и том же столбце. Для краткости будем называть элемент a[h,v] ТЕКУЩИЙ, а элемент a[h-1,v] - ПРЕДШЕСТВУЮЩИЙ, предполагая просмотр по столбцам.
Теперь фрагмент программы можно заменить псевдокодом.

ЕСЛИ (ТЕКУЩИЙ=0) ИЛИ (ПРЕДШЕСТВУЮЩИЙ≠0) ТО eng+=1; (1)
ЕСЛИ ТЕКУЩИЙ≠0 ТО (2)
  ЕСЛИ ПРЕДШЕСТВУЮЩИЙ=0 ТО (3)
    ПРЕДШЕСТВУЮЩИЙ:=ТЕКУЩИЙ; (4)
    ТЕКУЩИЙ:=0; (5)

Опреатор eng+=1 - более короткая запись оператора eng:=eng+1, допустимая только в версии PascalABC.NET и пришедшая в него из языка C#. Это действие обычно называют "плюс единичка в счетчик", подразумевая, что eng подсчитывает количество некоторых событий. В данном случае это событие - случай, когда или ТЕКУЩИЙ элемент нулевой, или ПРЕДШЕСТВУЮЩИЙ ненулевой.

Сделаем псевдокод более компактным.

ЕСЛИ (ТЕКУЩИЙ=0) ИЛИ (ПРЕДШЕСТВУЮЩИЙ≠0) ТО (1)
  ДОБАВИМ 1 В СЧЕТЧИК ТАКИХ СОБЫТИЙ (2)
ЕСЛИ ТЕКУЩИЙ≠0 ТО (3)
  ЕСЛИ ПРЕДШЕСТВУЮЩИЙ=0 ТО (4)
    ПРЕДШЕСТВУЮЩИЙ:=ТЕКУЩИЙ; ТЕКУЩИЙ:=0; (5)

Условие (4) проверяется только если выполняется условие (3). Это оптимизация кода, которая позволяет не проверять условие (4), если условие (3) не выполняется. Такая оптимизация полезна только для старых компиляторов, а PascalABC.NET умеет оптимизировать подобные вещи сам. Для понимания алгоритма вопрос оптимизации несущественен, поэтому мы можем утверждать, что (5) выполнятнся только при одновременном наступлении (3) И (4).

ЕСЛИ (ТЕКУЩИЙ=0) ИЛИ (ПРЕДШЕСТВУЮЩИЙ≠0) ТО
  ДОБАВИМ 1 В СЧЕТЧИК ТАКИХ СОБЫТИЙ
ЕСЛИ (ТЕКУЩИЙ≠0) И (ПРЕДШЕСТВУЮЩИЙ=0) ТО
  ПРЕДШЕСТВУЮЩИЙ:=ТЕКУЩИЙ; ТЕКУЩИЙ:=0

В последней строке отметим, что ПРЕДШЕСТВУЮЩИЙ принимает значение ТЕКУЩИЙ, а ТЕКУШИЙ обнуляется. Но это происходит только если ПРЕДШЕСТВУЮЩИЙ был нулём, следовательно можно говорить об обмене значениями.

ЕСЛИ (ТЕКУЩИЙ=0) ИЛИ (ПРЕДШЕСТВУЮЩИЙ≠0) ТО
  ДОБАВИМ 1 В СЧЕТЧИК ТАКИХ СОБЫТИЙ
ЕСЛИ (ТЕКУЩИЙ≠0) И (ПРЕДШЕСТВУЮЩИЙ=0) ТО
  ОБМЕНЯТЬ ЗНАЧЕНИЯ ПРЕДШЕСТВУЮЩЕГО И ТЕКУЩЕГО

Вот все, что делает приведенный фрагмент кода.
4,6(39 оценок)
Ответ:
13semiy
13semiy
03.07.2022
Это вроде паскаль , мог бы и в переводчике перевести хз

begin

// начало , типо открыл вкладку )) хз

if (a[h,v]=0) or (a[h-1,v]<>0) then

// если массив a[h,v] равен 0  или массив a[h-1,v] не равен 0 то 

eng+=1;

// eng = eng + 1 (вверху просто упрощённая запись)

if a[h,v]<>0 then

// если a[h,v] <> 0 то 

if a[h-1,v]=0 then

// если a[h-1,v] = 0 то (условие в условие типо)

begin//начало

a[h-1,v]:=a[h,v];

// a[h-1,v] присваеваем a[h,v];

a[h,v]:=0;

// так же a[h,v]:=0;

end;//конец , идёт в связке с оператором begin ))
end;//конец

надеюсь именно так тебе надо было это сделать , задавай вопросы если не правильно
4,5(50 оценок)
Открыть все ответы
Ответ:

№1

#include <iostream>

#include <string.h>

using namespace std;

int main() {

setlocale(LC_ALL, "Rus");

char st[100];

char rm[10] = " РМ";

gets_s(st);

strcat_s(st, rm);

cout << st;

return 0;

}

№2

#include <iostream>

using namespace std;

int main() {

setlocale(LC_ALL, "Rus");

string st = "получены результаты контрольной работы";

cout << sizeof(st) << endl;

cout << st.find("результаты") << endl;

st.insert(st.find("результаты") + 10, " итоговой");

cout << st;

return 0;

}

4,7(1 оценок)
Ответ:
ArseniyRich
ArseniyRich
03.07.2022

mins = 9*99

maxs = -9*999

count = int(input())

if count < 2:

   print("Не может быть меньше двух")

else:

   for i in range(count):

       a = int(input())

       if a < mins:

           mins = a

       elif a > maxs:

           maxs = a

if count > 2:

   print(maxs)

   print(mins)

   

# такой же, но более памятозатратный.

# можно конечно оптимизировать, но для учебного варианта пойдёт

a = []

count = int(input())

if count < 2:

   print("Не может быть меньше двух")

else:

   for i in range(count):

       d = int(input())

       a.append(d)

if count > 2:

   print(max(a))

   print(min(a))

4,5(55 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ