|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
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; ), а не вписывать число в каждый цикл; тогда, если нужно будет переделать программу для массива другого размера, достаточно будет изменить всего одно число в начале программы
Еще пример задания: Опишите на русском языке или одном из языков программирования алгоритм подсчета максимального количества подряд идущих совпадающих элементов в целочисленном массиве длины 30. Решение: 1) сначала нужно понять задачу; предположим, что в массиве есть одинаковые элементы, стоящие рядом: 2) самая длинная цепочка стоящих рядом элементов в данном случае состоит из 4-х единиц (она выделена желтым фоном) 3) нам нужно по крайней мере две переменных: для хранения номера текущего элемента (при обработке массива в цикле) и для хранения максимального количества идущих подряд элементов (обозначим ее kMax ) 4) в целом (пока неточный) алгоритм может выглядеть так: «пройти весь массив, подсчитывая для каждого элемента длину цепочки подряд идущих одинаковых чисел, если эта длина больше kMax, то записать ее в kMax » 5) отсюда сразу следует, что необходима еще одна переменная (обозначим ее через k ), показывающая для каждого элемента массива длину цепочки одинаковых чисел, которая заканчивается на этом элементе:
6) следующий шаг к решению: нужно понять, как изменять переменную k при проходе по массиву; можно сделать так: если очередной элемент равен предыдущему, счетчик k увеличиваем на единицу, а если не равен – записываем в него 1 (цепочка одинаковых чисел кончилась, началась новая, в ней пока один элемент) 7) при таком подходе проблема может возникнуть при просмотре первого элемента, потому что для него нет предыдущего; поэтому описанную выше процедуру будем в цикле применять ко всем элементам массива, начиная со второго (а не с первого); в самом начале программы запишем в k и kMax по единице – таким образом, мы «вручную» (без цикла) рассмотрели первый элемент массива 8) теперь можно написать алгоритм на русском языке: 9) этот алгоритм реализуется в такой программе:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|