Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы - Паскаль.doc
Скачиваний:
8
Добавлен:
04.11.2018
Размер:
4.84 Mб
Скачать

Задание 2.

Создать текстовый файл, в который построчно записать квадратный массив massivnn, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размер массива n задать константой. Границы диапазона v_min и v_max задать с консоли. Прочитать из созданного файла числа построчно, главную и побочную диагонали массива и вывести их на экран. При чтении из файла массив не использовать и считать размер массива неизвестным.

1. Создадим на D:\User файл chisla.txt, откроем его для записи и запишем в него созданный массив построчно, разделяя элементы массива пробелами. Откроем его для чтения и прочитаем до конца, определив количество count записанных в нем чисел. Определим размер записанного массива m , взяв корень квадратный из найденного количества чисел. Снова откроем файл для чтения, и прочитаем записанные в нем числа двумя вложенными циклами: внешним (i)– по строкам, и внутренним (j) – по столбцам. При i=j читается число на главной диагонали, при i=n-j+1 читается число на побочной диагонали.

2. Схема алгоритма решения задачи:

3. Код программы:

Program Variant_0;

Uses WinCrt;

Const n = 5; {задание размера массива именованной константой}

Var i, j : Word;

k, v_min, v_max, count, m1, n1: Integer;

massiv : Array [1..n, 1..n] Of Integer;

f: Text;

Begin

Randomize; {запуск генератора случайных чисел}

WriteLn('Лабораторная работа №8_2');

WriteLn('Вариант №0');

WriteLn('ИС-11-1');

WriteLn('Пупкин Василий');

WriteLn;

WriteLn('Задайте диапазон случайных чисел');

Write('v_min=');

ReadLn(v_min);

Write('v_max=');

ReadLn(v_max);

For i:=1 To n Do {заполнение массива случайными числами}

For j:=1 To n Do

massiv[i,j]:=Random(v_max-v_min + 1) + v_min;

Assign(f, 'D:\User\f.txt');

ReWrite(f); {открываем файл для записи}

For i:=1 To n Do {записываем в файл исходный массив построчно}

Begin

For j:=1 To n Do

Write(f, massiv[i,j]:5);

WriteLn(f);

End;

Close(f); {закрываем файл}

ReSet(f); {открываем файл для чтения}

count:=0; {количество записанных в файле чисел}

While (Not(EOF(f))) Do

Begin

Read(f, k);

count:=count+1;

End;

ReSet(f);

m1:=0; {количество чисел в первой строке – количество столбцов}

While (Not(EOLn(f))) Do

Begin

Read(f, k);

m1:=m1+1;

End;

n1:=count div m1; {количество строк}

WriteLn;

Writeln('строк=', n1);

Writeln('столбцов=', m1);

WriteLn;

WriteLn('Прочитанный из файла массив:');

WriteLn;

ReSet(f);

For i:=1 To n1 Do

Begin

For j:=1 To m1 Do

Begin

Read(f, k); {читаем очередное число}

Write(k:5); {и выводим его на экран}

End; {j}

WriteLn;

End; {i}

WriteLn;

WriteLn('Главная диагональ:');

Reset(f); {снова открываем файл для чтения}

For i:=1 To n1 Do

Begin

For j:=1 To m1 Do

Begin

Read(f, k);

If (i=j)

Then Write(k:5);

End; {j}

End; {i}

WriteLn;

WriteLn('Побочная диагональ:');

Reset(f); {снова открываем файл для чтения}

For i:=1 To n1 Do

Begin

For j:=1 To m1 Do

Begin

Read(f, k);

If (i=m1-j+1)

Then Write(k:5);

End; {j}

End; {i}

WriteLn;

Close (f);

End.

  1. Компиляция, отладка, тестирование и получение результата:

  1. Структура файла f.txt:

-9 -9 2 -6 2

1 9 -10 7 -9

3 0 -3 3 6

2 8 -6 -10 9

-9 7 2 -1 -4