Автор работы: Пользователь скрыл имя, 16 Января 2011 в 19:32, лабораторная работа
1 Цель работы:
Выявление особенностей применения операторов работы с массивами и строками в процессе построения программы на языке Pascal.
Лабораторная работа 3
Основы работы с массивами и строками Pascal
1 Цель работы:
Выявление особенностей применения операторов работы с массивами и строками в процессе построения программы на языке Pascal.
2 Ход работы:
Задача 1:
Написать приложение, которое формирует двумерный массив рамером 9х8 и заполняет его случайными числами. Переставить местами четные и нечетные столбцы.
Program lab3z1;{Название программы}
uses crt;{Использование модуля для исчисления математических функций}
var{Раздел объявления переменных}
a:array[1..9,1..8] of integer;{Двумерный массив с указанной размерностью и типом элементов}
i,j,D:integer;{Переменные используемые в процессе решения}
begin
clrscr;
randomize;{Инициализация генератора случайных чисел}
writeln('Ishodny massiv');
for i:=1 to 9 do{Количество строк}
begin
for j:=1 to 8 do{Количество столбцов}
begin
a[i,j]:=random(50);{
write(a[i,j]:5);{Вывод элементов на экран с заданием минимальной ширины поля под каждый элемент}
end;
writeln;{Переход на слудующую строку массива}
end;
writeln;{Пустая строка для разделения массивов между собой}
writeln('Vid massiva posle perestanovki');
for i:=1 to 9 do
for j:=1 to 8 do
begin
if (j mod 2)=0 then{Выбор четных элементов в строке}
begin
D:=a[i,j];{Присвоение переменной значения выбранного элемента}
a[i,j]:=a[i,j-1];{
a[i,j-1]:=D;{Присвоение значения четного элемента нечетному}
end;
end;
for i:=1 to 9 do
begin
for j:=1 to 8 do
write(a[i,j]:5);
writeln;
end;
readln;
end.
Блок схема 1:
Вывод элементов массива на экран:
Задача 2:
Написать приложение, которое позволяет разбить на слова введенное пользователем с клавиатуры предложение.
Program lab3z2;
uses crt;
var
p:string;{Предложение вводимое пользователем}
razd:string;{Разделители}
sost:string;{Слова}
i:word;
begin
clrscr;
writeln('napishite predlogenie’);
readln(p);{Вводимое пользователем предложение}
p:=p+' ';{Добавляем в конец предложения знак из числа разделителей, т.к. если предложение будет заканчиваться без знаков препинания, программа не выведет последнее слово}
writeln;
writeln('predlogenie coctoit iz:’);
razd:=' ,:;-().?!';{Перечисление разделителей}
sost:='';{Обнуление переменной}
for i:=1 to length(p) do{Цикл с первого и до последнего элемента строки}
begin
if pos(p[i],razd)=0 then sost:=sost+p[i] else{Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат – целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0}
begin
if length(sost)>0 then writeln(sost);{Возвращает текущий размер строки и если он больше нуля, значит это слово}
sost:='';{Обнуление переменной}
end;
end;
readln;
end.
Блок схема 2: Разбиение предложения на слова
Задача 3:
Написать приложение, которое загружает текст из файла формата .txt, разбивает на слова, сортирует слова по алфавиту и сохраняет отсортированный список слов в отдельном файле.
Program lab3z1;
uses crt;
var
fcht,fzap:text;{Переменные типа текс для считывания и записи текста в файлы}
a:array[1..50] of string[10];{Массив для сортировки}
razd:string;
slovo:string;
input,output:string;{
s,sort:string;{Переменная используемая для сортировки}
i,j,h:word;{Переменные используемые в циклах}
begin
clrscr;
input:='input.txt';
output:='output.txt';
assign(fcht,input);{
reset(fcht);{Режим чтения файла}
razd:=' ,:;-().?!';
slovo:='';
h:=0;{Обнуление переменной для определения размера массива}
while not eof(fcht) do{Функция определяющая конец файла}
begin
readln(fcht,s);{Чтение: переменная из которой считывают, переменная, в которую считывают}
s:=s+' ';
for i:=1 to length(s) do
begin
if pos(s[i],razd)=0 then slovo:=slovo+s[i] else
begin
if length(slovo)>0 then
begin
h:=h+1;{Увеличение переменной, определяющей размер массива}
a[h]:=slovo;{Каждое новое слово заносится в массив}
end;
slovo:='';
end;
end;
end;
close(fcht);{Закрытие
файлового потока}
for i:=1 to h do{Сортировка методом пузырька}
for j:=i+1 to h do
if a[i]>a[j] then
begin
sort:=a[i];
a[i]:=a[j];
a[j]:=sort;
end;
assign(fzap,output);
rewrite(fzap);{Режим записи}
for i:=1 to h do{Занесение отсортированного по алфавиту массива в файл output.txt}
writeln(fzap,a[i]);
close(fzap);
for i:=1 to h do{Вывод отсортированного массива на экран для наглядности происходящего}
writeln(a[i]);
writeln;
writeln('Vipolneno, otkroite file output.txt dlia prosmotra');
readln;
end.
Блок схема 3: Сортировка методом пузырька
3 Вывод:
В ходе выполнения данной лабораторной работы освоил операции работы с массивами данных, заполнение массива случайными числами, перемену местами элементов массива посредством третьей переменной, вывод двумерного массива на экран.
Работу со строковыми типами данных: разбиение строки на отдельные слова.
Работу с файлами: доступ к файлу, чтение, запись.
Информация о работе Основы работы с массивами и строками Pascal