Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 702

.pdf
Скачиваний:
3
Добавлен:
30.04.2022
Размер:
537.71 Кб
Скачать

В частности, изучить и занести в отчет следующие сведения:

1)структурированные типы данных;

2)массивы данных одномерные и многомерные;

3)описание массивов;

4)операции по обработке массивов.

3. Изучить содержание работы, быть готовым к ответу на контрольные вопросы.

4. Ознакомиться с лабораторными заданиями и методическими указаниями по их выполнению, изложенными в методических указаниях примерами.

6. ЛАБОРАТОРНЫЕ ЗАДАНИЯ И МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ИХ ВЫПОЛНЕНИЮ

Написать программу работы с массивом чисел. Варианты заданий приведены в табл. 5.

В программе использовать:

подпрограммы-процедуры (Procedure) для оформления решения отдельных подзадач;

дополнительные процедуры и функции модуля Crt для управления режимом отображения текста программы при выполнении.

Общий алгоритм выполнения программы:

1. Запросить у пользователя размерность двумерного массива и способ заполнения (автоматически или с клавиатуры).

2. Заполнить массив заданной размерности случайными числами или числами, введенными пользователем с клавиатуры.

3. Вывести все элементы массива на экран построчно.

4. Решить основное задание согласно варианту.

5. Вывести результаты решения основного задания на экран.

6. Вывести обновленные значения элементов массива на экран.

Таблица 5

 

Варианты основных заданий

 

 

Основное задание

Найти среднее значение элементов массива. От значений эле-

1ментов отнять среднее значение. Вывести отрицательные элементы массива на экран

20

Продолжение табл. 5

Найти среднее значение элементов массива. От значений эле-

2ментов отнять среднее значение. Вывести положительные элементы массива на экран

3Найти максимальный элемент массива. Все элементы столбца, в котором он находится, обнулить

4Найти минимальный элемент массива. Все элементы строки и столбца, в которых он находится, обнулить

5Найти сумму элементов массива. Все элементы массива разделить на это значение. Найти максимальный элемент массива Найти среднее значение элементов массива. От значений эле-

6ментов отнять среднее значение. Найти минимальный элемент массива

7Найти минимальный элемент массива. Все элементы массива разделить на значение минимального элемента

Найти минимальный и максимальный элементы массива.

8Найти сумму всех элементов массива Найти минимальный и максимальный элементы массива. Все

9элементы строк и столбцов, в которых они находятся, обнулить

Найти максимальный элемент массива. Вывести все элементы

10строки, в которой он находится. Найти их сумму и среднее значение

Пример. Написать программу работы с массивом чисел согласно варианту задания: найти максимальный элемент массива. Все элементы строки, в которой он находится, обнулить.

В программе использовать:

подпрограммы-процедуры (Procedure) для оформления решения отдельных подзадач (например, поиска минимального элемента или вывода элементов на экран);

дополнительные процедуры и функции модуля Crt для управления режимом отображения текста программы при ее выполнении.

Текст программы с использованием процедур приведен ниже.

21

Program lab_4; Var

i, j, k, l, m, n, v: integer;

mass : array[1..10,1..10] of real; max : real;

Procedure autovvod_elementov; Begin

randomize;

for i:=1 to m do for j:=1 to n do

mass[i,j]:=random(100);

End;

Procedure vvod_elementov; Var

i, j : integer; Begin

for i:=1 to m do for j:=1 to n do

begin

writeln('Введите элемент [',i,',',j,']'); readln(mass[i,j]);

end;

End;

Procedure max_element; Begin

max:=mass[1,1]; k:=1; l:=1; for i:=1 to m do

for j:=1 to n do begin

if mass[i,j]>max then begin max:=mass[i,j]; k:=i; l:= j;

end;

end;

writeln ('Максимальный элемент массива [',k,',',l,']=',max:2:2); readln;

for j:=1 to n do mass[k,j]:=0;

22

End;

Procedure vyvod_elementov; Begin

for i:=1 to m do begin for j:=1 to n do

begin

write(' [',i,',',j,']=',mass[i,j]:2:1); end;

readln;

end;

End; BEGIN

writeln('Выберите способ ввода:');

writeln('1 – Автозаполнение случайными числами'); writeln('2 – Заполнение числами, введенными с клавиатуры'); writeln('3 – Выход из программы');

readln(v);

if (v<>1) and (v<>2) then halt; writeln('Введите число строк – m, m<10'); readln(m);

writeln('Введите число столбцов – n, n<10'); readln(n);

case v of

1:autovvod_elementov;

2:vvod_elementov; end; vyvod_elementov; max_element; vyvod_elementov;

END.

7. СОДЕРЖАНИЕ ОТЧЕТА ПО ЛАБОРАТОРНОЙ РАБОТЕ

7.1. Результаты выполнения подготовительного задания: титульный лист, цель и задачи работы, краткие теоретические сведения.

7.2. Результаты выполнения лабораторных заданий, оформленные в виде листинга программы с указанием результата ее выполнения.

23

7.3. Выводы по результатам выполнения заданий и заключение по работе в целом.

8. КОНТРОЛЬНЫЕ ВОПРОСЫ

8.1.Какие типы данных Turbo Pascal 7.0 относятся к структурированным и какие особенности они имеют?

8.2.Дайте характеристику массивов.

8.3.Как описываются массивы в программах?

8.4.Как осуществляется доступ к элементам массива?

8.5.Перечислите основные операции с массивами.

24

ЛАБОРАТОРНАЯ РАБОТА № 4

РАБОТА СО СТРОКАМИ. ЧТЕНИЕ И ЗАПИСЬ В ФАЙЛ

1. ЦЕЛЬ РАБОТЫ

Изучение и приобретение навыков работы со строками и тексто-

выми файлами в Turbo Pascal 7.0.

2.ЗАДАЧИ РАБОТЫ

1.Получение навыков работы с символьным и строковым типом данных.

2.Получение навыков работы с текстовыми файлами.

3.СОСТАВ ИСПОЛЬЗУЕМЫХ АППАРАТНО-ТЕХНИЧЕСКИХ

СРЕДСТВ

Персональная ЭВМ класса IBM PC стандартной конфигурации, интегрированная инструментальная оболочка Turbo Pascal 7.0.

4. УКАЗАНИЯ ПО ТЕХНИКЕ БЕЗОПАСНОСТИ

Перед выполнением лабораторной работы каждый студент должен изучить правила техники безопасности при работе с ПЭВМ в лаборатории. К работе допускаются студенты, прошедшие инструктаж по технике безопасности и расписавшиеся в регистрационном журнале.

5.ПОДГОТОВИТЕЛЬНОЕ ЗАДАНИЕ

1.Заготовить установленную форму отчета по лабораторной работе. На титульном листе указать номер и название работы, в отчет записать цель и задачи работы.

2.Ознакомиться и занести в отчет краткие теоретические сведения о символьном и строковом типах данных, использовании файлов при программировании в Turbo Pascal 7.0 [1, раздел 3.3, раздел 3.4.3, раздел 3.4.6].

25

В частности, изучить и занести в отчет следующие сведения:

1)определение символьного типа данных;

2)операции с символьными типами данных;

3)определение строкового типа данных;

4)операции со строковыми типами данных;

5)определение файла и файловых переменных в TP 7.0;

6)операции с файловыми переменными.

3. Изучить содержание работы, быть готовым к ответу на контрольные вопросы.

4. Ознакомиться с лабораторными заданиями и методическими указаниями по их выполнению, изложенными в методических указаниях примерами.

6. ЛАБОРАТОРНЫЕ ЗАДАНИЯ И МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ИХ ВЫПОЛНЕНИЮ

Написать программу обработки текста и чтения/записи в файл. Варианты заданий приведены в табл. 6.

В программе использовать:

текстовые файлы input.txt и output.txt для чтения и записи текста соответственно;

подпрограммы-процедуры (Procedure) для оформления решения отдельных подзадач;

дополнительные процедуры и функции модуля Crt для управления режимом отображения текста программы при ее выполнении.

Таблица 6

 

Варианты основных заданий

 

 

Основное задание

 

Считать предложение из файла. Слова разделены одним пробе-

 

лом. Подсчитать количество слов и букв ‘e’ в нем. Вывести на

1экран. В файл записать предложение по словам. Каждое слово – на новой строке.

Предложение: «Every dog is a lion at home»

26

 

Продолжение табл. 6

 

 

Основное задание

Считать предложение из файла. Слова разделены несколькими

пробелами.

Подсчитать и вывести на экран количество слов и

2количество всех букв в предложении. В файл записать предложение по словам. Каждое слово – на новой строке. Предложение: «The dogs bark, but the caravan goes on»

Считать предложение из файла. Слова разделены одним пробе-

3лом. Подсчитать количество слов и букв ‘a’ в нем. Вывести на экран. Предложение: «Every dog is valiant at his own door»

Считать предложение из файла. Слова разделены хештегом (/). Подсчитать и вывести на экран количество слов и количество

4всех букв в предложении. Каждое слово – на новой строке.

Предложение: «A bad beginning makes a bad ending»

Считать предложение из файла. Слова разделены звездочкой (*).

5Подсчитать количество слов и букв ‘r’ в нем. Вывести на экран и в файл по 2 слова на строке. Предложение: «A broken friendship may be soldered, but will never be sound»

Считать предложение из файла. Слова разделены двумя пробелами. Подсчитать и вывести на экран количество слов и количе-

6ство всех букв в предложении, а также количество букв ‘b’. Каждое слово – на новой строке. Предложение: «A bad beginning makes a bad ending»

Считать предложение из файла. Слова разделены запятой. Под-

7считать количество слов и букв ‘t’ в нем. В файл и на экран записать предложение целиком, а потом только четные слова.

Предложение: «Every man is the architect of his own fortunes»

Программа должна подсчитать количество символов во введен-

8ной с клавиатуры строке, а также количество букв ‘a’ и выводить эти числа в файл «output.txt». Предложение: «A bad beginning makes a bad ending»

Программа должна подсчитать количество символов в заданном текстовом файле «input.txt», а также количество символов ‘o’ и

9выводить в файл «output.txt» найденное значение. Содержание файла: «No man loves his fetters, be they made of gold. Custom is the plague of wise men and the idol of fools»

27

Общий алгоритм выполнения программы:

1.Связать и открыть файлы input.txt и output.txt для чтения и перезаписи соответственно.

2.Считать фразу из файла input.txt и вывести ее на экран.

3.Фразу разбить на слова.

4.Вывести фразу на экран по словам.

5.Решить основное задание согласно варианту из табл. 6.

6.Вывести результаты решения основного задания на экран. Пример. Считать предложение из файла. Слова разделены

пробелом. Упорядочить слова по длине. В каждом слове последнюю букву перенести в начало слова. В файл записать предложение по словам.

Текст программы, реализующей задание, приведен ниже: program text_file;

uses crt; var f,ff:text;

predl,sl,bukva:string; slovo:array[1..10]of string; i,j,k:integer;

begin assign(f,'d:\input.txt'); reset(f); assign(ff,'d:\output.txt'); rewrite(ff);

while not eof (f) do read(f,predl); clrscr;

writeln('Исходное предложение:'); writeln(predl);

readkey;

writeln('Предложение по словам, упорядоченным по длине:'); k:=1;

slovo[k]:=' ';

for i:=1 to length(predl) do if predl[i]<>' ' then

slovo[k]:=slovo[k]+predl[i] else

28

begin k:=k+1; slovo[k]:=' ';

end;

for j:=1 to k-1 do for i:=1 to k-j do

if length(slovo[i])<length(slovo[i+1]) then begin

sl:=slovo[i];

slovo[i]:=slovo[i+1];

slovo[i+1]:=sl;

end;

for j:=1 to k do writeln(slovo[j]);

readkey;

writeln('Последняя буква перенесена в начало слова:'); for j:=1 to k do

begin bukva:=copy(slovo[j],length(slovo[j]),1); insert(bukva, slovo[j],1); delete(slovo[j],length(slovo[j]),1);

end;

for j:=1 to k do begin

writeln(slovo[j]);

writeln(ff,slovo[j]);

end;

readkey;

close(f);

close(ff);

end.

29