Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2007, 17:31   #1
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
Сообщение Проверка правильности

Люди посмотрите лабу. Правильно ли она написана???!!!
Задания:
(Примечание к заданию:
1) Ввести заданный список из файла в массив записей.
2) Вывести список на экран.
3) Упорядочить список одним из алгоритмов сортировки (предусмотреть возможность выбора алгоритма). Процедуры сортировки оформить в виде модуля.
4) Вывести упорядоченный список на экран.)
В а р и а н т 1
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Шифр товара Наименование Цена Наличие
тип строка тип строка real да или нет
5 символов 25 символов целое
Список упорядочить по убыванию цены товара.

Вот и собственно работа:
Программа:
Код:
Uses Crt,Store;
Label 1;
Var
F:Sp;
Vihod,Sort,Vvod:byte;
Begin
ClrScr;
Repeat
Assign(F,'f:\Tovar.dat');
Writeln('Нажмите <Enter>, чтобы ввести свои данные.');
Writeln('Нажмите <Esc>, чтобы ввести данные из файла Tovar.');
Vvod:=ord(ReadKey);
If Vvod=13 then
Zap(f);
ClrScr;
Writeln('Используются данные файла Tovar.dat');
Schit(f);
1:Writeln('Для сортировки выбором нажмите 1, обменом - 2.');
Writeln('Для обоих сортировок нажмите Enter.');
Writeln;
Sort:=ord(ReadKey);
Case Sort of
49:SortVib;
50:SortObm;
13:Begin
SortVib;
Writeln;
SortObm;
End;
else
Begin
Writeln('Не выбран метод сортировки. Попробуйте ещё.');
Goto 1;
End;
End;
Writeln;
Writeln('Если хотите выйти, нажмите Enter.');
Vihod:=ord(ReadKey);
Until Vihod=13;
End.
(файл создайте сами)
продолжение смотри: Проверка правильности 2!!!
Исходники программ - http:\\www.kort.3dn.ru

Последний раз редактировалось RSLoader; 23.04.2007 в 19:48.
KORT вне форума Ответить с цитированием
Старый 23.04.2007, 17:33   #2
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
Сообщение Проверка правильности 2!!!

Модуль:
Код:
Unit Store;
INTERFACE
Uses Crt;
Type
T_zap=Record
Shifr:string[5];
Naim:string[25];
Cena:real;
Priznak:char;
end;
Sp=file of T_zap;
Var
Spis:array[1..10] of T_zap;
i,n,j:byte;
Procedure Zap(Var p:Sp);
Procedure Schit(Var p:Sp);
Procedure SortVib;
Procedure SortObm;
Procedure Vivod;
IMPLEMENTATION
Procedure Zap;
Begin
Write('Введите количество записей ');
Readln(n);
Rewrite(p);
For i:=1 to n do
With Spis[i] do
Begin
Write(' Введите шифр товара ');
Readln(Shifr);
Write('Введите наименование товара ');
Readln(Naim);
Write(' Введите цену товара ');
Read(Cena);
Write(' Наличие товара ');
Readln(Priznak);
Write(p,spis[i]);
End;
Close(p);
End;
Procedure Schit;
Begin
{$I-}
Reset(p);
{$I+}
If IOResult<>0 then
Begin
Writeln('Файл не найден');
Readkey;
Halt;
End;
i:=0;
Writeln('Шифр | Наименование товара | Цена | Наличие');
Repeat
Inc(i);
Read(p,Spis[i]);
With Spis[i] do
Begin
Writeln(Shifr:4,' | ',Naim:23,' | ',Cena:8:1,' | ',Priznak:7);
End;
Until Eof(p);
n:=i;
Close(p);
End;
Procedure Vivod;
Begin
Writeln('Шифр | Наименование товара | Цена | Наличие');
For i:=1 to n do
Begin
With Spis[i] do
Begin
Writeln(Shifr:4,' | ',Naim:23,' | ',Cena:8:1,' | ',Priznak:7);
End;
End;
End;
Procedure SortVib;
Var
imax:byte;
max:real;
d:T_zap;
Begin
For i:=1 to n-1 do
Begin
With Spis[i] do
max:=cena;
imax:=i;
d:=Spis[i];
For j:=i+1 to n do
Begin
With Spis[j] do
If cena>max then
Begin
max:=cena;
imax:=j;
d:=Spis[j];
End;
End;
spis[imax]:=spis[i];
spis[i]:=d;
End;
Writeln('Результат сортировки выбором:');
Vivod;
End;
Procedure SortObm;
Var
Key:byte;
d:T_zap;
Begin
Repeat
Key:=0;
For i:=1 to n-1 do
If Spis[i].cena<Spis[i+1].cena then
Begin
Key:=1;
d:=spis[i];
Spis[i]:=Spis[i+1];
Spis[i+1]:=d;
End;
Until Key=0;
Writeln('Результат сортировки обменом:');
Vivod;
End;
END.
Исходники программ - http:\\www.kort.3dn.ru

Последний раз редактировалось RSLoader; 23.04.2007 в 19:54.
KORT вне форума Ответить с цитированием
Старый 23.04.2007, 17:54   #3
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Ну, если работает, тогда правильно.
Carbon вне форума Ответить с цитированием
Старый 23.04.2007, 20:23   #4
KORT
Вот я и
Форумчанин
 
Аватар для KORT
 
Регистрация: 07.04.2007
Сообщений: 501
Сообщение

Работать, она работает. Но вот в чем вопрос: по идее модуль должен содержать только процедуры сортировки. А у меня в модуле процедуры сортировки+процедура записи+процедура вывода+процедура чтения из файла. Разве можно ли так делать? Если же в модуле оставляю только процедуры сортировки, то программа не сортирует записи!!!!
Исходники программ - http:\\www.kort.3dn.ru
KORT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка правильности ввода символов LLIypLLIyH Помощь студентам 7 22.07.2008 19:30
Проверка окон HunterMan Win Api 1 25.06.2008 23:56
Проверка папок Gladiator Общие вопросы Delphi 4 29.05.2008 19:48
Проверка переменных *_ViruS_* Общие вопросы C/C++ 3 21.09.2007 21:33
Проверка на сжатие vitalik007 Общие вопросы Delphi 3 20.08.2007 10:53