- •1.1 Краткие сведения
- •1.2 Единицы количества информации:вероятностный и объемный подходы
- •Вероятностный подход
- •Объемный подход
- •2. Системы счисления
- •2.1 Перевод чисел из одной позиционной системы счисления в другую. Арифметические операции
- •3. Представление данных в памяти эвм
- •4. Логические основы
- •Алгебра логики
- •Алгоритм построения таблицы истинности:
- •4.Законы логики высказываний
- •5. Дополнительные логические операции
- •5. Решение логических задач с помощью математической логики
- •Задача 1
- •Задача 2
- •Задача 3
- •Задача 4
- •Задача 6.
- •6. Паскаль как язык структурно-ориентированного программирования
- •Краткие сведения
- •6.1 Основные операторы языка
- •6.2 Структуры данных
- •6.3 Составные типы
- •6.4 Подпрограммы
- •6.5 Файлы
- •6.6. Динамические переменные и указатели
- •7. Примеры на программирование простых алгоритмов
- •8. Циклы с условиями
- •9. Простые типы данных. Символьный тип.Перечисляемые и интервальные типы
- •10. Вещественный тип
- •11. Перечисляемые и интервальные типы
- •12. Примеры рекурсивного программирования
- •13. Файлы. Файловый тип данных. Открытие файла. Чтение и запись
- •14. Текстовые файлы
- •15. Массивы
- •16. Методы работы с элементами одномерного массива
16. Методы работы с элементами одномерного массива
Пример 33. Заменить отрицательные элементы на противоположные по знаку.
Решение. Для этого опишем процедуру. Ей будем передавать один параметр - массив, который будет результатом ее выполнения, так как некоторые элементы могут быть заменены.
Procedure Substitationl(Var m: myarray);
Var i: Integer;
Begin
For i:=l To n Do If m[i]<0 Then m[i]:=-m[i];
End;
Пример 34. Прибавить к каждому элементу число 25.
Решение. Преобразуем предыдущую процедуру.
Procedure Substitation2(Var m: myarray);
Var i: Integer;
Begin
For i:=l To n Do m[i]:=m[i] + 25;
End;
Пример 35. Если элемент четный, то прибавить к нему первый, если нечетный - прибавить последний. Первый и последний элементы не изменять.
Решение. Будем просматривать каждый элемент, кроме первого и последнего, и если он четный, то есть делится на 2 без остатка, то увеличим его на значение первого элемента, иначе - на значение последнего элемента.
Procedure Substitation3(Var m: myarray);
Var i: Integer;
Begin
For i:=2 To n-1 Do
If m[i] Mod 2=0 Then m[i]:-m[i] + m[l]
Else m[i]:=ra[i]+m[n];
End;
Пример 36. Даны два одномерных массива одинаковой размерности. Получить третий массив такой же размерности, каждый элемент которого равен сумме соответствующих элементов данных массивов.
Решение. Пусть даны два массива А и В, состоящие из пяти элементов. Получим из них массив С, состоящий тоже из пяти элементов, первый элемент этого массива равен сумме первых элементов массивов Аи В, второй - сумме вторых элементов данных массивов и так далее.
Для решения этой задачи опишем процедуру, которой передаются три параметра. Первые два - это два исходных одномерных массива, третий - это одномерный массив той же размерности, который является результатом выполнения этой процедуры и заполняется по указанному правилу.
Procedure Sum_Ar(a, b: myarray; Var с: myarray);
Var i: Integer;
Begin
For i:=l To n Do с[i]:=a[i]+b[i];
End;
Пример 37. Дан первый член арифметической прогрессии и ее разность. Найти первые п членов.
Решение. Пусть а1 - это первый член прогрессии, а k - это ее разность, тогда i-й член можно найти по правилу - a[i] = a[i—l]+k, или a[i] = a1 + k(i— 1), если i =1, то a[i] = a1. Опишем процедуру, которой передаем эти два параметра и результатом выполнения является одномерный массив. Первый элемент его равен первому члену прогрессии, второй — второму и так далее. Возьмем в качестве основной первую формулу.
Procedure Progress (al, k: Integer; Var a: myarray);
Var i: Integer;
Begin
a[l]:=al;
For i:=2 To n Do a[i]:=a[i-1]+k
End;
Пример 38. Даны два одномерных массива А и В. Найти их скалярное произведение.
Решение. Скалярным произведением двух массивов одинаковой размерности называется сумма произведений соответствующих элементов. Это можно записать так:
a[1]b[1]+a[2]b[2]+..+a[n-1]b[n-1]+a[n]b[n], где п - это число элементов в массивах.
Тогда можно составить следующую функцию:
Function Sp(a, b: myarray): longint;
Var i: Integer;
s: Longint;
Begin
s:=0;
For i:=l To n Do
s:= s+a[i]*b[i];
Sp:=s;
End.,
