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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2015, 18:51   #1
coreyfox
Новичок
Джуниор
 
Регистрация: 19.12.2014
Сообщений: 2
По умолчанию Работа с файлами

Помогите,пожалуйста. С пунктом а проблем не возникло, а вот b.c.d.e даже предположения нет как сделать.
Тем, кто отзовется и поможет, большое спасибо.
1. Сведения о деталях, хранящихся на складе, содержат следующие атрибуты: название, количество, стоимость одной детали. Составить программы, решающие следующие задачи:
a) Заполнить файл с информацией о деталях на складе:
b) Вычислить общую стоимость деталей:
c) Выяснить, какие детали имеются в наибольшем количестве, а какие – в наименьшем:
d) Вывести информацию о наличии на складе деталей данного типа и их количестве:
e) Внести изменения в файл после выдачи со склада определенного количества данного вида деталей. Если какой – то тип деталей выбран со склада, то уничтожить запись о нем в файле
coreyfox вне форума Ответить с цитированием
Старый 02.02.2015, 19:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И как же выглядит код, решающий "а"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.02.2015, 21:10   #3
coreyfox
Новичок
Джуниор
 
Регистрация: 19.12.2014
Сообщений: 2
По умолчанию

Код:
Type Stud=Record
		Nz: String [30];
		Kl,Zn:integer;
	      End;
Var 	Fstud: File Of stud;
	S: Stud;
	N,I: Byte;
Begin
	Assign(Fstud, 'FM.DAT'); Rewrite(Fstud);
	Write('Количество деталей на складе ');
	Readln(N);
For I:=1 To N Do
	Begin
	    	Write(I, ' деталь. Название:'); Readln(S.Nz);
		Write('Количество:'); Readln(S.Kl);
		Write('Цена: '); Readln(S.Zn);
		Write(Fstud,S);
	End;
	Writeln('Формирование файла закончено !');
	Close(Fstud);
End.
coreyfox вне форума Ответить с цитированием
Старый 02.02.2015, 21:48   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ага.
Ладно:
Цитата:
b) Вычислить общую стоимость деталей:
Код:
function price:integer;;
begin
	Assign(Fstud, 'FM.DAT'); Reset(Fstud);price:=0;
while not eof(FStud) Do
	Begin
		read(Fstud,S); price:=price+s.zn;
	End;
	Close(Fstud);
end;
Цитата:
c) Выяснить, какие детали имеются в наибольшем количестве, а какие – в наименьшем:
Код:
procedure dets; var min,max:integer; smin,smax:string;
begin
	Assign(Fstud, 'FM.DAT'); Reset(Fstud);
min:=999999;max:=0;
while not eof(FStud) Do
	Begin
 read(Fstud,S); 
 if(min>s.kl) then begin min:=s.kl; smin:=s.nz; end;
 if(max<s.kl) then begin max:=s.kl; smax:=s.nz; end;
	End;
	Close(Fstud);
writeln('Минимум: ',smin);
writeln('Максимум: ',smax);
end;
Цитата:
d) Вывести информацию о наличии на складе деталей данного типа и их количестве:
Код:
procedure detsfind(det:string); 
begin
	Assign(Fstud, 'FM.DAT'); Reset(Fstud);
while not eof(FStud) Do
	Begin
 read(Fstud,S); 
 if(det=s.nz) then writeln('Кол-во: ',s.kl,' цена: ', s.zn);
	End;
	Close(Fstud);
end;
Ну? Понятно как делать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.02.2015, 21:54   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,376
По умолчанию

b) Вычислить общую стоимость деталей:
Код:
var Sum : integer; {при большом кол-ве деталей и их большой цене может быть переполнение}

...
Sum := 0;
while NOT Eof(Fstud) do begin
   read(Fstud, S);
   Sum := Sum + S.Kl * S.Zn;
end;
c) Выяснить, какие детали имеются в наибольшем количестве, а какие – в наименьшем:
В цикле выше или в аналогичном цикле ищем max и min.
Код:
read(Fstud, S);
min := S.Kl; {первый элемент записи содержит нач. значение max}
max := S.Kl; {и min}
while NOT Eof(Fstud) do begin
   read(Fstud, S);
   If max < S.Kl then max := S.Kl;
   If min > S.Kl then min := S.Kl;
end;
...
И так далее ...


Как-то так, ...

Stilet
а)
Код:
 ... price:=price+s.zn;...
Простите. но там требуется "Вычислить общую стоимость деталей:".
А S.Zn - цена одной детали.

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


Ну это так ...


Как-то так, ...
Как-то так, ...

Последний раз редактировалось Stilet; 02.02.2015 в 22:10.
ViktorR вне форума Ответить с цитированием
Старый 02.02.2015, 22:11   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Простите. но там требуется
Справедливо. Согласен.
Посмотрим поймет ли это автор темы.
Цитата:
б) Для поиска мин и мак все же лучше использовать готовые данные.
Всмысле?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.02.2015, 22:27   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,376
По умолчанию

Там, в моем примере ...

Если уже есть инициированный массив, то первый его элемент и max и min.
Далее все просматривается в цикле. А цикл инициируется со следующего элемента.
Если чтение из файла, то читаем первую запись и ее значения используем как max и min и далее в цикле ...
Все равно читать все записи надо.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами: запись, добавление, чтение (найти ошибку в коде) / C для начинающих Надо создать программу для работы с файлами Konlor Общие вопросы C/C++ 2 18.05.2014 12:37
работа с файлами rinoolik Паскаль, Turbo Pascal, PascalABC.NET 3 12.12.2012 09:53
Работа с файлами sds614 Помощь студентам 0 14.03.2012 19:35
Работа с файлами KateMM Помощь студентам 4 10.03.2012 21:51
работа с файлами Luxoff Паскаль, Turbo Pascal, PascalABC.NET 3 09.03.2011 21:04