1

Тема: Побудова задачі за допомогою масиву.

Допоможіть скласти задачу за допомогою масиву.
Умова задачі: "Знайти елемент, який найменше віддалений від середнього арифметичного всіх елементів масиву."
Середнє арифметизне я знайшов:

Прихований текст

program ab;
uses crt;
const n=10;
var a: array [1..n] of integer;
    i,k,s:integer;
    ser:real;
begin
   clrscr;
   randomize;
   s:=0;
     for i:=1 to n do
       begin
         a[i]:=random(10)+1;
         s:=s+a[i];
       end;
   writeln ('Елементи масиву: ');
     for i:=1 to n do write (a[i]:3);
   writeln;
   ser:=s/n;
   writeln ('Середнє арифметичне елементів масиву: ');
   writeln (ser:3:1);
end.

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds

2

Re: Побудова задачі за допомогою масиву.

Проходимось ще раз по масиву. І шукаємо у якого елемента найменша різниця по модулю з середнім арифметичним.
Приблизно виглядає так:

   min_i := 1;
   for i:=2 to n do
       if abs(a[i] - ser) < abs(a[min_i] - ser) then
          min_i := i;

min_i - і є індекс того елемента, який необхідно знайти

Подякували: Logans1

3

Re: Побудова задачі за допомогою масиву.

Replace написав:

Проходимось ще раз по масиву. І шукаємо у якого елемента найменша різниця по модулю з середнім арифметичним.
Приблизно виглядає так:

   min_i := 1;
   for i:=2 to n do
       if abs(a[i] - ser) < abs(a[min_i] - ser) then
          min_i := i;

min_i - і є індекс того елемента, який необхідно знайти

Якщо чесно то не виходить.
Ось код задачі.

Прихований текст

program ab;
uses crt;
const n=10;
var a: array [1..n] of integer;
    i,k,s,min_i:integer;
    ser:real;
begin
   clrscr;
   randomize;
   s:=0;
     for i:=1 to n do
       begin
         a[i]:=random(10)+1;
         s:=s+a[i];
       end;
   writeln ('Елементи масиву: ');
     for i:=1 to n do write (a[i]:3);
   writeln;
   ser:=s/n;
   writeln ('Середнє арифметичне елементів масиву: ');
   writeln (ser:3:1);
   min_i := 1;
     for i:=1 to n do
       begin
         if abs(a[i] - ser) < abs(a[min_i] - ser) then min_i := i;
       end;
   writeln ('Елемент, який найменьше віддалений від середнього арифметичного: ');
   writeln (min_i:3);
end.

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds

4

Re: Побудова задачі за допомогою масиву.

А здається все працює. Показує ж індекс, а не значення.

Подякували: Logans1

5 Востаннє редагувалося Logans (04.11.2012 19:49:31)

Re: Побудова задачі за допомогою масиву.

Replace написав:

А здається все працює. Показує ж індекс, а не значення.

Аа, так там індекс, а я не подивився якось. Тоді так, все працює, дякую.
А тоді таке питання, як вивестит сам елемент?

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds

Re: Побудова задачі за допомогою масиву.

Oleg написав:

А тоді таке питання, як вивестит сам елемент?

writeln (a[min_i]);
Подякували: Replace, Logans2