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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2011, 16:43   #1
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
Вопрос ошибка при записи в типизированный файл

Код:
program sozdat_file_agenstvo;

{$APPTYPE CONSOLE}

uses
  SysUtils;
type  ms=array[1..20] of integer;
type  ms2=array[1..31] of integer;
type  ms3=array[1..12] of integer;
type  ms4=array[1990..2011] of integer;
type agent=record
     kk:byte;
     et:ms;
     pl:real;
     dt:record
     den:ms2;
     mes:ms3;
     god:ms4;
     end;end;
type kvart=file of agent;
var i,n:integer; f:kvart; k:agent;
begin
  WriteLn('kol-vo kvartir: ');
  Readln(n);
  Assign(f, 'agenstvo.ddt');
  Rewrite(f);
  for i:=1 to N do begin
    Writeln('opishi kvartiru ¹ ',i);
    write('komnati: ');
    Readln(k.kk);
    Write(f,k.kk);
    write('etag: ');
    Readln(k.et);
    Write(f,k.et);
    write('ploschad: ');
    Readln(k.pl);
    Write(f,k.pl);
    write('den registr: ');
    Readln(k.dt.den);
    Write(f,k.dt.den);
    write('den registr: ');
    Readln(k.dt.den);
    Write(f,k.dt.den);
    write('mesac registr: ');
    Readln(k.dt.mes);
    Write(f,k.dt.mes);
    write('god registr: ');
    Readln(k.dt.god);
    Write(f,k.dt.god);
  end;
  Close(f);
end.
что не так?((
phasha вне форума Ответить с цитированием
Старый 17.04.2011, 17:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
  for i:=1 to N do begin
    Writeln('opishi kvartiru ? ',i);
    write('komnati: ');
    Readln(k.kk);
    write('etag: ');
    Readln(k.et);
    write('ploschad: ');
    Readln(k.pl);
    write('den registr: ');
    Readln(k.dt.den);
    write('den registr: ');
    Readln(k.dt.den);
    write('mesac registr: ');
    Readln(k.dt.mes);
    write('god registr: ');
    Readln(k.dt.god);

    Write(f, k);
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.04.2011, 17:40   #3
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

спасибо!=)

Последний раз редактировалось phasha; 17.04.2011 в 17:44. Причина: все понял=))
phasha вне форума Ответить с цитированием
Старый 17.04.2011, 20:42   #4
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

Код:
program uznat_samoe_nedorogoe;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type agent=record
     kk:byte;
     et:integer;
     pl:real;
     cena:real;
     dt:record
     den:integer;
     mes:integer;
     god:integer;
     end;end;
type kvart=file of agent;
var i,n:integer; f:kvart; k:agent;
begin   i:=0;
 assign(f,'agenstvo.ddt');
 reset(f);
 While Not Eof(F) Do
  begin

   Inc(i);
   Read(F, K);
   Writeln('kvartira: ', i);
   Writeln('komnati: ', K.kk);
   Writeln('etag: ', K.et);
   Writeln('ploschad: ',K.pl:3:0,' kv. metrov');
   Writeln('data reg.: ', K.dt.den,'.',K.dt.mes,'.',K.dt.god,'g.');
   writeln('cena: ',k.cena:8:2,' rubley');
   writeln('----------------------------');
  end;
 readln;
  Close(f);
end.
как сравнить цены и вывести 3 самые дешевые квартиры квартиры?вывести одно дело...но поставить условие вывода((не получается(
phasha вне форума Ответить с цитированием
Старый 17.04.2011, 23:37   #5
phasha
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 130
По умолчанию

Код:
program uznat_3samih_nedorogih;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type agent=record
     kk:byte;
     et:integer;
     pl:real;
     cena:real;
     dt:record
     den:integer;
     mes:integer;
     god:integer;
     end;end;
type kvart=file of agent;
var i,n:integer; f:kvart; k:agent; min1:real;
begin   i:=0;
 assign(f,'agenstvo.ddt');
 reset(f);   min1:=1000000000;
 While Not Eof(F) Do
  begin
   Inc(i);
   Read(F, K);
    if k.cena<=min1 then begin min1:=k.cena;
   Writeln('kvartira: ', i);
   Writeln('komnati: ', K.kk);
   Writeln('etag: ', K.et);
   Writeln('ploschad: ',K.pl:3:0,' kv. metrov');
   Writeln('data reg.: ', K.dt.den,'.',K.dt.mes,'.',K.dt.god,'g.');
   writeln('cena: ',min1:8:2,' rubley');
   writeln('----------------------------');  end;

  end;
 readln;
  Close(f);

end.
это вывод одной самой дешевой квартиры... я не могу сообразить как вывести три самые дешевые...

Последний раз редактировалось phasha; 17.04.2011 в 23:40.
phasha вне форума Ответить с цитированием
Старый 18.04.2011, 00:05   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

phasha
на форуме действует правило:
один вопрос (одна проблема) - одна тема.

Поэтому рекомендую создать новую тему (с правильным названием!)

p.s. 1) подобные задачи (нахождение несколько наименьших или наибольших значений неоднократно решались на форуме, можете поискать
2) самый простой (но не самый эффективный!!) способ - это загрузить все записи в массив, отсортировать его по нужной величине и выдать нужное число записей либо с начала массива, либо с конца (в зависимости от требований и порядка сортировки)...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка записи в файл nisoldatov Софт 2 31.03.2009 02:24
[Pascal]типизированный файл+записи Fuaran8989 Помощь студентам 4 30.11.2008 14:01
Ошибка при записи в файл txt Alex_Ku Помощь студентам 2 28.04.2007 12:15