
- •Содержание:
- •Упр. 41. Ввести строку с клавиатуры и заменить все буквы «а» на буквы «б». 67
- •Writeln('Введите строку'); 67
- •1. Что такое величина типа String? Как описать переменную-строку? 67
- •§1. Понятие алгоритма. Свойства, виды и формы представления алгоритмов
- •§ 2. Введение в язык программирования Pascal
- •Write(список выражений и/или переменных); Writeln(список выражений и/или переменных);
- •№4. Вывести на экран рисунок из букв § 3. Типы величин. Переменные. Присваивание.
- •§ 4.Оператор ввода.
- •§ 5. Арифметические операции
- •§ 6. Стандартные математические функции
- •§ 7. Логические выражения
- •§ 8. Решение задач по теме «Линейные программы. Логические величины.»
- •§ 9. Условный оператор
- •В общем случае полная форма условного оператора имеет вид:
- •Условный оператор работает по следующему алгоритму.
- •§ 10. Решение задач
- •§ 11. Вложенные условные операторы
- •§ 12. Цикл с предусловием
- •Представим всю информацию о цикле с предусловием в таблице:
- •§ 13. Решение задач по теме «Цикл с предусловием»
- •§ 14. Цикл с постусловием
- •§ 15. Решение задач по теме «Цикл с постусловием»
- •§ 16. Цикл с параметром (счетчиком)
- •Общая форма записи цикла со счетчиком (параметром)
- •§ 17. Решение задач по теме «Цикл со счетчиком»
- •§ 18. Линейные массивы: описание, ввод, вывод
- •§ 19. Заполнение массива случайными числами и его обработка
- •§ 20. Замены и перестановки в массиве.
- •§ 21. Поиск максимального элемента
- •§ 22. Сортировка линейного массива
- •Сортировка методом простого выбора (простой перебор)
- •Сортировка массива по возрастанию:
- •§ 23. Двумерные массивы (матрицы)
- •§ 24. Обработка двумерного массива (матрицы)
- •§ 25. Символьный тип данных
- •№57. Вводится код символа (любое число 0-255). На экран выводится символ с данным кодом. § 26. Строковый тип данных, операции и функции.
- •Упр. 41. Ввести строку с клавиатуры и заменить все буквы «а» на буквы «б».
- •Writeln('Введите строку');
- •Что такое величина типа String? Как описать переменную-строку?
- •§ 27. Процедуры для работы со строковыми величинами.
- •§ 28. Подпрограммы пользователя
§ 20. Замены и перестановки в массиве.
Задачи замены в массивах предполагают изменение значений элементов массива в соответствии с условием (заменить все отрицательные значения их модулями, все четные положительные элементы уменьшить вдвое и т.д.).
Упражнение 36. Дан целочисленный массив, заданный случайными числами на промежутке [-50; 50]. Заменить в массиве все отрицательные элементы им противоположными.
Для решения задачи выполним просмотр массива с начала. Каждый элемент сравним с нулем, при этом отрицательные значения элементов заменим им противоположными ( if (x[i]<0) then x[i]=-x[i] ). Чтобы мы могли увидеть произведенные изменения, надо выполнить вывод массива дважды: до и после замены.
Program Zameny;
Const N=10;
Var x : array [1..N] of integer;
I : integer; {счетчик индексов элементов}
Begin
{цикл заполнения и вывода массива:}
For i:=1 to N do
Begin x[i]:=random(101)-50;
Write (x[i]: 4);
End;
Writeln; {- после вывода элементов массива переходим на новую строку}
{цикл замены отрицательных значений элементов массива на противоположные и вывода элементов:}
For i:=1 to N do
Begin if (x[i]<0) then x[i]:=-x[i];
Write (x[i]: 4);
End;
Writeln; {- после вывода элементов массива переходим на новую строку}
End.
Задачи перестановок в массивах предполагают в первоначально заданном массиве выполнить обмен местами отдельных элементов в соответствии с условием (поменять местами наибольший и наименьший элементы, элементы четных позиций с элементами нечетных позиций и т.д.).
Упражнение 37. Дан целочисленный массив, заданный случайными числами на промежутке [-10; 10]. Сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего.
|
То есть должна быть реализована схема перестановок: x[1] -> x[N], x[2] -> x[1], x[3] -> x[2],... , x[N] -> x[N-1].
|
Одним из алгоритмов такого циклического сдвига является следующая последовательность действий. Поместим в переменную-буфер первый элемент массива (buf:=x[1] ). Выполним смещение остальных элементов влево на одну позицию (x[i]:=x[i+1] ). При этом важен порядок смещения: на освободившееся место первого элемента перемещается второй, на место второго – третий и т.д. В результате таких перемещений освобождается место последнего элемента, на которое перемещается элемент из буфера. В данной задаче целесообразно выполнить вывод массива дважды: до и после циклического сдвига.
Program Perestanovka;
Const N=15;
Var x : array [1..N] of integer;
I : integer; {счетчик индексов элементов}
Buf : integer; {переменная-буфер}
Begin
{цикл заполнения и вывода массива:}
For i:=1 to N do
Begin x[i]:=random(21)-10;
Write (x[i]: 4);
End;
Writeln; {-после вывода элементов массива перешли на новую строку}
Buf:=x[1]; {-поместили в переменную-буфер первый элемент массива}
{начинаем цикл перестановок (всего N-1 перестановок):}
For i:= 1 to N-1 do x[i]:=x[i+1];
x[N]:=Buf; {-поместили в последнюю ячейку массива значение из переменной-буфера – последняя перестановка }
{цикл вывода массива:}
For i:=1 to N do Write (x[i]: 4);
Writeln; {-после вывода элементов массива перешли на новую строку}
End.
Домашние вопросы и задачи:
№50. Целочисленный массив заполняется с клавиатуры. Все четные положительные элементы уменьшить вдвое.
№51. Дан целочисленный массив, заданный случайными числами на промежутке [1; 30]. Поменять местами элементы четных позиций с элементами нечетных позиций.