
- •Вопрос 1. Интуитивное понятие алгоритма.
- •Свойства алгоритмов.
- •Понятие исполнителя алгоритма.
- •Вопрос 2. Словесный способ представления алгоритмов.
- •Вопрос 3. Графический способ представления алгоритмов.
- •Вопрос 4. Название элементов блок-схем, их геометрическое представление, переход от одного блока к другому.
- •Вопрос 5. Базовые структуры блок-схем, название и их геометрическое представление.
- •Вопрос 6. Выражение базовой структуры «цикл с постусловием» и базовой структуры «цикл с параметром» через базовую структуру «цикл с предусловием».
- •Вопрос 7. Понятие базисного множества базовых структур. Понятие структурированной блок-схемы.
- •Вопрос 8. Виды блок-схем.
- •Вопрос 9. Понятие транслятора, компилятора и интерпретатора.
- •Вопрос 10. «Модель – алгоритм - программа» - методологический принцип решения задач на компьютере.
- •Вопрос 11. Алфавит языка Паскаль, служебные слова и идентификаторы.
- •Вопрос 12. Константы. Имена констант, типы констант, их объявление в программе.
- •Вопрос 13. Переменные, имена переменных, типы переменных, их объявление в программе.
- •Вопрос 14. Простые стандартные типы.
- •Вопрос 15. Стандартные функции языка Паскаль, тип значения аргументов и тип значения функции.
- •Вопрос 16. Арифметические операции, арифметические выражения, типы значений арифметических выражений.
- •Вопрос 17. Операции отношений, простые и сложные логические выражения.
- •Вопрос 18. Структура программы, ее три части, характеристика каждой части программы. Программа на языке программирования Pascal может состоять из трех разделов:
- •Вопрос 19.Процедура ввода данных.
- •Вопрос 20.Процедура вывода данных.
- •Вопрос 21.Форматы вывода данных.
- •Вопрос 22.Оператор присваивания, формат записи, порядок работы, типы операндов, графическое представление.
- •Вопрос 23 .Оператор неполного ветвления, формат записи, представление в виде базовой структуры, порядок работы.
- •I f условие Then Оператор 1;
- •Вопрос 24.Оператор полного ветвления, формат записи, представление в виде базовой структуры, порядок работы.
- •Вопрос 25.Оператор выбора, формат записи, представление в виде базовой структуры, порядок работы.
- •Вопрос 27.Оператор цикла с предусловием, формат записи, представление в виде базовой структуры, порядок работы.
- •Вопрос 28.Оператор цикла с постусловием, представление в виде базовой структуры, порядок работы.
- •Вопрос 29.Оператор цикла с известным числом повторений, формат записи, представление в виде базовой структуры, порядок работы, типы операндов.
- •Вопрос 30.Процедуры пользователя, формат объявления процедуры пользователя.
- •Вопрос 31.Формальные и фактические параметры процедуры пользователя, обращение к процедуре пользователя.
- •Вопрос 32.Глобальные и локальные параметры процедуры пользователя.
- •Вопрос 33.Функции пользователя, обращение к функции пользователя.
- •Вопрос 34.Понятие одномерного массива и элемента массива, формат объявления одномерного массива в программе.
- •Вопрос 35.Задание элементов одномерного массива с помощью функции случайных чисел и путем ввода значений с клавиатуры.
- •Вопрос 36,37Способы вывода элементов одномерного массива на экран: в строку, в столбик.
- •Вопрос 42.Понятие двумерного массива и его элемента, формат объявления двумерного массива.
- •Вопрос 43.Задание элементов двумерного массива с помощью случайных чисел и путем ввода с клавиатуры.
- •Вопрос 44.Вывод на экран элементов двумерного массива в виде матрицы.
- •Вопрос 46.Понятия прямоугольного и квадратного двумерного массива, свойства элементов главной и побочной диагоналей.
- •Вопрос 49.Строковый тип данных, формат объявления строковой перемнной.
- •Вопрос 50.Операции над строковыми переменными.
- •Вопрос 51.Тип записи: понятие поля, понятие записи, формат объявления записи.
- •52.1.Ввод значений записи.
- •52.2.Вывод записи на экран.
- •52.3.Оператор над записями.
- •53.Файловый тип данных: виды файлов, формат объявления файлового типа.
- •2.Виды файлов
- •Текстовые
- •55.Запись данных в файл данных.
- •56.Вывод данных из файла данных на экран.
55.Запись данных в файл данных.
Чтобы создать файл данных необходимо выполнить следующие действия:
1. Описать файловый тип.
2. Установить связь между файловой переменной в программе и файлом данных на диске. Это делает процедура
Assign (имя файловой переменной, ‘ имя диска: путь к имени файла данных на диске ‘); |
3. Открыть файл для записи с помощью процедуры
Rewrite(имя файловой переменной); |
Эта процедура стирает то, что было записано ранее в данный файл и устанавливает указатель в начало файла, перед его первым элементом. Если набора данных не было, то будет создан новый набор данных.
4. Записать необходимую информацию в файл с помощью оператора
Write(имя файловой переменной, список записываемых переменных); |
5. Закрыть файл с помощью процедуры
Close(имя файловой переменной); |
Если файл не закрыть, то данные файла будут потеряны.
56.Вывод данных из файла данных на экран.
Чтобы прочитать информацию из файла данных, необходимо выполнить следующие пункты:
1.Описать файловый тип и файловую переменную.
2. Установить связь между файловой переменной и файлом данных.
3. Открыть файл для чтения.
4. Прочитать файл с помощью процедуры
Read(имя файловой переменной, имя читаемой переменной); |
По этой процедуре читается очередной элемент файла и его значение присваивается имени читаемой переменной. После этого указатель перемещается на следующую позицию файла. Если в процессе исполнения указатель будет установлен на позицию, в которой уже нет элементов файла, то возникает операция «конец файла» и чтение файла завершается.
5. Закрыть файл.
Пример. Ранее был создан файл данных в каталоге Other с именем masc.dat. Найдем сумму элементов этого файла.
Program a9;
Type celchisla=file of Integer;
Var F:celchisla;
I,n,m,s:Integer;
Begin
Assign(f, ‘c:\Other\masc.dat’);
Reset(f); { Открываем файл для чтения}
Read(f,n); { Читаем первый элемент файла - это количество чисел в массиве и записываем это количество в переменную n}
S:=0;
For i:=1 to n do
Begin
Read(f,m); { Читаем очередной элемент файла и записываем его значение в переменную m}
S:=s+m;
End;
Close(f);
Writeln(‘ Сумма элементов файла =’,s);
End.
Файл, из которого берутся данные, называется входным файлом, а в который записываются данные, называется выходным файлом.
Необходимо отметить, что одновременно записать информацию в файл данных последовательного доступа и прочитать ее, нельзя. Сначала необходимо полностью создать файл данных и только после этого этими данными можно пользоваться.
{№ 1.Дан числовой неупорядоченный массив, содержащий не более n<=50 вещественных чисел.
Найти разность между суммами элементов, стоящих на нечетных и четных местах.
Ввод, вывод массива, а также нахождение сумм оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=Array[1 .. 50] of Integer;
Var n:Integer;
a:mas;
r:Real;
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random(10);
End;
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(c[i]:5);
WriteLn;
End;
Procedure Razn(t:Integer; c:mas; Var u:Real);
Var i:Integer; s1,s2:Real;
Begin
s1:=0;
s2:=0;
For i:=1 to t do
If i mod 2=0 Then s2:=s2+c[i]
Else s1:=s1+c[i];
u:=s1-s2;
End;
{...}
Begin
WriteLn('Введите количество элементов массива:'); ReadLn(n);
Vvod(n,a); WriteLn('Исходный массив:');
Vivod(n,a);
WriteLn('Ответ:');
Razn(n,a,r);
WriteLn('Разность между суммой элементов на нечетных и четных местах в массиве= ',r,'.')
End.
{ № 2.
Дан числовой неупорядоченный массив, содержащий не более n<=50 целых чисел.
Составить новый массив, элементами которого являются суммы делителей каждого числа исходного массива.
Ввод, вывод массива, а также нахождение сумм делителей оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=Array[1 .. 50] of Integer;
Var a,c:mas;
i,t,S,n:Integer;
{...}
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random(40);
End;
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(c[i]:5);
WriteLn;
End;
Procedure Sum(t:Integer; Var m:Integer);
Var a:Integer;
Begin
m:=0;
Repeat
a:=t mod 10; m:=m+a; t:=t div 10;
Until t=0;
End;
Begin
WriteLn('Введите количество элементов в массиве:');ReadLn(n);
Vvod(n,a); WriteLn('Исходный массив:');
Vivod(n,a);
For i:=1 to n do
Begin
t:=a[i]; Sum(t,s); c[i]:=s;
End;
Writeln('Новый массив:');
Vivod(n,c);
{ № 3.
Дан числовой неупорядоченный массив, содержащий не более n<=50 целых чисел.
Составить новый массив, элементами которого являются суммы цифр каждого числа исходного массива.
Ввод, вывод массива, а также нахождение суммы цифр оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=Array[1 .. 50] of Integer;
Var a,c:mas;
n,i,s,t:Integer;
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random(100);
End;
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(c[i]:5);
WriteLn;
End;
Procedure Sum(t:Integer; Var s:Integer);
Var x:Integer;
Begin
s:=0;
Repeat
x:=t mod 10; s:=s+x; t:=t div 10;
Until t=0;
End;
Begin
WriteLn('Введите количество элементов массива:'); ReadLn(n);
Vvod(n,a); WriteLn('Исходный массив:');
Vivod(n,a); For i:=1 to n do
Begin
t:=a[i];
Sum(t,s);
c[i]:=s;
End;
WriteLn('Новый массив:');
Vivod(n,c);
End.
{ № 4.
Дан одномерный массив, содержащий не более 30 целых чисел.
Найти и вывести только те числа, которые оканчиваются на четную цифру.
Ввод, вывод массива и определение, есть ли четная цифра в конце числа, оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=array[1 .. 30] of Integer;
Var a,c:mas;
n,i,j,t:Integer;
Ch:Boolean;
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random(100);
End;
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(c[i]:5);
WriteLn;
End;
Procedure Chot(t:Integer; Var Ch:Boolean);
Var x:Integer;
Begin
x:=t mod 10;
If x mod 2=0 Then Ch:=True
Else Ch:=False;
End;
Begin
WriteLn('Введи количество элементов массива:'); ReadLn(n);
Vvod(n,a); WriteLn('Исходный массив:');
Vivod(n,a);
j:=0;
For i:=1 to n do
Begin
t:=a[i]; Chot(t,Ch);
If Ch=True Then Begin
j:=j+1; c[j]:=t;
End;
End;
WriteLn('Ответ -: Новый массив:'); Vivod(j,c);
End.
{ № 5.
Дан одномерный массив А, содержащий не более N<=50 отрицательных, положительных и нулевых элементов.
Подсчитать, сколько положительных, отрицательных элементов в массиве.
Ввод, вывод массива оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=Array[1 .. 50] of Real;
Var a:mas;
So,Sp,n:Integer;
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random*10-Random*10;
End;
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(c[i]:8:2);
WriteLn;
End;
Procedure Otpol(t:Integer; c:mas; Var uo,up:Integer);
Var i:Integer;
Begin
uo:=0;
up:=0;
For i:=1 to n do
If c[i]>0 Then up:=up+1
Else If c[i]<0 Then uo:=uo+1;
End;
Begin
WriteLn('Введи количество элементов в массиве:');
ReadLn(n);
Vvod(n,a);
WriteLn('Исходный массив:');
Vivod(n,a);
Otpol(n,a,so,sp);
WriteLn('Ответ:');
WriteLn('Количество отрицательных элементов в массиве: ',So,'.');
WriteLn('Количество положительных элементов в массиве: ',Sp,'.');
End.
{ № 6.
Дан одномерный массив А, содержащий не более N<=50 целых чисел.
Подсчитать, сколько чисел в массиве делятся на данное число Х.
Ввод, вывод массива оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=Array[1 .. 50] of Integer;
Var a:mas;
s,x,n:Integer;
{...}
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random(100);
End;
{...}
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(c[i]:5);
WriteLn;
End;
{...}
Procedure Del(t,y:Integer; c:mas; Var u:Integer);
Var i:Integer;
Begin
u:=0;
For i:=1 to t do
If c[i] mod y=0 Then u:=u+1;
End;
{...}
Begin
WriteLn('Введи количество элементов в массиве и задайте какое-то число:');
ReadLn(n,x);
Vvod(n,a);
WriteLn('Исходный массив:');
Vivod(n,a);
Del(n,x,a,s);
WriteLn('Ответ:');
WriteLn('В данном масссиве на ',x,' делится ',s,' элементов массива.');
End.
{ № 7.
Дан одномерный массив А, содержащий не более N<=50 целых чисел.
Подсчитать, сколько нечетных чисел в массиве.
Ввод, вывод массива оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=Array[1 .. 50] of Integer;
Var a:mas;
n,S:Integer;
{...}
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random(10);
End;
{...}
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(c[i]:5);
WriteLn;
End;
{...}
Procedure Nechot(t:Integer; c:mas; Var u:Integer);
Var i:Integer;
Begin
u:=0;
For i:=1 to t do
If c[i] mod 2<>0 Then u:=u+1;
End;
{...}
Begin
WriteLn('Введи количество элементов массива:');
ReadLn(n);
Vvod(n,a);
WriteLn('Исходный массив:');
Vivod(n,a);
Nechot(n,a,s);
WriteLn('В данном массиве ',s,' нечетных чисел.');
End.
{ № 8.
Дан одномерный массив А, содержащий не более N<=50 целых чисел.
Подсчитать, сколько в массиве чисел равных данному числу Х.
Ввод, вывод массива оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=Array[1 .. 50] of Integer;
Var a:mas;
n,x,s:Integer;
{...}
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random(100);
End;
{...}
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(a[i]:5);
WriteLn;
End;
{...}
Procedure Ravn(t,y:Integer; c:mas; Var u:Integer);
Var i,s:Integer;
Begin
s:=0;
For i:=1 to t do
If c[i]=y Then u:=u+1;
End;
{...}
Begin
WriteLn('Введите количество элементов в массиве и задайте какое-то число:');
ReadLn(n,x);
Vvod(n,a);
WriteLn('Исходный массив:');
Vivod(n,a);
WriteLn('Ответ:');
Ravn(n,x,a,s);
WriteLn('Кол-во чисел равных числу\',x,'\ ровно = ',s,'.');
End.
{ № 10.
Дан одномерный массив А, содержащий не более N<=50 целых чисел.
Циклически сдвинуть элементы массива на К позиций вправо.
Ввод, вывод массива оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=array[1 .. 50] of Integer;
Var a:mas;
n,k:Integer;
{...}
Procedure Vvod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
c[i]:=Random(100);
End;
{...}
Procedure Vivod(t:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to t do
Write(a[i]:5);
WriteLn;
End;
{...}
Procedure Cikl(t,m:Integer; Var c:mas);
Var i,j,x:Integer;
Begin
For i:=1 to m do
Begin
x:=c[t];
For j:=t-1 downto 1 do
c[j+1]:=c[j];
c[1]:=x;
End;
End;
Begin
WriteLn('Введи количество элементов в массиве и количество позиций сдвига:');
ReadLn(n,k);
Vvod(n,a); WriteLn('Исходный массив:');
Vivod(n,a); WriteLn('Новый массив:');
Cikl(n,k,a);
Vivod(n,a);
End.
{ № 11.
Дан одномерный массив А, содержащий не более N<=50 целых чисел.
Определить, является ли первое число массива простым.
Ввод, вывод массива оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type mas=Array[1 .. 50] of Integer;
Var n,s,i:Integer;
a:mas;
Procedure Vvod(n:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to n do
c[i]:=Random(20);
End;
Procedure Vivod(n:Integer; Var c:mas);
Var i:Integer;
Begin
For i:=1 to n do
Write(c[i]:5);
WriteLn;
End;
Procedure Sost(n,i:Integer; c:mas);
Var j,s:Integer;
Begin
Begin
s:=0;
For j:=1 to c[i] do
If c[i] mod j=0 Then s:=s+1;
End;
Case s of
0:WriteLn('Элемент массива под номером ',i,' равен: 0','.');
1:WriteLn('Элемент массива под номером ',i,' равен: 1','.');
2:WriteLn('Элемент массива под номером ',i,' простой.');
Else WriteLn('Элемент массива под номером ',i,' составной.');
End;
End;
Begin
WriteLn('Введи количество элементов массива и номер элемента массива:');
ReadLn(n,i);
Vvod(n,a);
WriteLn('Исходный массив:');
Vivod(n,a);
Sost(n,i,a);
End.
{ № 12.
Дан двумерный массив, содержащий не более 10 строк и не более 10 столбцов.
Вывести на экран номера только тех строк, в которых есть четные числа.
Ввод, вывод массива и вывод номеров нужных строк оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=Array[1 .. 10,1 .. 10] of Integer;
Var a:opr;
i,k,n:Integer;
NS:Boolean;
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10);
End;
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do Write(c[i,j]:8);WriteLn;
End;
End;
Procedure Strok(t,p:Integer; Var c:opr);
Var i,j,s:Integer; NS:Boolean;
Begin
For i:=1 to t do
Begin
s:=0;
For j:=1 to p do
If c[i,j] mod 2=0 Then s:=s+1;
If s>0 Then NS:=True
Else NS:=False;
If NS=True Then Write(i:3);
End;
End;
Begin
WriteLn('Введи количество строк и столбцов в массиве:'); ReadLn(n,k);
Vvod(n,k,a); WriteLn('Исходный массив:');
Vivod(n,k,a); WriteLn('Ответ:');
WriteLn('Четные числа содержатся в строках:');Strok(n,k,a);
End.
{ № 13.
Дан двумерный массив, содержащий не более 10 строк и не более 10 столбцов.
Вывести на экран номера тех столбцов, в которых есть отрицательные числа.
Ввод, вывод массива и нахождение ответа оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=Array[1..10,1..10] of Integer;
Var a:opr;
n,k:Integer;
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10)-Random(10);
End;
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do
Write(c[i,j]:4);
WriteLn;
End;
End;
Procedure Otric(t,p:Integer; c:opr);
Var i,j,s:Integer;
Begin
For j:=1 to p do
Begin
s:=0;
For i:=1 to t do
If a[i,j]<0 Then s:=s+1;
If S<>0 Then Writeln(j,'-ый столбец содержит отрицательное число.');
End;
End;
Begin
WriteLn('Введи количество строк и столбцов в массиве:');
ReadLn(n,k);
Vvod(n,k,a);
WriteLn('Исходный массив:'); Vivod(n,k,a);
WriteLn('Вывод:');
Otric(n,k,a);
End.
{ № 14.
Дан двумерный массив, содержащий не более 10 строк и не более 10 столбцов.
Ответить на вопрос, есть ли в массиве отрицательные элементы.
Ввод, вывод массива и нахождение ответа оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=array[1 .. 10,1 .. 10] of Integer;
Var a:opr;
n,m:Integer;
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10)-Random(10);
End;
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do
Write(c[i,j]:5);
WriteLn;
End;
End;
Procedure otric(t,p:Integer; c:opr);
Var i,j,s:Integer;
Begin
s:=0;
For i:=1 to t do
For j:=1 to p do
If c[i,j]<0 Then s:=s+1;
If s>0 Then Begin
WriteLn('В определителе присутствуют отрицательные числа.');
WriteLn('Их количество составляет число:',s:3,'.');
End
Else WriteLn('В определителе нет отрицательных чисел.')
End;
Begin
WriteLn('Введи количество строк и столбцов:');
ReadLn(n,m); Vvod(n,m,a);
WriteLn('Исходный определитель:');Vivod(n,m,a);
WriteLn('Ответ:'); otric(n,m,a);
End.
{ № 15.
Дан двумерный массив, содержащий не более 10 строк и не более 10 столбцов.
Ответить на вопрос, есть ли в массиве элементы равные данному числу Х.
Ввод, вывод массива и нахождение ответа оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=Array[1..10,1..10] of Integer;
VAR a:opr; n,m,x:Integer;
{...}
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10);
End;
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do
Write(c[i,j]:5);
WriteLn;
End;
End;
Procedure chix(t,p,y:INTEGER; c:opr);
Var i,j,s:Integer;
Begin
s:=0;
For i:=1 to t do
For j:=1 to p do
If c[i,j]=y Then s:=s+1;
If s>1 Then WriteLn('Ответ: В данном массиве есть числа, равные ',y,'.')
Else WriteLn('Ответ: В данном массиве нет чисел, равных ',y,'.');
End;
Begin
WriteLn('Введи количество строк , столбцов и заданное число X:');
ReadLn(n,m,x);
Vvod(n,m,a);
WriteLn('Исходный определитель:');
Vivod(n,m,a);
chix(n,m,x,a);
End.
{ № 16.
Дан двумерный массив, содержащий не более 10 строк и 10 столбцов.
Составить новый массив, элементами которого являются 0, если число массива четное, и 1, если число массива нечетное.
Ввод, вывод массива и нахождение ответа оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=Array[1..10,1..10] of Integer;
Var a:opr; n,m,i,j:Integer;
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10);
End;
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do
Write(c[i,j]:5);
WriteLn;
End;
End;
Procedure chot(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
Begin
If c[i,j] mod 2=0 Then c[i,j]:=0;
If c[i,j] mod 2<>0 Then c[i,j]:=1;
End;
End;
Begin
WriteLn('Введи количество строк и столбцов:');
ReadLn(n,m); Vvod(n,m,a);
WriteLn('Исходный определитель:');
Vivod(n,m,a);
WriteLn('Полученный определитель:');
chot(n,m,a);
Vivod(n,m,a);
End.
{ № 17.
Дан двумерный массив, содержащий не более 10 строк и 10 столбцов.
Составить новый массив, элементами которого являются суммы по строкам.
Ввод, вывод массива и нахождение ответа оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=Array[1..10,1..10] of Integer;
mas=Array[1..10] of Integer;
Var a:opr;
s:mas;
n,m:Integer;
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10);
End;
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do
Write(c[i,j]:5);
WriteLn;
End;
End;
Procedure Sum(t,p:Integer; c:opr; Var k:mas);
Var i,j,x:Integer;
Begin
For i:=1 to t do
Begin
x:=0;
For j:=1 to p do
x:=x+c[i,j]; k[i]:=x;
End;
For i:=1 to t do
Write(k[i]:5); WriteLn;End;
Begin
WriteLn('Введи количество строк и столбцов:'); ReadLn(n,m);
Vvod(n,m,a); WriteLn('Исходный определитель:');
Vivod(n,m,a);
WriteLn('Полученный массив:') ; Sum(n,m,a,s);
End.
{ № 18.
Дан двумерный массив, содержащий не более 10 строк и 10 столбцов.
Найти сумму элементов, лежащих над главной диагональю.
Ввод, вывод массива и нахождение ответа оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=Array[1..10,1..10] of Integer;
Var a:opr; n,m,s:Integer;
{...}
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10);
End;
{...}
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do
Write(c[i,j]:4);
WriteLn;
End;
End;
{...}
Procedure Sum(t,p:Integer; c:opr; Var k:Integer);
Var i,j:Integer;
Begin
k:=0;
For i:=1 to p-1 do
For j:=i+1 to p do
k:=k+a[i,j];
End;
Begin
WriteLn('Введи количество строк и столбцов:');
ReadLn(n,m);
Vvod(n,m,a);
WriteLn('Исходный определитель:');
Vivod(n,m,a);
Sum(n,m,a,s);
WriteLn('Сумма элементов над главной диагональю =',s:5,'.');
End.
{ № 19.
Дан двумерный массив, содержащий не более 10 строк и 10 столбцов.
Найти сумму элементов, лежащих под главной диагональю.
Ввод, вывод массива и нахождение ответа оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=Array[1..10,1..10] of Integer;
Var a:opr;
n,m,s:Integer;
{...}
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10);
End;
{...}
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do
Write(c[i,j]:4);
WriteLn;
End;
End;
Procedure Sum(t,p:Integer; c:opr; Var k:Integer);
Var i,j:Integer;
Begin
K:=0;
For i:=2 to t do
For j:=1 to i-1 do
k:=k+a[i,j];
End;
Begin
Writeln('Введи количество строк и столбцов:');
Readln(n,m);
Vvod(n,m,a);
WriteLn('Исходный определитель:');
Vivod(n,m,a);
Sum(n,m,a,s);
WriteLn('Сумма элементов под главной диагональю=',s:5,'.');
End.
{ № 20.
Дан двумерный массив, содержащий не более 10 строк и 10 столбцов.
Найти сумму элементов, лежащих под побочной диагональю.
Ввод, вывод массива и нахождение ответа оформить в виде подпрограмм.}
Program Scylla;
Uses Crt;
Type opr=Array[1..10,1..10] of Integer;
Var a:opr;
n,m,s:Integer;
{...}
Procedure Vvod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
For j:=1 to p do
c[i,j]:=Random(10);
End;
{...}
Procedure Vivod(t,p:Integer; Var c:opr);
Var i,j:Integer;
Begin
For i:=1 to t do
Begin
For j:=1 to p do
Write(c[i,j]:4);
WriteLn;
End;
End;
{...}
Procedure Sum(t,p:Integer; c:opr; Var k:Integer);
Var i,j:Integer;
Begin
k:=0;
For i:=1 to t do
For j:=1 to t-i do
k:=k+a[i,j];
End;
Begin
WriteLn('Введи количество строк и столбцов:');
ReadLn(n,m);
Vvod(n,m,a);
Writeln('Исходный определитель:'); Vivod(n,m,a);
Sum(n,m,a,s);
WriteLn('Сумма элементов под побочной диагональю=',s:5,'.');
End.