Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
рук-во по РГР c указанием сложности.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
205.82 Кб
Скачать

Расчётно графическая работа

по дисциплине «Информатика»

Тема: «Вложенные циклы»

Выполнил : студент гр. А064

Иванов И.И.

Проверил: доц. каф. ММИиТС

Медведкова И.Е.

Воронеж 2006

Задание

Считать из файла целочисленную матрицу и вывести ее на экран, выделяя цветом те ее строки, в которых сумма элементов кратна N. N ввести с терминала и предусмотреть ее неоднократный ввод.

Описание программы

Программа состоит из 2-х основных частей.

  1. Считывание матрицы из файла

  2. Печать матрицы в соответствии с заданием.

Считывание из текстового файла dat.txt исходной матрицы М организовано построчно двумя вложенными циклами с предусловием (WHILE). Использование цикла с условием предпочтительнее по сравнению с циклом FOR, поскольку при этом исключается ситуация, когда программа пытается считать из файла целое число, а файл уже весь считан. Эта ситуация исключается потому что в цикле WHILE проверяется условие того, что конец файла не достигнут (Eof(f)=false).

После окончания считывания производится проверка: все ли элементы матрицы заполнены. Если в файле не было достаточного числа данных, то печатается диагностика: ‘ Проверьте данные в файле dat.txt’ и прогон прекращается.

2-я часть программы - печать матрицы. В задании оговорено, что это действие должно повторяться произвольное число раз по желанию пользователя.

Признаком того, что программу надо закончить является ввод запрашиваемой переменной N равной 0. Это условие проверяется в цикле с постусловием REPEAT.

Каждая итерация цикла REPEAT начинается с ввода переменной N. Потом матрица просматривается построчно. Для каждой строки считается сумма S, и если она равна N, то строка печатается красным цветом, а в противном случае – зелёным.

Блок схема программы

Текст программы

Program Matr;

Uses CRT;

Const kstr = 5;

Kstb = 7;

Var f: text;

M: array [1..kstr, 1.. kstb] of integer;

N, i, j, kstr, kstb : byte;

Begin

Assign (f, ‘dat.txt’);

Reset (f);

Readln(f, kstr, kstb);

i:=1;

While (Eof(f) = false) or (i> kstr) do {считывание всех строк

матрицы}

Begin

j:=1;

While (Eof(f) = false) or (j> kstb) do {считывание всех

элементов i –й строки матрицы}

Begin

Readln(f, M[I,j]); {считывание очередного элем.}

Inc(j); {переход к следующему элем. i –й строки}

End;

Inc(i); {переход к следующей строке матрицы}

End;

// Проверка, считаны ли все элементы матрицы

If (i<= kstr) or (j<= kstb) then {если не удалось считать

матрицу}

Begin

Writeln(‘ Проверьте данные в файле dat.txt’);

Exit; {Выход из программы}

End;

// считывание матрицы закончено

// Печать матрицы

{ Цикл, повторяющийся до тех пор, пока с терминала не будет введён признак конца – 0}

Repeat

ClrScr; {очистка экрана}

Goto XY (3,5);

Write (‘ введите число, кратность которому будет проверяться’);

Readln(N);

If N=0 then break {выход из цикла Repeat, если ведён

признак окончания }

{подсчёт построчных сумм и печать строк}

for i:= 1 to kstr do

begin

s:=0;

for j:= 1 to kstb do {подсчёт суммы i-й строки}

s:=s+M[i,j];

// печать i-й строки красным либо зелёным цветом

Goto XY (5,5);

If S mod N =0 then

Begin

TextColor (Red); {установка красного цвета символов}

for j:= 1 to kstb do {печать i-й строки}

writeln (M[i,j] :4);

End

else

Begin

TextColor (Green); {установка зелёного цвета

символов}

for j:= 1 to kstb do {печать i-й строки}

writeln (M[i,j] :4);

End

Until N=0;

End.

Результат прогона программы

Если исходный файл dat.txt таков:

  1. 6

1 3 5 4 0 10

8 1 3 3 7 1

12 4 3 1 0 1

2 2 2 2 2 2

Результатом работы программы будет:

введите число, кратность которому будет проверяться 6

1 3 5 4 0 10

8 1 3 3 7 1

12 4 3 1 0 1

2 2 2 2 2 2

В данном тексте красный цвет показан жирным шрифтом.

Контрольные вопросы

  1. Какого назначение модуля CRT?

  2. Общие о отличительные черты процедур ClrScr, ClrEol, DelLine .

  3. Назначение процедуры GotoXY, функций WhereX и WhereY.

  4. Какого назначение стандартных процедур Sound, NoSound и Delay ?

  5. Какие процедуры используются для установления цвета фона и цвета символов?

  6. Сколько цветов доступно для установления цвета фона?

  7. Сколько цветов доступно для установления цвета текста?

  8. Как, используя модули, создать области глобальных переменных, доступные в одних и недоступные в других модулях?

  9. В чем состоит отличие сферы действия переменных в модуле и процедуре головной программы?

  10. Каков порядок трансляции многомодульной программы?

  11. Как задать каталог, куда будет помещён откомпилированный модуль?

  12. Что содержит раздел интерфейса?

  13. Что содержит исполняемый раздел?

  14. Что содержит раздел инициализации?

  15. В чем разница между разделом интерфейса и исполняемым разделом?

  16. Когда выполняется раздел инициализации?

  17. Может ли модуль не содержать раздел инициализации?

  18. Как запустить на выполнение многомодульную программу?

  19. Какие настройки надо установить в среде TURBO-PASCAL 7.0 для прогона программы, содержащей пользовательские модули?