Рассчитать количество максимальных элементов списка

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Программирование
  • 49 49 страниц
  • 16 + 16 источников
  • Добавлена 15.09.2010
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Содержание
Введение
1 Постановка задачи на разработку программы
2 Метод решения задачи и ее формализация
2.1 Динамический список
2.2 Интерфейс пользователя
3 Выбор языка программирования
4 Разработка состава и структуры исходных данных и результатов.
5 Разработка алгоритма решения задачи
6 Разработка программы
7 Отладка и тестирование программы
ЗАКЛЮЧЕНИЕ
Список использованных источников
Приложение А.
Приложение Б.
Приложение В.

Фрагмент для ознакомления

- М.: Изд-во стандартов, 1977.
ГОСТ 19.401 - 78 ЕСПД. Текст программы. Требования к содержанию и оформлению. - М.: Изд-во стандартов, 1978.
ГОСТ 19.402 - 78 ЕСПД. Описание программы. - М.: Изд-во стандартов, 1978.
ГОСТ 19.505 - 79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению. - М.: Изд-во стандартов, 1977.
ГОСТ 19.701 - 90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. - М. -Изд-во стандартов, 1977.
Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. — М.: Центр ЮрИнфоР, 2001. — 276 с. — ISBN 5-89158-079-9
Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. — 5-е изд. — М.: Вильямс, 2001. — 672 с. — 5000 экз. — ISBN 5-8459-0192-8 (рус.),
Перминов О. Н. Язык программирования Паскаль: Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5-256-00311-9
Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: БХВ-Петербург, 2001. — С. 528. — ISBN 5-94157-112-7
Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: Диалектика, 2005. — С. 576. — ISBN 5-8459-0935-X
Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985. — С. 406.
Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка. — М.: Финансы и статистика, 1982. — С. 151.
Архангельский А.Я. Программирование в Delphi 6 ––М.: ЗАО «Издательство БИНОМ», 2002г. – 1200 с.
Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С.В., 2001. – 672с.
INTERNET: forum.vingrad.ru, rsdn.ru, progz.ru













Приложение А.
Схема алгоритма программы.


Рисунок А.1 – Схема алгоритма добавления элемента в список


Рисунок А.2 – Схема алгоритма функции удаления элемента из списка


Рисунок А.3 – Схема алгоритма функции для поиска суммы максимальных цен

Рисунок А.4 – Схема алгоритма функции чтения из файла
















Приложение Б.
Исходный текст программы.
unit WRK;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, Buttons;
type
TFrmGlobal = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
StaticText1: TStaticText;
Label1: TLabel;
Label2: TLabel;
Box: TListBox;
Label3: TLabel;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
BitBtn4: TBitBtn;
procedure N4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject); // выбор в меню "Выход"
procedure UpdateDate();
procedure FormCreate(Sender: TObject);
procedure CloseApp(Sender: TObject; var Action: TCloseAction);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure OnClickBox(Sender: TObject);
procedure BitBtn4Click(Sender: TObject); // обновление списка товаров
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmGlobal: TFrmGlobal;
implementation
uses WrkAdd,WrkUnit, WrkEdit;
{$R *.dfm}
procedure TFrmGlobal.N4Click(Sender: TObject);
begin
Close;
end;
procedure TFrmGlobal.BitBtn1Click(Sender: TObject);
begin
FrmAdd := TFrmAdd.Create(Self);
FrmAdd.Edit1.Text := 'Введите наименование товара';
FrmAdd.Edit2.Text :='0';
FrmAdd.Edit3.Text :='1,5';
FrmAdd.ShowModal;
FrmAdd.Destroy;
end;
procedure TFrmGlobal.UpdateDate(); // обновление списка товаров
begin
//
pList:=pHead;
Box.Items.Clear;
LabeledEdit1.Text:='';
LabeledEdit2.Text:='';
while (pList<>NIL) do
begin
Box.Items.Add(pList^.sName);
pList:=pList^.Next;
end;
end;
procedure TFrmGlobal.FormCreate(Sender: TObject);
begin
clearList;
end;

procedure TFrmGlobal.CloseApp(Sender: TObject; var Action: TCloseAction);
begin
clearList;
end;

procedure TFrmGlobal.BitBtn2Click(Sender: TObject);
begin

if ( Box.ItemIndex >-1) then
begin
DelFromListByName(Box.Items.Strings[Box.ItemIndex]);
UpdateDate;
end;
end;

procedure TFrmGlobal.BitBtn3Click(Sender: TObject);
var
Sum:real;
count:integer;
begin
count:=FindSumMaxElem(Sum);
Label1.Caption :='С макс.ценой найдено <' + IntToStr(count)+
'> товаров';
Label2.Caption := 'Сумма цен этих товаров <' + FloatToStr(Sum)+'>';
end;

procedure TFrmGlobal.N3Click(Sender: TObject);
begin
WriteToFile;
end;

procedure TFrmGlobal.N2Click(Sender: TObject);
begin
ReadFromFile;
UpdateDate;
end;

procedure TFrmGlobal.OnClickBox(Sender: TObject);
var
sName:String;
nPrice:Real;
nCount:Integer;
begin
if not( Box.ItemIndex <0) then
begin
sName := Box.Items.Strings[Box.ItemIndex];
FindByName(sName,nCount,nPrice);
LabeledEdit1.Text:=IntToStr(nCount);
LabeledEdit2.Text:=FloatToStr(nPrice);
end;
end;

procedure TFrmGlobal.BitBtn4Click(Sender: TObject);
var
sName:String;
nPrice:Real;
nCount:integer;
begin
if Box.ItemIndex <0 then
ShowMessage('Не выбран товар')
else
begin
FrmEdit := TFrmEdit.Create(self);
sName:=Box.Items.Strings[Box.ItemIndex];
FrmEdit.LabeledEdit1.Text:= sName;
FindByName(sName,nCount,nPrice);
FrmEdit.LECount.Text:=IntToStr(nCount);
FrmEdit.LEPrice.Text:=FloatToStr(nPrice);
FrmEdit.ShowModal;
FrmEdit.Destroy;
UpdateDate;
end;


end;
////////////////////////////////////////////////////////////////////////////////
end.

unit WrkAdd;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TFrmAdd = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FrmAdd: TFrmAdd;

implementation
uses WrkUnit,Wrk;
{$R *.dfm}

procedure TFrmAdd.BitBtn1Click(Sender: TObject);
resourcestring
rs_info = 'Проверьте правильность ввода данных';
begin
{Если поля ввода не пустые, то добавляем новый элемент в список}
{иначе выводим сообщение о необходимости проверить данные}
if ((Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'')) then
AddToList(Edit1.Text, StrToInt(Edit2.Text), StrToFloat(Edit3.Text))
else
ShowMessage(rs_info);
FrmGlobal.UpdateDate;
end;
////////////////////////////////////////////////////////////////////////////////
end.

unit WrkEdit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;

type
TFrmEdit = class(TForm)
LabeledEdit1: TLabeledEdit;
LECount: TLabeledEdit;
LEPrice: TLabeledEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FrmEdit: TFrmEdit;

implementation
uses WrkUnit;
{$R *.dfm}

procedure TFrmEdit.BitBtn2Click(Sender: TObject);
begin
Close;
end;

procedure TFrmEdit.BitBtn1Click(Sender: TObject);
begin
//
UpdateByName(LabeledEdit1.Text,StrToInt(LECount.Text),StrToFloat(LEPrice.Text));
Close;
end;
////////////////////////////////////////////////////////////////////////////////
end.

unit WrkUnit;
////////////////////////////////////////////////////////////////////////////////
interface
uses SysUtils;
type
TPtr = ^TWrkRecord;
TWrkRecord = record
sName:String;
nCount:Integer;
nPrice:Real;
Next:Tptr;
End;
////////////////////////////////////////////////////////////////////////////////
function AddToList(sName:String;nCount:integer;nPrice:Real):integer;
function DelFromListByName(sName:String):integer;
function FindSumMaxElem(var Sum:real):integer;
procedure FindByName(sName:String; Var nCount:integer;var nPrice:Real);
Procedure UpdateByName(sName:String; nCount:integer;nPrice:Real);
procedure clearList;
procedure WriteToFile();
procedure ReadFromFile();
////////////////////////////////////////////////////////////////////////////////
var
pHead:TPtr;
pList:TPtr;
implementation
////////////////////////////////////////////////////////////////////////////////
// в случае ошибки вернет значение 1.
// если все ок то вернет значение 0
function AddToList(sName:String;nCount:integer;nPrice:Real):integer;
begin
try
begin
if pHead=NIL then
begin // добавление первого элемента списка
New(pList);
pList.sName:=sName;
pList.nCount:=nCount;
pList.nPrice:=nPrice;
pList.Next:=NIL;
pHead:=pList;
end
else
begin // добавление элемента списка
New(pList);
pList^.sName:=sName;
pList^.nCount:=nCount;
pList^.nPrice:=nPrice;
pList^.Next:=pHead;
pHead:=pList;
end;
result:=0;
end;
except
result:=1;
end;
end;
////////////////////////////////////////////////////////////////////////////////
function DelFromListByName(sName:String):integer;
var
tmpList:TPtr;
begin
try
begin
pList:=pHead;
if (pHead^.sName = sName) then
begin
if (pHead^.Next = Nil) then
begin
Dispose(pHead);
pHead:=NIL;
end
else
begin
pList:=pList^.Next;
Dispose(pHead);
pHead:=pList;
end;
end
else
begin
while ((pList^.Next <> NIL) and (pList^.Next^.sName <> sName)) do
begin
pList:=pList^.Next;
end;
if (pList^.Next^.sName = sName) then
begin
tmpList := pList^.Next;
if tmpList^.Next <>Nil then
begin
pList^.Next := tmpList^.Next;
dispose(tmpList);
end
else
begin
pList^.Next := Nil;
dispose(tmpList);
end;
end;
end;
result:=0;
end
except
result:=1;
end;
end;
////////////////////////////////////////////////////////////////////////////////
function FindSumMaxElem(var Sum:real):integer;
var
rMax:real;
begin
rMax:=0;
Result:=0;
Sum:=0;
pList:=pHead;
while pList<>NIL do
begin
if not(pList^.nPrice < rMax) then
begin
rMax:= pList^.nPrice;
end;
pList:=pList^.Next;
end;

pList:=pHead;
while pList<>NIL do
begin
if pList^.nPrice = rMax then
begin
Sum:=Sum+pList^.nPrice;
Inc(Result);
end;
pList:=pList^.Next;
end;
end;

////////////////////////////////////////////////////////////////////////////////
procedure clearList;
begin
pList:=pHead;
while (pList<>NIL) do
begin
pHead:=pList^.Next;
Dispose(pList);
pList:=pHead;
end;
end;
////////////////////////////////////////////////////////////////////////////////
procedure WriteToFile();
var
MyF:TextFile;
begin
AssignFile(MyF,'Out.txt');
Rewrite(MyF);
pList:=pHead;
while (pList<>NIL) do
begin
Writeln(myF,pList^.sName);
Writeln(myF,IntTostr(pList^.nCount));
Writeln(myF,floatTostr(pList^.nPrice));
pList:=pList^.Next;
end;
CloseFile(MyF);
end;
////////////////////////////////////////////////////////////////////////////////
procedure ReadFromFile;
var
sName:String;
nCount:Integer;
nPrice:Real;
MyF:TextFile;
str_:String;
begin
AssignFile(MyF,'Out.txt');
Reset(MyF);
clearList;
While (Not Eof(myf)) do
begin
Readln(MyF,sName);
Readln(myf,str_);
nCount:= StrToInt(str_);
Readln(myf,str_);
nPrice:= StrToFloat(str_);
AddToList(sName,nCount,nPrice);
end;
CloseFile(MyF);
end;
////////////////////////////////////////////////////////////////////////////////
procedure FindByName(sName:String; Var nCount:integer;var nPrice:Real);
begin
pList:=pHead;
While (pList<>NIL) do
begin
if pList^.sName = sName then
begin
nCount:=pList^.nCount;
nPrice:=pList^.nPrice;
break;
end;
pList:=pList^.Next;
end;
end;
////////////////////////////////////////////////////////////////////////////////
Procedure UpdateByName(sName:String; nCount:integer;nPrice:Real);
begin
pList:=pHead;
While (pList<>NIL) do
begin
if pList^.sName = sName then
begin
pList^.nCount:=nCount;
pList^.nPrice:=nPrice;
break;
end;
pList:=pList^.Next;
end;
end;
////////////////////////////////////////////////////////////////////////////////
end.































Приложение В.
Результаты тестирования приложения


Рисунок В.1 – Окно главной программы.

Рисунок В.2 – Просмотр загруженного списка.

Рисунок В.3 – Добавление новой информации о товаре

Рисунок В.4 – Просмотр результатов добавления

Рисунок В.5 – Удаление выбранного элемента

Рисунок В.6 - Просмотр результатов удаления

Рисунок В.7 – Результат работы программы


Рисунок В.8 – Изменение данных элемента

Рисунок В.9 – Результат изменения данных элемента


Рисунок В.10 – Исходный файл
Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка. — М.: Финансы и статистика, 1982. — С. 151.
Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. — М.: Центр ЮрИнфоР, 2001. — 276 с. — ISBN 5-89158-079-9
Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985. — С. 406.
Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. — 5-е изд. — М.: Вильямс, 2001. — 672 с. — 5000 экз. — ISBN 5-8459-0192-8 (рус.)
Перминов О. Н. Язык программирования Паскаль: Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5-256-00311-9
Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: БХВ-Петербург, 2001. — С. 528. — ISBN 5-94157-112-7
Архангельский А.Я. Программирование в Delphi 6 ––М.: ЗАО «Издательство БИНОМ», 2002г. – 1200 с.
Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С.В., 2006. – 698с., стр 19
Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С.В., 2001. – 672с.
Перминов О. Н. Язык программирования Паскаль: Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5-256-00311-9
Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: БХВ-Петербург, 2001. — С. 528. — ISBN 5-94157-112-7
Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: Диалектика, 2005. — С. 576. — ISBN 5-8459-0935-X
Архангельский А.Я. Программирование в Delphi 6 ––М.: ЗАО «Издательство БИНОМ», 2002г. – 1200 с.












15

Список использованных источников
1.ГОСТ 19.101 - 77 ЕСПД. Виды программ и программных документов. - М.: Изд-во стандартов, 1977.
2.ГОСТ 19.103 - 77 ЕСПД. Обозначение программ и программных документов. - М.: Изд-во стандартов, 1977.
3.ГОСТ 19.401 - 78 ЕСПД. Текст программы. Требования к содержанию и оформлению. - М.: Изд-во стандартов, 1978.
4.ГОСТ 19.402 - 78 ЕСПД. Описание программы. - М.: Изд-во стандартов, 1978.
5.ГОСТ 19.505 - 79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению. - М.: Изд-во стандартов, 1977.
6.ГОСТ 19.701 - 90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. - М. -Изд-во стандартов, 1977.
7.Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. — М.: Центр ЮрИнфоР, 2001. — 276 с. — ISBN 5-89158-079-9
8.Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. — 5-е изд. — М.: Вильямс, 2001. — 672 с. — 5000 экз. — ISBN 5-8459-0192-8 (рус.),
9.Перминов О. Н. Язык программирования Паскаль: Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5-256-00311-9
10.Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: БХВ-Петербург, 2001. — С. 528. — ISBN 5-94157-112-7
11.Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: Диалектика, 2005. — С. 576. — ISBN 5-8459-0935-X
12.Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985. — С. 406.
13.Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка. — М.: Финансы и статистика, 1982. — С. 151.
14.Архангельский А.Я. Программирование в Delphi 6 ––М.: ЗАО «Издательство БИНОМ», 2002г. – 1200 с.
15.Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С.В., 2001. – 672с.
16.INTERNET: forum.vingrad.ru, rsdn.ru, progz.ru

Вопрос-ответ:

Как построить динамический список?

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

Какой язык программирования выбран для разработки программы?

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

Как разработать алгоритм решения задачи?

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

Как разработать программу?

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

Как выполнить отладку и тестирование программы?

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

Как рассчитать количество максимальных элементов в списке?

Для рассчета количества максимальных элементов в списке можно использовать следующий алгоритм:

Какой язык программирования выбран для разработки программы?

Для разработки программы выбран язык программирования, но в статье не указан конкретный язык.

Какой интерфейс пользователя предусмотрен в программе?

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

Какой алгоритм решения задачи использован в программе?

Для решения данной задачи использован следующий алгоритм: ...

Как проводилась отладка и тестирование программы?

Отладка и тестирование программы проводились следующим образом: ...

Как поставить задачу на разработку программы?

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

Какой язык программирования выбран для решения задачи?

Язык программирования, выбранный для решения данной задачи, не указан в статье.