
Приветствуем читателей нашего сайта! Сегодня мы с вами решим задачи Array30-36.
Задачи Array30-36
Array30. Дан массив размера N. Найти номера тех элементов массива, которые больше своего правого соседа, и количество таких элементов. Найденные номера выводить в порядке их возрастания.
program array30;
var
A: array[1..10] of integer;
N, k, i: integer;
begin
write('Введите N: ');
readln(N);
write('Введите элементы массива: ');
for i := 1 to N do
read(A[i]);
k := 0;
for i := 1 to N - 1 do
if A[i] > A[i + 1] then
begin
inc(k);
write(i, ' ')
end;
writeln;
write(k);
end.Array31. Дан массив размера N. Найти номера тех элементов массива, которые больше своего левого соседа, и количество таких элементов. Найденные номера выводить в порядке их убывания.
program array31;
var
A: array[1..10] of integer;
N, k, i: integer;
begin
write('Введите N: ');
readln(N);
write('Введите элементы массива: ');
for i := 1 to N do
read(A[i]);
k := 0;
for i := 2 to N do
if A[i] > A[i - 1] then
begin
inc(k);
write(i, ' ')
end;
writeln;
write(k);
end.Array32°. Дан массив размера N. Найти номер его первого локального минимума (локальный минимум — это элемент, который меньше любого из своих соседей).
program array32;
var
A: array[1..10] of integer;
N, i: integer;
begin
write('Введите N: ');
readln(N);
write('Введите элементы массива: ');
for i := 1 to N do
read(A[i]);
for i := 2 to N - 1 do
if (A[i] < A[i - 1]) and (A[i] < A[i + 1]) then
begin
write(i, ' ');
exit; {завершает программу}
end;
writeln(0); {если минимума нет}
end.Array33. Дан массив размера N. Найти номер его последнего локального максимума (локальный максимум — это элемент, который больше любого из своих соседей).
program array33;
var
A: array[1..10] of integer;
N, i: integer;
begin
write('Введите N: ');
readln(N);
write('Введите элементы массива: ');
for i := 1 to N do
read(A[i]);
for i := N - 1 downto 2 do
if (A[i] > A[i - 1]) and (A[i] > A[i + 1]) then
begin
write(i, ' ');
exit;
end;
writeln(0); {если максимума нет}
end.Array34. Дан массив размера N. Найти максимальный из его локальных минимумов (определение локального минимума дано в задании Array32).
program array32;
var
A: array[1..10] of integer;
N, max, i: integer;
begin
write('Введите N: ');
readln(N);
write('Введите элементы массива: ');
for i := 1 to N do
read(A[i]);
max := -MaxInt;
for i := 2 to N - 1 do
if (A[i] < A[i - 1]) and (A[i] < A[i + 1]) then if A[i] > max then max := A[i];
writeln(max);
end.Array35. Дан массив размера N. Найти минимальный из его локальных максимумов (определение локального максимума дано в задании Array33).
program array35;
var
A: array[1..10] of integer;
N, min, i: integer;
begin
write('Введите N: ');
readln(N);
write('Введите элементы массива: ');
for i := 1 to N do
read(A[i]);
min := MaxInt;
for i := N - 1 downto 2 do
if (A[i] > A[i - 1]) and (A[i] > A[i + 1]) then
if A[i] < min then min := A[i];
writeln(min);
end.Array36. Дан массив размера N. Найти максимальный из его элементов, не являющихся ни локальным минимумом, ни локальным максимумом (определения локального минимума и локального максимума даны в заданиях Array32 и Array33). Если таких элементов в массиве нет, то вывести 0 (как вещественное число).
program array36;
var
A: array[1..10] of integer;
N, max, i: integer;
begin
write('Введите N: ');
readln(N);
write('Введите элементы массива: ');
for i := 1 to N do
read(A[i]);
max := -MaxInt;
for i := 2 to N-1 do
if not((A[i] > A[i - 1]) and (A[i] > A[i + 1])) and
not((A[i] < A[i - 1]) and (A[i] < A[i + 1])) then if A[i] > max then max := A[i];
{проверяем те элементы, которые не были проверены в цикле}
if a[1] > max then max := a[1];
if a[N] > max then max := a[N];
writeln(max);
end.На сегодня всё! Если у вас возникли вопросы, задавайте их в комментариях. И не забывайте рассказывать о нашем сайте своим друзьям!
Это сайт с лучшими пояснениями. Неужели не будет продолжения?!
Этот вопрос пока остается открытым.
Мы учимся, готовимся к сессии. Как бы не хотелось продолжения, оно откладывается на неопределенный срок.
Несмотря на это, за период своего существования сайт успел стать самостоятельным организмом. Он поддерживает жизнь и развивается уже безо всякого внутреннего вмешательства. Поэтому вопросы, которые сюда поступают, никогда не отсаются незамеченными. В случае непонимания материала, вы всегда можете написать сюда, и вам обязательно помогут 🙂
Ошибка в Array31. Нужно выводить элементы массива по убыванию, а не по возрастанию.
program array31;
var
A: array[1..10] of real;
N, k, i: integer;
begin
write(‘Введите N: ‘);
readln(N);
write(‘Введите элементы массива: ‘);
for i := 1 to N do
read(A[i]);
k := 0;
for i:=N downto 2 do
if A[i] > A[i — 1] then
begin
inc(k);
write(i, ‘ ‘)
end;
writeln;
write(k);
end.
______
Вот правильное решение
не очень хорошо.
Неправильно решена 31 задача.
Не нравится exit в циклах… на паскале так пишут? (это нормально?)
Не нравится max := -MaxInt; (такой подход повсеместно).
в 24 задаче какая-то порнография с флагом.
в
25 задаче сравниваются на равенство дробные числа, это нормально в
паскале? (результат не зависит от реализации компилятора и фазу луны?)
24 и 24 задачи упадут при N = 1.
в
27 задаче какое-то упоротое решение. Что не if (a[i] * a[i+1] < 0)?
Одно умножение и одно сравнение вместо сравнения, 2 сложений и трех
модулей.
В 18 задаче если условие не выполнится ни разу- программа упадет, т.к. K будет хранить мусор, а a[k]….
В 19 задаче нормальный человек пойдет с конца массива.
в 20, 21, 22 задаче забыли присвоить ноль sum. Не все паскали нулем инициализируют.
В 22 здоровый человек напишет 2 цикла. От 1 до К и от Л до Н
23 вообще неверное решена. Деление на ноль там возможно. Если K = 1, L = N
Уроки вы писать бросили, но надо сначала старые исправить.
Здравствуйте!
Начну с конца.
1) Прочитайте внимательнее условие задачи 23, а именно момент 1<K.
2) Вы неправы. Я вот себя вполне хорошо чувствую и написала один. Пересмотрите свои взгляды на читабельность и лаконичность кода и согласитесь.
3) О инициализации нулем мы писали ранее и не раз — мы используем PascalABC и указываем это явно. Он инициализирует.
4) Массив из 10 элементов. Не из миллиона. Здесь это имеет право на жизнь. А ваша оптимизация очень в духе "не заводить лишних временных переменных". (Такое себе)
5) 27 задача: WAT???
6) 24 задача — да, тут я должна согласиться (на самом деле, массив на 10 элементов — тоже что-то странное. Не знаю, под чем это было написано)
7) Дробные числа в задаче 25 — это везде нормально. Тут дело уже в точности. Но для этой задачи это нормально.
8) Что с флагом-то не так?
9) Чем вам MaxInt не угодил?
10) Про exit — не очень понимаю, какой вы ответ ожидаете от нас услышать. Если мы написали, то, вероятно, считаем это нормальным.
11) По поводу неправильного решения 31 задачи — уточните, пожалуйста, что вам здесь не нравится.
Так или иначе — благодарю за проявленный интерес и желаю успехов!
создать программу которая дано x и y природное число. z изменчивый дать значения 5 когда (x+y) простое число, в обратном случее значение 6 : напечатать значение z изменчивого. И как это понять
«Написать программу в которой даны X и Y — вещественные числа. Переменной Z присвоить значение 5, если (X+Y) = целое число, иначе присвоить 6. Вывести значение переменной Z. » — я так это понял.
Видимо, пришло время на C переходить. Огромное спасибо создателям сайта: Вы — лучшие!