Хелпикс

Главная

Контакты

Случайная статья





const N = 30;. var a, b:array[1..N] of integer;. i: integer;. read(a[i]);. if a[i] < 0 then. else b[i]:= a[i];. writeln('Результат:');. write(b[i], ' ');



const N = 30;

var a, b: array[1.. N] of integer;

i: integer;

begin

for i: =1 to N do { ввод всех элементов массива с клавиатуры }

read(a[i]);

for i: =1 to N do  { формирование массива B }

if a[i] < 0 then

  b[i]: = -a[i]  

else b[i]: = a[i];

writeln('Результат: ');

for i: =1 to N do { вывод всех элементов массива B }

write(b[i], ' ');

end.

7) размер массива грамотно задавать через константу ( const N = 30; ), а не вписывать число в каждый цикл; тогда, если нужно будет переделать программу для массива другого размера, достаточно будет изменить всего одно число в начале программы

Возможные проблемы: · проверяйте правильность минимального и максимального значения переменной цикла в заголовке цикла for · не забывайте вывести результат в конце работы программы

Еще пример задания:

Опишите на русском языке или одном из языков программирования алгоритм подсчета максимального количества подряд идущих совпадающих элементов в целочисленном массиве длины 30.

Решение:

1) сначала нужно понять задачу; предположим, что в массиве есть одинаковые элементы, стоящие рядом:

2) самая длинная цепочка стоящих рядом элементов в данном случае состоит из 4-х единиц (она выделена желтым фоном)

3) нам нужно по крайней мере две переменных: для хранения номера текущего элемента (при обработке массива в цикле) и для хранения максимального количества идущих подряд элементов (обозначим ее kMax )

4) в целом (пока неточный) алгоритм может выглядеть так: «пройти весь массив, подсчитывая для каждого элемента длину цепочки подряд идущих одинаковых чисел, если эта длина больше kMax, то записать ее в kMax »

5) отсюда сразу следует, что необходима еще одна переменная (обозначим ее через k ), показывающая  для каждого элемента массива длину цепочки одинаковых чисел, которая заканчивается на этом элементе:

 
k
kMax

6) следующий шаг к решению: нужно понять, как изменять переменную k при проходе по массиву; можно сделать так: если очередной элемент равен предыдущему, счетчик k увеличиваем на единицу, а если не равен – записываем в него 1 (цепочка одинаковых чисел кончилась, началась новая, в ней пока один элемент)

7) при таком подходе проблема может возникнуть при просмотре первого элемента, потому что для него нет предыдущего; поэтому описанную выше процедуру будем в цикле применять ко всем элементам массива, начиная со второго (а не с первого); в самом начале программы запишем в k и kMax по единице – таким образом, мы «вручную» (без цикла) рассмотрели первый элемент массива

8) теперь можно написать алгоритм на русском языке:
«Выделим две вспомогательные переменные, k и kMax, и запишем в каждую из них по единице. В цикле рассматриваем все элементы массива со второго до последнего, если очередной элемент равен предыдущему, увеличиваем k; если k > kMax, записываем в kMax значение k. В конце цикла в kMax окажется требуемое значение».

9) этот алгоритм реализуется в такой программе:



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.