singlepost

помогите плиз! не могу найти ошибку! (Паскаль) << На главную или назад  

задание: составить программу решения задачи. Реализовать с конкретными исходными данными.
дан файл f, содержащий сведения об игрушках: указывается название игрушки (например, кукла, кубики, мяч, конструктор и т.д.), её стоимость в копейках и возрастные границы детей, для которых игрушка предназначена (например, для детей от двух до пяти лет). Получить сведения:
названия наиболее дорогих игрушек (цена которой отличается от цены самой дорогой игрушки не более чем на 1 руб.)

вот создание файла:(здесь всё правильно) Program RGR3_vspom;
type igra=record
nazv_e:string[20];
stoim_t:0..10000;
min_vozrast:0..4;
max_vozrast:5..12;end;
Var f:file of igra;a:igra;i,n:byte;
Begin Assign(f,'H:/RGR3.dat');
rewrite(f);
write('vvod n=');readln(n);
For i:=1 to n do begin
write('vvod nazv_e=');readln(a.nazv_e);
write('vvod stoim_t=');readln(a.stoim_t);
write('vvod min_vozrast=');readln(a.min_vozrast);
write('vvod max_vozrast=');readln(a.max_vozrast);
write(f,a);end;
close(f);
end.

вот основная программа(вот здесь что-то неправильно):

Program RGR3_osnov;
type igra=record
nazv_e:string[20];
stoim_t:0..10000;
min_vozrast:0..4;
max_vozrast:5..12;end;
Var f:file of igra;a:igra;max:0..10000;
Begin assign(f,'H:/RGR3.dat');Reset(f);
writeln('spisok_samyh_dorogih_igrushek');
while not EOF(f) do begin
read(f,a);a.stoim_t:=max;
If a.stoim_t>max then a.stoim_t:=max;
If (max-a.stoim_t)<=100 then writeln(a.nazv_e);
end;
End.

9 ответов в теме “помогите плиз! не могу найти ошибку! (Паскаль)”

  1. 9
    Дима Календо ответил:

    да точно)
    привык уже, что с файлами без файловых переменных..

  2. 8
    Игорь Еропкин ответил:

    точнее так

    max:=0;
    while not eof(f) do
    begin
    read(f,a);
    if a.stoim.t>max then max:=a.stoim_t;
    end;
    reset(f);
    while not eof(f) do
    begin
    read(f,a);
    if max-a.stoim_t<=100 then writeln(a.nazv_e);
    end;

  3. 7
    Дима Календо ответил:

    max:=0;
    while not eof(f) do
    begin
    read(a); if a.stoim.t>max then max:=a.stoim_t;
    end;
    reset(f);
    while not eof(f) do
    begin
    read(a);if max-a.stoim_t<=100 then writeln(a.nazv_e);
    end;

  4. 6
    Виталий Брысов ответил:

    1. Сначала находишь максимальное значение
    2. только ПОСЛЕ этого выводишь на экран нужные товары

    Как вариант:
    Начальное значение для max – стоимость первой игрушки, считанной из файла.
    Делай два цикла, храни считанное из файла в массиве.

  5. 5
    Андрей Денисов ответил:

    а это уже другой вопрос

  6. 4
    Руслан Кутнеев ответил:

    ну тогда как найти максимальные значения?

  7. 3
    Виталий Брысов ответил:

    1) значение max не определено.
    2) зачем считанной из файла стоимости, присваивать максимальное значение?

  8. 2
    Игорь Еропкин ответил:

    первые ошибки, которые бросаются в глаза:
    не Assign(f,'H:/RGR3.dat'); а Assign(f,'H:\RGR3.dat');

    в строке If a.stoim_t>max then a.stoim_t:=max; вы присваиваете a.stoim_t значение максимального числа (которое нигде не определено) и в результате в строке If (max-a.stoim_t)<=100 then writeln(a.nazv_e); вы получаете результат вычитания равный – 0 (т.к. a.stoim_t = max)

    скорее всего ошибка в этих строчках

  9. 1
    Жека Кирпичев ответил:

    Что-то неправильно? Исправь что-нибудь!
    Помогло?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.