IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> одномерный массив
шалунья
сообщение 6.12.2004 14:34
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Женский

Репутация: -  0  +


Вот задачка:
Определить среднее значение элементов массива. Найти далее индекс элемента массива, наиболее близкого к среднему значению.

Я знаю, как найти среднее значение элементов массива, а вот как найти индекс элемента массива, наиболее близкого к среднему значению я не знаю. Кому не сложно подскажите бедной студентке, как это сделать!!!! Заранее СПАСИБО!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.12.2004 14:44
Сообщение #2


Гость






шалунья
Вот пример решения (просто замени константы на переменные и организуй ввод массива):
Код

const
 n = 10;
 a: array[1 .. n] of integer =
   (2, 5, 3, 8, 6, 9, 1, 13, 10, 22);

var
 aver, min: real;
 i, index: integer;

begin
 aver := 0;
 for i := 1 to 10 do
   aver := aver + a[i];
 aver := aver / n;

 min := maxInt;
 for i := 1 to n do
   if min > abs(a[i] - aver) then
     begin
       min := abs(a[i] - aver); index := i
     end;

 writeln('average = ', aver:10:5);
 writeln('closest = a[', index, '] = ', a[index]:4);
end.
 К началу страницы 
+ Ответить 
Бродяжник
сообщение 6.12.2004 14:55
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 206
Пол: Мужской

Репутация: -  3  +


Один из возможных вариантов.
m1 - наш массив, sred - среднее значение, bliz - индекс ближайшего.
(Дремучая лень помешала мне написать всю прогу целиком и отладить ее. Но по идее должно работать)
Код

program x;
const n=10;
var m1: array[1..n] of real;
   sred,delta_best: real;
   i,bliz: integer;
begin
  {Здесь вводим массив и просчитываем среднее значение}
  {...}


  {А теперь будем искать ближайший элемент}
  bliz := 1;
  delta_best := abs(sred-m1[1]);

  for i:=2 to n do
      begin
        delta :=  abs(sred-m1[i]);

        if delta < delta_best
           then
             begin
               delta_best := delta;
               bliz := i;
             end;
      end;

{...что-то там еще}
{...}
end.


P.S. Volvo меня обошел!

Сообщение отредактировано: Бродяжник - 6.12.2004 14:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
шалунья
сообщение 6.12.2004 15:24
Сообщение #4





Группа: Пользователи
Сообщений: 7
Пол: Женский

Репутация: -  0  +


:D СПАСИБО!!!! :thanks:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 13:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"