Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сумма, количество и среднее рациональных чисел в типизированном файле(Pascal)

35K
21 апреля 2009 года
kristinchik
7 / / 06.06.2008
Помогите пожалуйста написать программу на Pascal: Имеется типизированный файл, содержащий записи типа rational. Создайте программу, которая найдет сумму, количество и среднее рациональных чисел, находящихся в файле.
Дополнительная программа, создающая файл с рациональными числами:
Код:
uses crt,mod2;
const max = 6;
var f:file of rational;
I,m:1..max;
r:rational;
  begin
  clrscr;
  randomize;
  m:=random(max);
  assign(f,'t.txt');
  rewrite(f);
  writeln('В файле:');
  for i:=1 to m do
   begin
   r_rand(r);
   r_write(r);
   writeln;
   write(f,r);
   end;
   close(f);
   readln;
  end.


Процедуры из mod2:
Код:
procedure r_rand(var r:rational);
var a,b:integer;
begin
a:=Random(50);
b:=Random(50);
r.chisl:=a;
r.znam:=b;
end;

procedure r_write (r:rational);
begin
write (r.chisl,'/', r.znam);
end;


Начало программы примерно такое:
Код:
uses crt;
const max = 24;
var f:file of integer;
  I,m:1..max;
  x:integer;
  name_of_file:string;
  begin
  clrscr;
  writeln('‚Введите имя файла');
  readln(name_of_file);
  assign(f,name_of_file);
  {$I-}
  reset(f);
  {$I+}
  if IOResult<>0 then
  writeln('Файл ',Name_of_file, ' не найден')
    else
     begin
      writeln('„ Данные из файла',name_of_file,':');
  while not eof(f) do
   begin
...
247
22 апреля 2009 года
wanja
1.2K / / 03.02.2003
А что за тип Rational?
35K
22 апреля 2009 года
kristinchik
7 / / 06.06.2008
type rational = record
chisl: integer;
znam: 1..maxint;
247
23 апреля 2009 года
wanja
1.2K / / 03.02.2003
Код:
var f:file of rational;
  n:integer;
  sum,r:rational;
  ch,z:integer;
procedure reduce(var r:Rational);
var a,b:ineteger;
begin
a:=r.chisl;
b:=r.znam;
while a<>b do
  begin
  if a>b then
    a:=a-b
  else
    b:=b-a;  
  end;
r.chisl:=r.chisl/a;
r.znam:=r.znam/a;
end;
  begin
  sum.chisl:=0;
  sum.znam:=1;
  clrscr;
  writeln('‚Введите имя файла');
  readln(name_of_file);
  assign(f,name_of_file);
  {$I-}
  reset(f);
  {$I+}
  if IOResult<>0 then
  begin
  writeln('Файл ',Name_of_file, ' не найден');
  halt;
  end
    else
     begin
      writeln('„ Данные из файла',name_of_file,':');
  while not eof(f) do
   begin
   read(f,r);
   z:=r.znam*sum.znam;
   ch:=r.chisl*sum.znam+r.znam*sum.chisl;
   sum.znam:=z;sum.chisl:=ch;
   reduce(sum);
   inc(n);
   end;
writeln('кол-во:',n);
writeln('сумма:',sum.chisl,'/',s.znam);
sum.znam:=sum.znam*n;
reduce(sum);
writeln('среднее:',sum.chisl,'/',s.znam);
end.

Примерно так... Сам не отлаживал, так что...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог