Помощь в написании студенческих работ
Антистрессовый сервис

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

Курсовая Купить готовую Узнать стоимостьмоей работы

Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. Рисунок В.7 — Результат работы программы Рисунок В.8 — Изменение данных элемента. Рисунок В.9 — Результат изменения данных элемента Рисунок В.10 — Исходный файл. Фаронов В. В. Delphi 6. Учебный курс. Издательство Молгачев С. В., 2006. — 698с., стр 19. Фаронов В. В. Delphi 6. Учебный курс. Издательство… Читать ещё >

Рассчитать количество максимальных элементов списка (реферат, курсовая, диплом, контрольная)

Содержание

  • 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−89 158−079−9

Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. — 5-е изд. —

М.: Вильямс, 2001. — 672 с. —

5000 экз. — ISBN 5−8459−0192−8 (рус.),

Перминов О. Н. Язык программирования Паскаль: Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5−256−311−9

Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: БХВ-Петербург, 2001. — С. 528. — ISBN 5−94 157−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−89 158−079−9

Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985. — С. 406.

Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. — 5-е изд. —

М.: Вильямс, 2001. — 672 с. — 5000 экз. — ISBN 5−8459−0192−8 (рус.)

Перминов О. Н. Язык программирования Паскаль: Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5−256−311−9

Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: БХВ-Петербург, 2001. — С. 528. — ISBN 5−94 157−112−7

Архангельский А. Я. Программирование в Delphi 6 --М.: ЗАО «Издательство БИНОМ», 2002 г. — 1200 с.

Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С. В., 2006. — 698с., стр 19

Фаронов В.В. Delphi 6. Учебный курс. Издательство Молгачев С. В., 2001. — 672с.

Перминов О. Н. Язык программирования Паскаль: Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5−256−311−9

Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: БХВ-Петербург, 2001. — С. 528. — ISBN 5−94 157−112−7

Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. —

М.: Диалектика, 2005. — С. 576.

— ISBN 5−8459−0935-X

Архангельский А. Я. Программирование в Delphi 6 --М.: ЗАО «Издательство БИНОМ», 2002 г. — 1200 с.

Показать весь текст

Список литературы

  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−89 158−079−9
  8. У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. — 5-е изд. — М.: Вильямс, 2001. — 672 с. — 5000 экз. — ISBN 5−8459−0192−8 (рус.),
  9. О. Н. Язык программирования Паскаль: Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5−256−311−9
  10. Культин Н.Б. Delphi 6. Программирование на Object Pascal. — СПб.: БХВ-Петербург, 2001. — С. 528. — ISBN 5−94 157−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
Заполнить форму текущей работой
Купить готовую работу

ИЛИ