Задача на Pascal'e. Про файлы...

Impulsive
Сообщения: 43
Зарегистрирован: 19 окт 2007, 20:53

Задача на Файлы
#4
type цена=record руб:0..maxint;
коп:0..99 end;
прейскурант=file of цена;
Описать процедуру min(П,Ц), присваивающую параметру Ц наименьшую цену из непустого прейскуранта П.

В общем как открыть, закрыть файл; и связать тестовой документ с паскалем знаю.
А вот как написать то, чтоб он в этом текстовом документе нашел самую маленькую цену и вывел на экран эту цену и название тавара Незнаю!! Помогите кто может! Код написать :) Благадарю....
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Это задача на типизированные, а не на текстовые файлы.
Вообще нужно читать последовательно все элементы файла и применять к ним стандартный алгоритм поиска минимального элемента.
Ни что так не ограничивает фантазию программиста, как компилятор...
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

СОРРИ ЗА ОФФТОП!
MOTOCoder, не, что я вижу? Вы впервые не приводите полное решение? ;-))Концепция изменилась, или просто устали?..

Impulsive, полностью согласен с MOTOCoder, поищите хотя бы тут на форуме или погуглите на тему record
Надеюсь, как найти в последовательности минимальный элемент за один проход вопросов нет?!
2) похоже, тип record недоописан. я не вижу названия товара!
tips: (при очередном запоминании минимального элемента дополнительно сохраняйте имя товара, и, если надо выводить, номер товара..)
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Serge_Bliznykov писал(а):СОРРИ ЗА ОФФТОП!
MOTOCoder, не, что я вижу? Вы впервые не приводите полное решение? ;-))Концепция изменилась, или просто устали?..
Концепция изменилась, доканали некоторые (не будем показывать пальцем :) ).
Да и к тому же, тут действительно все просто.
Ни что так не ограничивает фантазию программиста, как компилятор...
Impulsive
Сообщения: 43
Зарегистрирован: 19 окт 2007, 20:53

Код: Выделить всё

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 :p reis;   
    i,k:integer;   
    min:real;   
    f:file of cena;  //типизированный файл для хранения информации   
procedure MINCENA(k:integer;pr :p reis; 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.
Можно ее переделать без процедуры??? :D :D :D
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Я бы вообще сделал по-другому - не записывал бы данные в массив а обработал бы сразу.
Чтобы переделать это без процедуры, нужно добавить а var переменные

Код: Выделить всё

k:integer;pr :p reis; var min:real
потом вместо MINCENA(n,pr,min); //находим минимум
присвоить переменным значения параметров процедуры и далее ввести весь код этой процедуры.
Ни что так не ограничивает фантазию программиста, как компилятор...
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

Impulsive, извините, за резкость! Вот странный Вы всё же человек!
Ну раз Вам на другом форуме Puporev[b/] написал код.
То почему Вы там же (его) не попросите помочь?...
К чему эти метания с форума на форум?..
Иил думаете, мы тут решим, что это Вы сами написали?! ;-)
Impulsive
Сообщения: 43
Зарегистрирован: 19 окт 2007, 20:53

Ну незнаю... Я не пишу - что сам написал. (если прошу переделать - уже подразумеваеться, что не сам делал)
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

ну, переделать всегда легче, чем сделать...
а вот как это будет соотносится с тем, что у вас задание - именно сделать процедуру?
&quot писал(а):Описать процедуру min(П,Ц), присваивающую параметру Ц наименьшую цену из непустого прейскуранта П.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

всё, что в процедуре от begin до end
переносите в то место, откуда процедура вызывается... убираете procedure MINCENA
всё.
Ответить