Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_voprosy_na_ekzamen_33__33__33__33.doc
Скачиваний:
38
Добавлен:
23.09.2019
Размер:
814.08 Кб
Скачать

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.

79

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]