№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;
}
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))
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) ТО
ОБМЕНЯТЬ ЗНАЧЕНИЯ ПРЕДШЕСТВУЮЩЕГО И ТЕКУЩЕГО
Вот все, что делает приведенный фрагмент кода.