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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2013, 14:39   #1
IIe4eHbka
 
Регистрация: 05.05.2013
Сообщений: 3
По умолчанию среднее значение для исходного файла

Подсчитать для исходного файла среднее значение положительных чисел.Получить новый файл g, поместив в него только те положительные нечетные компоненты файла ,значение которых отличается от посчитанного среднего значения не более,чем на 10%.
Код:
program ex;
function avg(filename:string):real;
var f:file of integer;
    d:real;
    i:integer;
begin
 assign(f,filename);
 reset(f);
 i:=0;
 result:=0;
 while not eof(f) do
  begin
  read(f,d);
 if d>0 then Result:=Result+d;
 inc(i);
  end;
 if i>0 then Result:=result/i;
 closefile(f);
end;
function po(filenameIn,FileNameOut:string):real;
var f,g:file of integer;
    d,e:real;
    i:integer;
begin
 e:=avg(FilenameIn);
 assign(f,filenameIn);
 reset(f);
 assign(g,filenameIn);
 rewrite(g);
 while not eof(f) do
  begin read(f,d);
 if (abs(d-e)/e<=0.1) and (d>0) and odd(d)
 then write(g,d);
  end;
end;
 closefile(f);
 closefile(g);
end;
 begin
 avg(filename);
 po(filenameIn,FileNameOut);
end.
помогите пожалуйста ошибки исправить

Последний раз редактировалось IIe4eHbka; 13.05.2013 в 19:49.
IIe4eHbka вне форума Ответить с цитированием
Старый 13.05.2013, 23:54   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот, только я не проверял.

те ошибки, которые увидел, исправил:
Код:
program Project6;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function avg(filename: string): real;
var f: file of integer;
  d, avg_temp : integer;
  i: integer;
begin
  assign(f, filename);
  reset(f);
  i := 0;
  avg_temp := 0;
  while not eof(f) do
  begin
    read(f, d);
    if d > 0 then begin
      avg_temp := avg_temp + d;
      inc(i);
    end;
  end;
  if i > 0 then avg := avg_temp / i
  else avg := 0;
  closefile(f);
end;

procedure po(filenameIn, FileNameOut: string);
var f, g: file of integer;
  e : real;
  d : integer;
begin
  e := avg(FilenameIn);
  assign(f, filenameIn);
  reset(f);
  assign(g, filenameIn);
  rewrite(g);
  while not eof(f) do
  begin
    read(f, d);
    if (abs(d - e) / e <= 0.1) and (d > 0) and odd(d)
      then write(g, d);
  end;
  closefile(f);
  closefile(g);
end;

var
  filenameIn, FileNameOut : string;
begin
  WriteLn('Vvedite imya ishoidnogo faila');
  Readln(filenameIn);
  WriteLn('Vvedite imya vyhodnogo faila');
  Readln(FileNameOut);
  po(filenameIn, FileNameOut);
  WriteLn('Done!');
end.

учтите, что файлы НЕ текстовые, они бинарные (двоичные) писать/читать их можно только через программу, блокнотом/редактором Вы там ничего полезного не увидите/не напишите!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для копирования файла из одного места в другое с просчётом размера исходного файла (Delphi) Xoma37 Помощь студентам 4 11.09.2012 17:58
Среднее значение Dima-War Общие вопросы C/C++ 7 23.03.2012 10:37
Среднее значение acidcool SQL, базы данных 11 16.08.2009 16:34
среднее значение MyQwErTy Паскаль, Turbo Pascal, PascalABC.NET 3 09.11.2008 21:17
среднее значение tonic Microsoft Office Excel 1 04.01.2008 00:20