Способы хранения информации

Анализ различных способов хранения информации: одномерный массив, типизированный файл и динамический список. Сортировка только положительных чисел. Словесное описание алгоритма. Блок-схема процедуры обработки данных с помощью одномерного массива.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 29.05.2014
Размер файла 319,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Цель работы

Целью проекта является анализ различных способов хранения информации: одномерный массив, типизированный файл и динамический список. Необходимо решить предложенную задачу с использованием различных способов хранения информации, в ходе решения выявить достоинства и недостатки каждого способа.

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

1. Одномерный массив

2. Типизированный файл

3. Линейный динамический список.

Необходимо обработать все эти данные по одному и тому же алгоритму в соответствии варианта задания и выполнить в виде трех процедур, не связанных между собой (например, при обработке типизированного файла или динамического списка не ссылаться на размер массива и т.д.). Так как исходные данные будут записаны в памяти тремя различными способами, то и подход к решению одной и той же задачи будет различен.

2. Данные задачи

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

3. Словесное описание алгоритма

При запуске программа вызывает меню, в котором можно выбрать способ хранения данных при решении задачи (клавиши «1» - «4»).

При нажатии клавиши «1» программа вызывает процедуру решения задачи при помощи одномерных массивов.

При нажатии клавиши «2» задача будет решена при помощи типизированного файла.

При нажатии клавиши «3» для решения будут использованы динамические линейные списки.

При нажатии клавиши «4» завершается работа всей программы.

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

4. Блок-схема алгоритма

4.1 Блок-схема процедуры вывода

Размещено на http://www.allbest.ru/

4.2 Блок-схема процедуры обработки данных с помощью одномерного массива

5. Листинг программы

program kyrs;

uses crt;

var f:text; q:byte; f2:file of integer;

procedure MAS (var f:text);

var i, k, c, m, min, j, n, nom, p, l:integer;

a, b:array [1..250] of integer;

procedure vivod (t:string; k:integer);

begin

writeln(t);

for i:=1 to k do

write (a[i], ' ');

end;

begin

reset(f);

while not seekeof(f) do

begin inc(i);

read (f, a[i]);

end;

k:=i;

c:=0;

if a[i]>0 then begin

inc(c);

b[c]:=i;

end;

writeln;

i:=1;

repeat

begin

m:=a [b[i]];

a [b[i]]:=a [b[i+1]];

a [b[i+1]]:=m;

if i>1 then dec(i)

end

else inc(i);

until i>=c;

writeln;

readln(p);

l:=0;

for i:=1 to k do

l:=i;

break;

end;

for i:=k+1 downto l+1 do a[i]:=a [i-1];

a[l]:=p;

k:=k+1;

vivod ('массив с новым элементом', k);

readln; close(f);

end;

procedure TYP_FILE (var f:text);

var a, i, j, k, l, m, n, c, d:integer;

priz:boolean;

b:array [1..250] of integer;

PROCEDURE vivod (t:string);

begin

writeln;

writeln(t);

reset(f2);

while not eof (f2) do

begin read (f2, a);

write (a, ' ');

end;

end;

begin

reset(f);

rewrite(f2);

i:=0;

begin

read (f, a);

write (f2, a);

end;

close(f2);

i:=0;

for m:=0 to n do

begin seek (f2, m);

read (f2, a);

if a>0 then begin

inc(i);

b[i]:=m;

end;

c:=i;

i:=1;

repeat

seek (f2, b[i]);

read (f2, a);

seek (f2, b [i+1]);

read (f2, d);

begin

seek (f2, b[i]);

write (f2, d);

seek (f2, b [i+1]);

write (f2, a);

if i>1 then dec(i)

end

else inc(i);

until i>=c;

writeln;

writeln;

readln(m);

reset(f2);

for j:=filesize(f2) - 1 downto 0 do

begin

seek (f2, j);

read (f2, a);

if a>0 then begin k:=0;

if m>a then begin

seek (f2, filesize(f2));

write (f2, m); priz:=true;

end

else for i:=j-1 downto 0 do

begin

seek (f2, i); read (f2, a);

if a>0 then begin

if a<m then break end

else inc(k);

end;

break; end;

end;

if priz=false then

begin

for j:=filesize(f2) - 1 downto i do

begin

seek (f2, j);

read (f2, a);

write (f2, a);

end;

if i=0 then

seek (f2, i)

else seek (f2, i+1);

write (f2, m);

end;

seek (f2,0);

end;

Procedure SPIS (var f:text);

type uk=^sp;

sp=record

x:integer;

adr:uk;

end;

var p1, p2, first, first1, p3:uk; buf, c, i, m:integer;

b:array [1..150] of uk;

priz:boolean;

PROCEDURE VIV (T:STRING);

BEGIN

WRITELN(T);

p1:=first;

while p1<>nil do

begin

write (p1^.x, ' ');

p1:=p1^.adr;

end;

writeln;

end;

begin

first:=nil;

reset(f);

while not eof(f) do

begin

New(p1);

read (f, p1^.x);

if first =nil then first:=p1

else p2^.adr:=p1;

p2:=p1;

end;

p2^.adr:=nil;

i:=0;

p1:=first;

while p1<>nil do begin

if p1^.x>0 then begin

inc(i);

b[i]:=p1;

end;

p1:=p1^.adr;

end;

c:=i;

i:=1;

repeat

begin

m:=b[i]^.x;

b[i]^.x:=b [i+1]^.x;

b [i+1]^.x:=m;

if i>1 then dec(i)

end

else inc(i);

until i>=c;

new(p3);

read (p3^.x);

p3^.adr:=nil;

p1:=first;

if p1^.x>p3^.x then begin

p3^.adr:=first;

first:=p3;

end

else begin

while p1^.adr<>nil do

begin

if p1^.adr^.x>0 then

if p1^.adr^.x<p3^.x then p1:=p1^.adr

else begin

p3^.adr:=p1^.adr;

p1^.adr:=p3;

break;

end

else p1:=p1^.adr;

end;

if p1^.adr=nil then p1^.adr:=p3; end;

close(f);

readln;

end;

BEGIN

clrscr;

assign (f, 'f.txt');

assign (f2,'f2.int');

repeat

clrscr;

Case q of

1:MAS(f);

2:TYP_FILE(f);

3:SPIS(f);

4:exit;

end;

until false;

readkey;

END.

Выводы

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

Массив.

Достоинства:

ь Замена элемента при помощи оператора присваивания;

ь Прямое обращение к элементу за счет индекса.

ь Высокая скорость обработки.

Недостатки:

Ш Задание размера массива при описании переменных;

Ш Отсутствие динамики, невозможность удаления или добавления элемента без сдвига других.

Ш Размер выделяемой памяти ограничен, для этого, нужно заранее указать количество элементов массива.

Ш Необходимо хранить индекс последнего элемента для корректного вывода.

Типизированный файл.

Достоинства:

ь Нет необходимости многократно вводить данные при отладке;

ь Компактное хранение данных.

ь Определение количества элементов при помощи функции;

ь Не требуется указывать размер при описании переменных;

ь Изменение размера файла (возможность отсекать с нужного элемента и добавлять элементы в конец файла).

ь В случае непредвиденного прекращения программы, данные сохраняются, так как файл хранится на жестком диске.

Недостатки:

Ш Низкая скорость при работе с файлом, т. к. для чтения каждого элемента приходится обращаться к внешнему устройству;

Ш Чтение в переменную для вывода.

Ш При удалении элементов и освобождении первой компоненты, также нужно циклически сдвигать все элементы в файле.

Динамический список.

Достоинства:

ь Резервирование и освобождение памяти по мере необходимости;

ь Не требуется указывать размер при описании переменных.

ь Удобный доступ к переменной через указатель.

ь Добавление нового элемента не требует дополнительных операций.

Недостатки:

Ш Нет возможности напрямую перейти к нужному элементу;

Ш Возникновение проблем потерянных ссылок.

Ш Возможна потеря данных.

Ш При удалении какой-либо компоненты нужно всегда использовать процедуру Dispose, иначе память компьютера «засорится».

В этой задаче удобнее всего работать с массивами, потому что здесь легче переставлять между собой значения элементов массива, сортировать их, да и обрабатываются они в оперативной памяти, поэтому работа происходит быстрее. Однако при добавлении новых элементов лучше использовать динамические списки, так как в этом случае можно обойтись без сдвига, в то время как при работе с типизированным файлом или одномерным массивом, приходится дополнительно сдвигать все элементы.

массив информация алгоритм положительный

Размещено на Allbest.ru


Подобные документы

  • Разработка блок-схемы и программы обработки одномерного массива с доступом к элементам с помощью индексов и с помощью указателей. Словесное описание алгоритма и пользовательского интерфейса, листинг программы обработки матрицы и результат её выполнения.

    курсовая работа [391,1 K], добавлен 30.09.2013

  • Описание процедуры выбора структуры хранения данных. Программная реализация одномерного неоднородного массива. Представление бинарного дерева в виде динамической структуры данных. Изучение способов поиска в упорядоченном дереве. Содержание базы данных.

    практическая работа [850,0 K], добавлен 16.04.2015

  • Структура программного комплекса. Ввод информации из заданного файла. Создание набора данных. Добавление элементов в конец набора данных. Просмотр всех элементов набора данных. Копирование информации из НД в заданный файл. Сортировка массива по номерам.

    курсовая работа [630,5 K], добавлен 01.06.2014

  • Структура программного комплекса. Создание набора данных. Описание модуля funkcii.tpu. Копирование информации из НД в заданный файл. Сортировка массива по номерам. Просмотр элементов и вычисление среднего, минимума и максимума из заданного диапазона.

    курсовая работа [626,6 K], добавлен 18.06.2014

  • Модификация и сравнения двух текстовых файлов. Программа, написанная на языке программирования Cи и работоспособна на IBM совместимых компьютерах. Псевдографический и графический интерфейсы. Анализ программы методом сортировки одномерного массива.

    курсовая работа [116,2 K], добавлен 21.02.2008

  • Составление программы сортировки по возрастанию массив из 20 шестнадцатеричных чисел, просматривающей все исходные числа во внешней памяти и выбирающей самое большое число. Блок-схема алгоритма работы программы. Таблица команд и число их выполнения.

    курсовая работа [23,1 K], добавлен 24.05.2015

  • Алгоритм обработки при работе с массивом, типизированным файлом и динамическим списком. Применение для массивов и типизированных файлов произвольной адресации элементов, для динамических списков - последовательной адресации. Блок-схема и текст программы.

    реферат [63,5 K], добавлен 24.05.2013

  • Программа обработки одномерного массива средствами Visual Basic for Application (VBA) на предмет преобразования, печати, удаления, сортировки, поиска сумм, положительных, чётных элементов, их кратности и дополнения другими элементами и значениями данных.

    контрольная работа [12,3 K], добавлен 07.10.2012

  • Выбор принципов проектирования устройства записи, хранения и передачи чисел. Разработка алгоритма выполнения операций, необходимых для обработки информации. Структурная схема устройства. Элементарная база, необходимая для разработки принципиальной схемы.

    курсовая работа [1,3 M], добавлен 16.08.2012

  • Способы хранения и обработки информации, полученной с помощью ДНК-анализов. Построение модуля контроля и доступа к базе данных микрочипов. Модернизация программного комплекса хранения информации с результатами экспериментов по анализу экспрессии генов.

    курсовая работа [1,5 M], добавлен 13.12.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.