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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2008, 22:11   #1
Impulsive
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 17
Вопрос Вот задание надом было! Может кто поможет на Pascal'e!?

Вот условие, задачка на файлы..
type цена=record руб:0..maxint;
коп:0..99 end;
прейскурант=file of цена;
Описать процедуру min(П,Ц), присваивающую параметру Ц наименьшую цену из непустого прейскуранта П.
Impulsive вне форума Ответить с цитированием
Старый 10.03.2008, 23:53   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

открыть файл П последовательно до конца файла читать оттуда значения record и искать минимальное значение.
закрыть файл, вернуть в качестве результата функции найденное минимальное значение.
в чём у Вас затык возник?! что конкретно не получается?..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.03.2008, 17:00   #3
Impulsive
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 17
По умолчанию

В общем как открыть, закрыть файл; и связать тестовой документ с паскалем знаю.
А вот как написать то, чтоб он в этом текстовом документе нашел самую маленькую цену и вывел на экран эту цену и название тавара Незнаю!! Помогите кто может! Код написать Благадарю....
Impulsive вне форума Ответить с цитированием
Старый 23.03.2008, 19:02   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Задачи на массивы записей и связанные с ними типизированные файлы требуют очень точной последовательности действий. Если вам лень посмотреть как это написано практически в каждом учебнике, а также энное количество раз на форуме, пишу с пояснениями последний раз.
Код:
uses crt;
const n=10;
type cena=record       //собственно запись
          tovar:string[20];//добавил товар, а то непонятно цена чего
          rub:0..maxint;
          kop:0..99;
          stoim:real;   //добавил стоимость, чтобы узнать, что дешевле
          end;
     preis=array[1..n]of cena; //массив записей, собств. прейскурант
var pr:preis;
    i,k:integer;
    min:real;
    f:file of cena;  //типизированный файл для хранения информации
procedure MINCENA(k:integer;pr:preis; var min:real); //процедура
var i:integer;
begin
for i:=1 to k do
   begin
    pr[i].stoim:=pr[i].rub+pr[i].kop/100; //находим стоимость
  end;
min:=pr[1].stoim;
for i:=2 to k do
if pr[i].stoim<min then
    begin
      min:=pr[i].stoim;  //ищем минимум
     end;
end;
begin    //начало программы
clrscr;
for i:=1 to n do
    begin
      write('tovar:');readln(pr[i].tovar);//вводим данные в прейскурант
      write('rubli:');readln(pr[i].rub);
      write('kopeiki:');readln(pr[i].kop);
    end;
assign(f,'Preis.txt');//создаем файл для хранения информации
rewrite(f);      //открываем файл для записи
for i:=1 to n do
    begin
      write(f,pr[i]);  //вводим в него тнформацию
    end;
close(f);         //сохраняем файл
reset(f);         //открываем его для чтения
k:=0;
while not eof(f) do
   begin
     k:=k+1;
     read(f,pr[k]);  //считываем данные из файла в массив
   end;
close(f);           //закрываем файл
MINCENA(n,pr,min);  //находим минимум
writeln;
write('Min cena=',min:5:2);
readln
end.
puporev вне форума Ответить с цитированием
Старый 23.03.2008, 19:40   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а у меня один малюсенький вопросец есть, можно?
А зачем дублирование цены (разве rub.kop это не достаточно)?..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.03.2008, 20:04   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Наверное перестарался, хотя рубли с копейками все равно как-то складывать надо, иначе, если рубли одинаковые, надо сравнивать копейки. А вообщем сильно не думал над деталями, хотел показать последовательность действий.
puporev вне форума Ответить с цитированием
Старый 23.03.2008, 21:22   #7
Impulsive
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 17
По умолчанию

Спасибо большое и сорри за плагиат...
Impulsive вне форума Ответить с цитированием
Старый 24.03.2008, 00:12   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну, мы с вами понимаем, за что Вы извиняетесь...
Но, кстати, строго говоря, плагиатом это не являлось - Вы же не выдавали чужой код за свой!!!
Задача решена? Тема исчерпана?
Прекращаем флудить в темах

Последний раз редактировалось Alex21; 24.03.2008 в 11:43.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.03.2008, 20:38   #9
Impulsive
Пользователь
 
Регистрация: 21.02.2008
Сообщений: 17
По умолчанию

Извините, почему в строке 44. reset(f) - выдает ошибку?
Impulsive вне форума Ответить с цитированием
Старый 30.03.2008, 20:39   #10
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

А что пишит компилятор?
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто поможет??? sashahttp Общие вопросы Delphi 1 24.06.2008 09:15
Что это было? дмидми О форуме и сайтах клуба 2 19.05.2008 00:24
Почему не было примьеры? Simply-Art О форуме и сайтах клуба 3 10.04.2008 13:24
задача составления производственного плана(на pascal'e и т.д) VDK23 Помощь студентам 7 06.04.2008 01:26
Решите пожалуйста задания на Pascal'e! Темы: Рекурси и списки. FLINT Паскаль, Turbo Pascal, PascalABC.NET 5 03.04.2008 16:32