Способы хранения информации
Анализ различных способов хранения информации: одномерный массив, типизированный файл и динамический список. Сортировка только положительных чисел. Словесное описание алгоритма. Блок-схема процедуры обработки данных с помощью одномерного массива.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 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