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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2013, 06:50   #1
zxzxz
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 21
По умолчанию Записи

Код:
program ex;
uses crt;
type price=record;
tov,mag:string;
stoim:integer;
end;
procedure doall;
   var
     f: file of price;
     tovar,name: string;
     uch: array[1..4] of price;
     stoimost:integer;
     s:integer;
     s1:price;
begin
   clrscr;
   Writeln ('Задайте имя файла');
   Readln (name);
   Assign (f, name);
   Rewrite (f);
   Writeln ('Введите название товара ');
   Readln (s1.tov);
   While s1.tov <> ' ' do
         Begin
              Writeln ('Введите название магазина, в котором продается товар ');
              Readln (s1.mag);
              writeln ('Введите стоимость товара в рублях ');
              readln (s1.stoim);
              write (f,s1);
              Writeln ('Введите название товара ');
              Readln (name);
              s1.tov:=name;
                End;
         Writeln ('Файл создан');
            Close(f);
            reset(f);
         writeln (' Pokazat spisok ');
          while not Eof(f) do
          begin
            read (f,s1);
            with s1 do begin
              WriteLn('Магазин: ',mag);
              WriteLn('Стоимость: ',stoim);
              WriteLn('Товар: ',tov);
              WriteLn('----------------');
            end;
          end;
   ReadLn(mag);
   reset(f);
   readln(s);
          while not Eof(f) do
          begin
            read (f,s1);
            if s1.stoim>s then continue;
            with s1 do begin
              WriteLn('Магазин: ',mag);
              WriteLn('Стоимость: ',stoim);
              WriteLn('Товар: ',tov);
              WriteLn('----------------');
            end;
          end;
    close(f);


       while not Eof(f) do
          begin
            read (f,s1);
            if s1.stoim>sred then continue;
            with s1 do begin
              WriteLn('Магазин: ',mag);
              WriteLn('Стоимость: ',stoim);
              WriteLn('Товар: ',tov);
              WriteLn('----------------');
               else writeln('Таких товаров нет');
            end;
   end;
   Close(F);
   reset(f);
     ReadLn(day);
   While not Eof(F) do

   end;
   Close(F);
end;

begin
  DoAll;
end.
помогите пожалуйста доделать,чтоб выводил информацию о товарах,стоимость которых выше средней
zxzxz вне форума Ответить с цитированием
Старый 21.05.2013, 07:30   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
Код:
 if s1.stoim>sred then continue;
не понял к чему нужна эта строчка???
т.е. если стоимость очередного товара выше средней,то
Цитата:
Процедура Continue обеспечивает переход к началу новой итерации цикла.
а вам вроде бы наоборот нужно.

Может быть так?
Код:
while not Eof(f) do
          begin
            read (f,s1);
            if s1.stoim>sred then 
            with s1 do 
             begin
              WriteLn('Магазин: ',mag);
              WriteLn('Стоимость: ',stoim);
              WriteLn('Товар: ',tov);
              WriteLn('----------------');          
            end;
   end;
Только не увидел у Вас куска кода, где рассчитывается sred - средняя цена...
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 22.05.2013, 14:21   #3
zxzxz
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 21
По умолчанию

Код:
program ex;
uses crt;
type price=record;
tov,mag:string;
stoim:real;
end;
filebd=file of price;
var f:filebd;
    sr:real;
procedure doall(var f:filebd; sr:real);
var name: string;
     x:price;
     answer:char;
     j:integer;
begin
   Writeln ('Задайте имя файла');
   Readln (name);
   Assign (f, name);
   Rewrite (f);
   answer:='y';
    While answer='y' do
     Begin
      Writeln ('Введите название товара ');
      Readln (x.tov);
              Writeln ('Введите название магазина, в котором продается товар ');
              Readln (x.mag);
              writeln ('Введите стоимость товара в рублях ');
              readln (x.stoim); sr:=x.stoim+sr; j:=j+1;
              write (f,x);
              Write ('Продолжить? ');
              Readln (answer);
                End;
                sr:=sr/j;
           Writeln ('Файл создан');
            Close(f);
            reset(f);
            end;
procedure printbd(f:filebd);
var x:price;
begin
   writeln ('Показать список ');
     while not Eof(f) do
       begin
         read (f,x);
         Writeln('Магазин: ',x.mag);
         Writeln('Стоимость: ',x.stoim:5:2);
         Writeln('Товар: ',x.tov);
         Writeln('----------------');
         writeln;
       end;
end;
procedure qwer (f:filebd);
var x:price;
    s:integer;
    name:string;
begin
 ReadLn(name);
 reset(f);
 readln(s);
    while not Eof(f) do
       begin
        read (f,x);
        if (x.stoim>s)and(x.mag=name) then
           begin
              Writeln('Магазин: ',x.mag);
              Writeln('Стоимость: ',x.stoim:5:2);
              WriteLn('Товар: ',x.tov);
              WriteLn('----------------');
            end;
        end;
    close(f);
 end;
procedure sred (f:filebd; sr:real);
var q:integer; x:price;
begin
     q:=0;
       while not Eof(f) do
       begin
        read (f,x);
        if x.stoim>sr then
          begin q:=q+1;
              Writeln('Магазин: ',x.mag);
              Writeln('Стоимость: ',x.stoim);
              Writeln('Товар: ',x.tov);
              WriteLn('----------------');
            end;
         end;
          if q=0 then  writeln('Таких товаров нет');
       Close(F);
end;
begin
  clrscr;
  DoAll(f,sr);
  printbd(f);
  qwer (f);
  sred (f,sr);
end.
вот доделала..только он выводит все что ввели,а надо чтобы
1)выводил информацию о товаре,цена которого выше средней
2)выводил информацию о товаре цена которого выше указанного S
помогите пожалуйста сделать чтобы правильно выводил
zxzxz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить записи из таблицы, если дата в записи старше 30 дней Aleksandr БД в Delphi 10 28.03.2013 21:33
Записи Drago56 Паскаль, Turbo Pascal, PascalABC.NET 4 22.11.2012 17:17
Оцените математической формулой, насколько больше цифр в двоичной записи большого числа, чем в его десятичной записи. Анюта.Хом Помощь студентам 1 02.12.2011 23:13
ЗАПИСИ gnom63 Помощь студентам 1 10.03.2009 15:52
Записи ReM Паскаль, Turbo Pascal, PascalABC.NET 2 15.10.2008 08:50