Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 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,231
По умолчанию

Код:
  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,231
По умолчанию

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


10:06.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.