Помощь - Поиск - Пользователи - Календарь
Полная версия: Проверьте пожалуйста задачу на одномерные массивы!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Natalya
blink.gif Составила программу, а она то работает, то нет. Проверьте пожалуйста и подскажите что в ней не так. Можно даже исправить что-либо.
мисс_граффити
хмм... а где программка-то, которую проверять?
Natalya
[b]Вот эта программа:

Вставить в одномерный массив после максимального чётного числа 0.

program Lab2Var5;
type
array1 = array [1..20] of integer; {array1 - одномерный массив с кол-вом элементов до 20-ти}
var
a: array1; {a – массив}
i: integer; {i - счетчик цикла - индекс массива}
n: integer; {n - кол-во элементов массива a}
max: integer; {max - максимальный элемент массива}
begin
Выводим заголовок
writeln;
writeln('Лабораторная работа N2');
Вводим кол-во элементов массива A
writeln;
writeln('Массив A:');
repeat
write('Введите кол-во элементов массива: n=');
read(n)
until (n<10) and (n>0);
Вводим массив
writeln('Введите элементы массива:');
for i:=1 to n do
begin
write('a[',i,']=');
read(a[i])
end;
begin
Ищем индекс максимального элемента и проверяем его на чётность
max:=1;
for i:=2 to n do
if a[i]>a[max] then max:=i;
if odd(a[max]) then max:=i;
for i:=n downto max+1 do a[i+1]:=a;
a[max+1]:=o;
if odd(a[max]) then a[max+1]:=0;
inc(n);
Выводим массив
writeln (?Массив а после вставки:?);
for i:=1 to n do write(a[i]:3);
readln;
end;
end.
volvo
Цитата
Проверьте пожалуйста и подскажите что в ней не так.
Может, лучше попытаться откомпилировать? Компилятор заодно и скажет, где ошибки... А уж потом, если программа после исправления (и успешной компиляции) не будет работать - мы подскажем...
Гость
Я её откомпилировала-всё работает нормально. Проблема в том, что она вставляет 0 не всегда в нужном месте, т.е. не всегда после максимального чётного числа, как требует задача.
мисс_граффити
ну пойдем по порядку:
1) заводим массив на 20 элементов... а пользователю разрешаем использовать не более 10. почему?
2) вот здесь глупость написана:
for i:=2 to n do
if a[i]>a[max] then max:=i;
if odd(a[max]) then max:=i;

во-первых, почему бы сразу не проверить, является ли элемент четным, и только если является, запоминать его номер???
во-вторых - ты знаешь, чему будет равно i после цикла? лично я - нет.
в-третьих - ты уверена, что первый элемент четный?
на массиве 999 2 16 3 ты не найдешь 16 (оно ведь не больше 999... хоть и максимальный четный элемент).

Добавлено через 2 мин.
А компилироваться она не может в таком виде...
Ты ее прямо здесь набирала, что ли? Лучше бы скопировала...
Гость
Спасибо за указанные ошибки. Сможешь составить правильный вариант программы?Начальные установки не требуются. У меня не получается найти максимальный чётный элемент и вставить после него 0. unsure.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.