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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2012, 18:30   #1
Ester
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 14
Печаль Одномерный массив

Дан одномерный массив, нужно в нем найти три числа,среднее арифметическое которых будет ближе всего по значению к заданному числу х.

Ну сначала вводим массив,число х,это все понятно:
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
a:array[1..10]of integer;
i,x,n:integer;
sr,min:real;


BEGIN
writeln('n=');
readln(n);
writeln('x=');
readln(x);
for i:=1 to n do begin
a[i]:=random(10)+1;
write (a[i],'  ');
 end;
writeln;

{ TODO -oUser -cConsole Main : Insert code here }
readln;
end.
А потом я так понимаю нужно сделать цикл мудренный,дабы все тройки чисел перебрать,их среднее арифметическое сохранить в дополнительный массив.Потом найти модуль разницы числа х и каждого среднего арифметического.Из полученных значений найти минимальное и вывести искомые три числа.
Но я никак не могу это записать да и не знаю правильно ли придумала.
Помогите,пожалуйста,а то завтра сдавать
Ester вне форума Ответить с цитированием
Старый 25.01.2012, 18:54   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Мне кажется так:
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
a:array[1..10]of integer;
i,x,n:integer;
j,k:integer;
ii,jj,kk:integer;
sr,min:real;
E:real;

BEGIN
writeln('n=');
readln(n);
writeln('x=');
readln(x);
randomize; //это тоже не помешает
for i:=1 to n do begin
a[i]:=random(10)+1;
write (a[i],'  ');
 end;
writeln;
//sr:=(a[1]+a[2]+a[3])/3;
E:=abs(((a[1]+a[2]+a[3])/3)-x);   //E - разница между средним арифметическим и x
ii:=1;
jj:=2;
kk:=3;
for i:=1 to n do
  for j:=i+1 to n do
    for k:=j+1 to n do
      if abs(((a[i]+a[j]+a[k])/3)-x)<E then
        begin
          E:=abs(((a[i]+a[j]+a[k])/3)-x);
          ii:=i;
          jj:=j;
          kk:=k;
        end;
writeln('(',a[ii],'+',a[jj],'+',a[kk],')/3-',x,'= ',E);



{ TODO -oUser -cConsole Main : Insert code here }
readln;
end.
Все тривиальное просто

Последний раз редактировалось whatever; 25.01.2012 в 18:57.
whatever вне форума Ответить с цитированием
Старый 25.01.2012, 19:58   #3
Ester
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 14
По умолчанию

О,спасибо огромное,работает=)
Ester вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
одномерный массив paladinn Помощь студентам 1 05.06.2009 19:28