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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2015, 23:22   #1
Promi
Пользователь
 
Регистрация: 02.07.2015
Сообщений: 33
По умолчанию Рассчитать значения 12-ти элементов массива Y по формуле

Рассчитать значения 12-ти элементов массива Y по формуле . Вывести на экран этот массив и новый, разместив в нем первоначально элементы, значения которых меньше среднего арифметического, а потом остальные, не меняя их последовательности.
Изображения
Тип файла: png Безымянный2.png (924 байт, 162 просмотров)
Promi вне форума Ответить с цитированием
Старый 03.07.2015, 06:57   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
function yi(i:real):real;
begin
   yi:=i*i-2*i+19.3*cos(i);
end;

var y:array[1..12] of real;
    i,j,k:integer;
    sr,z:real;
begin
   Randomize;
   sr:=0;
   For i:=1 to 12 do
   begin
      y[i]:=yi(Random);
      Write(y[i]:5:5,'  ');
      sr:=sr+y[i];
   end;
   Writeln;
   Writeln;
   sr:=sr/12;
   Writeln(sr:5:5);
   Writeln;
   k:=1;
   For i:=1 to 12 do
      If y[i]<sr then
      begin
         z:=y[i];
         For j:=i downto k+1 do
            y[j]:=y[j-1];
         y[k]:=z;
         k:=k+1;
      end;
   For i:=1 to 12 do
      Write(y[i]:5:5,'  ');
   Writeln;
   Readln;
end.
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 04.07.2015, 17:52   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Исключительно только как другой вариант:
Код:
const n = 12;
function f(x:real):real;
begin
   f:=sqr(x)-2*x+19.3*cos(x);
end;

var      y: array[1..12] of real;
       i,j: integer;
    sr,tmp: real;
begin
   Randomize;
   sr := 0;
   For i := 1 to n do
   begin
      y[i] := f(Random);
      Write(y[i]:5:5,'  ');
      sr:=sr + y[i] / n;
   end;
   Writeln(#10, #13); {один переход на новую строку за счет комбинации символв и второй - writeln}
   Writeln(sr:5:5);
   Writeln(#10, #13);
   i := 1;
   j := n;
   while i <= j do
   begin
      if y[i] > sr then
         while i < j do
         begin
            if y[j] < sr then
            begin
               tmp := y[i];
               y[i] := y[j];
               y[j] := tmp;
               j := j - 1;
               break;
            end;
            j := j - 1;
         end;
      i := i + 1;
   end;

   For i:=1 to 12 do
      Write(y[i]:5:5,'  ');
   Writeln;
   Readln;
end.
1. Не только для 12-и элементов массива;
2. sr = (a +b + c+ ...)/n = a/n + b/n + c/n + ... И это более верно, так как позволяет находить среднее для большего числа элементов. Простое суммирование приведет к переполнению раньше ...
3. В место повторения writeln можно использовать вывод последовательности символов, которые дают тот же результат.
4. После обнаружения значения, которое больше среднего, ищется элемент, с "хвоста" массива, с которым можно выполнить обмен. При этом, конечно же, нарушается последовательность появления элементов массива, но уменьшается число перестановок.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рассчитать значения 12-ти элементов массива Y по формуле Promi Общие вопросы C/C++ 1 04.07.2015 15:01
задать в Var значения элементов массива NewLamer&Programer Помощь студентам 5 15.01.2013 13:19
Составить программу для вычисления элементов одномерного массива по заданной формуле Ваня 37 Паскаль, Turbo Pascal, PascalABC.NET 0 24.12.2012 14:42
Дан массив, содержащий N элементов. Найти наименьший элемент массива а, значения элементов которого вычисляются по формуле: аiтое= Андрей9317 Помощь студентам 0 13.12.2011 13:30
Вывод значения элементов массива valdemar593 Общие вопросы C/C++ 7 22.12.2009 21:37