Ребята, реально выручайте, до зачета осталось 2 дня, помогите пожалуйста решить задачу по программированию. Если Вам не сложно, то еще пожалуйста сделайте к ней блок-схему.
Заранее Благодарю!
"Дано масив дійсних чисел. Знайти суму двох найменших по абсолютній величині елементів масиву."
Помогите! через 2 дня зачет!
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
хоть это и не сильно важно, но я лично не понял что это за слово." писал(а):дійсних
переношу в "РМЗ"

Раздел алгоритмы, тема "нахождение минимума" или максимума. Нашли - убрали число из массива, поискали следующее по величине. Сложили.
Либо: раздел алгоритмы, тема "Сортировка массива". Отсортировали по возрастанию, сложили 1 и 2 элементы
Либо: раздел алгоритмы, тема "Сортировка массива". Отсортировали по возрастанию, сложили 1 и 2 элементы
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- annihilator
- Сообщения: 35
- Зарегистрирован: 27 ноя 2007, 00:22
hexx, есть два варианта. Вариант первый:
второй метод - сортировка методом пузырька. Если интересно - тоже напишу. Хочешь сказать спасибо - поставь мне плюсег в репутацию=)
Единственный глюк этой методики - если самый первый элемент массива будет наименьшим. Однако от этого можно избавиться, если заменить строчку
на тогда даже если массив будет {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2} то переменная b получит значение 2 потому что 1 уже зарезервировано за переменной а.
Хыиуду, ну зачем же портить массив? а если препод скажет ещё что-то туда добавить, с чем работать?
Код: Выделить всё
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;
Хыиуду, ну зачем же портить массив? а если препод скажет ещё что-то туда добавить, с чем работать?
Вот представьте себе: чистое поле - ни кустика, ни деревца, и вдруг из-за угла выезжает танк!
Надо сказать преподу: "Техзадание надо ставить сразу и конкретно, а не менять по ходу разработки!".annihilator писал(а):Хыиуду, ну зачем же портить массив? а если препод скажет ещё что-то туда добавить, с чем работать?
А если не хочется портить отношения - создать еще один такой же массив и с ним работать
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- annihilator
- Сообщения: 35
- Зарегистрирован: 27 ноя 2007, 00:22
тоже правда, но всё таки лучше не менять исходные данные - пусть себе лежат, думаю что лишний кб никому не навредит. К слову, хоть и оффтоп, у меня в универе препод по информатике никогда от меня ничего не хотел, ибо он ещё больший ламак чем я =)Хыиуду писал(а):Надо сказать преподу: "Техзадание надо ставить сразу и конкретно, а не менять по ходу разработки!".
А если не хочется портить отношения - создать еще один такой же массив и с ним работать
Вот представьте себе: чистое поле - ни кустика, ни деревца, и вдруг из-за угла выезжает танк!