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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2012, 09:01   #1
Юлия777
Новичок
Джуниор
 
Регистрация: 08.01.2012
Сообщений: 1
По умолчанию Массивы+типизированные файлы - выделить неповторяющиеся числа (консоль Delphi)

здравствйуте. помогите написать задачу в Delphi 7 в консольном приложении. очень срочно надо....
Массив считывается из типизированного файла (file of integer), имя которо-го запрашивается у пользователя.
Даны целые числа а1, а2, …, аn. Выяснить, есть ли среди них повторяю-щиеся числа, и найти среднее арифметическое без учета повторов. Например, для последовательности чисел 1, 3, 4, 3, 6, 3, 0 надо найти среднее арифметическое чисел 1, 3, 4, 6, 0



________________________________
Юля, для учебных задач у нас на форуме предназначен раздел "Помощь студентам".
Так как это ваша первая тема, то я перенёс тему в нужный раздел.
А на будущее учтите это.

Модератор

Последний раз редактировалось Serge_Bliznykov; 08.01.2012 в 09:15.
Юлия777 вне форума Ответить с цитированием
Старый 08.01.2012, 09:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

задача может быть решена множеством разных способов.
Т.к. речь в задаче о Delphi, то можно использовать мощь средств, заложенных в данный ЯП. Например, динамические массивы.
Типизированный файл тем хорошо, что сразу после открытия известно, сколько компонентов в этом самом файле содержится.
Дописать проверку, которая перебирает элементы в массиве и возвращает, есть уже такое число в масиве или нет...

вот ПРИМЕРНОЕ решение:
Код:
var 
  i, One : integer;
  Mas : array of integer; { динамический массив }
  N : integer; { количество элементов в массиве }
  FN : string;
  f : file of Integer;
  isValueFound : boolean; {признак - результат поиска числа в массиве}
  AverValue : extended;
begin
  WriteLn('Input file name: ');
  Readln(FN);
  if Not FileExists(FN) then
    WriteLn('Error! File '+FN+' not exists!')
  else begin
    AssignFile(f, FN);
    Reset(f);
    SetLength(Mas, FileSize(f) );
    N := 0;
    while not eof( f ) do begin
       Read(f, One);
       isValueFound  := false;
       for i:=0 to N-1 do 
           if Mas[i]=One then begin
               isValueFound  := true; {признак - нашли}
               break; {прерываем цикл. перебирать и проверять даль можно - но бессмыслено - совпадение уже найдено!}
           end;
       {если элемента нет в массиве - добавляем его в массив}
       if Not isValueFound then begin
          Mas[N] := One;
          Inc(N);
       end;
    end;
    CloseFile(f); {закрываем файл, все элементы уже считаны} 

    {вычисляем среднее} 
    if N=0 then WriteLn('Error! No any numbers in file!')
    else begin
      AverValue := 0;
      for i:=0 to N-1 do AverValue := AverValue + Mas[i];
      AverValue := AverValue/ (N-1);
      WriteLn(' average = ', AverValue:1:3); 
    end;
  end;

  ReadLn;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типизированные файлы [delphi] cyber922 Помощь студентам 3 19.11.2015 20:38
Очень нужно сделать задачу в Delphi(Типизированные файлы. файлы записи) Vitalik1 Помощь студентам 1 16.12.2011 10:38
Типизированные файлы в delphi Ulena Помощь студентам 10 13.04.2010 14:15
Типизированные файлы (Delphi) ЭлЭрДжи Помощь студентам 1 04.01.2010 08:29
Типизированные файлы и Delphi Polina Помощь студентам 8 12.12.2007 18:40