Основы работы с массивами и строками Pascal

Автор работы: Пользователь скрыл имя, 16 Января 2011 в 19:32, лабораторная работа

Описание

1 Цель работы:
Выявление особенностей применения операторов работы с массивами и строками в процессе построения программы на языке Pascal.

Работа состоит из  1 файл

ИнформатикаЛР3.doc

— 123.00 Кб (Скачать документ)

Лабораторная  работа 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