Помогите! через 2 дня зачет!

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
hexx
Сообщения: 2
Зарегистрирован: 28 ноя 2007, 12:53

Ребята, реально выручайте, до зачета осталось 2 дня, помогите пожалуйста решить задачу по программированию. Если Вам не сложно, то еще пожалуйста сделайте к ней блок-схему.
Заранее Благодарю!

"Дано масив дійсних чисел. Знайти суму двох найменших по абсолютній величині елементів масиву."
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

&quot писал(а):дійсних
хоть это и не сильно важно, но я лично не понял что это за слово.

переношу в "РМЗ"
Изображение
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Раздел алгоритмы, тема "нахождение минимума" или максимума. Нашли - убрали число из массива, поискали следующее по величине. Сложили.
Либо: раздел алгоритмы, тема "Сортировка массива". Отсортировали по возрастанию, сложили 1 и 2 элементы
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
annihilator
Сообщения: 35
Зарегистрирован: 27 ноя 2007, 00:22

hexx, есть два варианта. Вариант первый:

Код: Выделить всё

var arr:array [1..количество_элементов] of чевототам;
a,b,s:чевототам;i:integer;
begin
for i:=1 to количество_элементов do
      begin
      writeln('введите элемент номер',i);
      readln(arr[i]);
      end; {только что были введены все элементы массива}
a:=abs(arr[1]);{чтобы было с чем сравнивать}
for i:=2 to количество_элементов do
if abs(arr[i])<a then a:=abs(arr[i]);{цикл будет сравнивать модуль элемента массива с значением переменной а, таким образом в переменной а будет записан модуль наименьшего элемента массива}
b:=abs(arr[1]);{по аналогии с переменной а}
for i:=2 to количество_элементов do
if (abs(arr[i])<b) and (abs(arr[i])<>a) then b:=abs(arr[i]);
{этот цикл делает то же, что и предыдущий, но загоняет в переменную b наименьший элемент исключая значение, уже записанное в а}
s:=a+b;{а вот и наша сумма модулей наименьших элементов, которая выводится через writeln или write}
второй метод - сортировка методом пузырька. Если интересно - тоже напишу. Хочешь сказать спасибо - поставь мне плюсег в репутацию=)
Единственный глюк этой методики - если самый первый элемент массива будет наименьшим. Однако от этого можно избавиться, если заменить строчку

Код: Выделить всё

 b:=abs(arr[1])
на

Код: Выделить всё

 for i:=1 to количество_элементов do
if abs(arr[i])<>a then begin b:=abs(arr[i]);break;end;
тогда даже если массив будет {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2} то переменная b получит значение 2 потому что 1 уже зарезервировано за переменной а.

Хыиуду, ну зачем же портить массив? а если препод скажет ещё что-то туда добавить, с чем работать?
Вот представьте себе: чистое поле - ни кустика, ни деревца, и вдруг из-за угла выезжает танк!
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

annihilator писал(а):Хыиуду, ну зачем же портить массив? а если препод скажет ещё что-то туда добавить, с чем работать?
Надо сказать преподу: "Техзадание надо ставить сразу и конкретно, а не менять по ходу разработки!".
А если не хочется портить отношения - создать еще один такой же массив и с ним работать
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
annihilator
Сообщения: 35
Зарегистрирован: 27 ноя 2007, 00:22

Хыиуду писал(а):Надо сказать преподу: "Техзадание надо ставить сразу и конкретно, а не менять по ходу разработки!".
А если не хочется портить отношения - создать еще один такой же массив и с ним работать
тоже правда, но всё таки лучше не менять исходные данные - пусть себе лежат, думаю что лишний кб никому не навредит. К слову, хоть и оффтоп, у меня в универе препод по информатике никогда от меня ничего не хотел, ибо он ещё больший ламак чем я =)
Вот представьте себе: чистое поле - ни кустика, ни деревца, и вдруг из-за угла выезжает танк!
Ответить