1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| Ира |
Сообщение
#1
|
|
Гость |
Задан массив, состоящий из n неотрицательных чисел.
Найти в нём индекс элемента для которого сумма элементов, стоящих до него, наименее отличается от суммы элементов, стоящих после него. ( Числа хранятся в линейном односвязном списке или в файле с последовательным доступом. Найти наиболее эффективные алгоритмы для случая прямого и последовательного доступа с возможностью использовать рабочий массив размерностью n или без неё) Спасибо за внимание, буду благодарна за ответы. |
![]() ![]() |
| Amro |
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: 2 |
Само нахождение номера элемента я понимаю так:
Во первых номер элемента не может быть первым и последним Значит надо брать со второго элемента списка или массива и до предпоследнего, итак берём элемент считаем сумму до него и после него, далее отнимаем от большей суммы меньшую и запоминаем её в какую-нибудь переменную, например (К), берём следующий элемент и проделываем теже действия, смотрим если разность сумм будет больше (К), то оставляем (К) таким же, иначе меняем на новую разность и так до конца, пока не найдём самую малую разность сумм, при этом нужно запоминать номер взятого элемента!!!! В общем если сделать всё по простому, то я имею ввиду сделать что-то в этом роде, используя массив: Код const n=16; var mas:array[1..n] of integer; i,j,k,Sum1,Sum2,ish,nomer:integer; begin clrscr; randomize; for i:=1 to n do begin mas[i]:=random(9); write(mas[i]:3); end; Sum1:=0; Sum2:=0; {} j:=2; for k:=1 to j-1 do Sum1:=Sum1+mas[k]; {} for k:=j+1 to n do Sum2:=Sum2+mas[k]; {} if Sum1>Sum2 then ish:=Sum1-Sum2 else ish:=Sum2-Sum1; nomer:=j; {} for j:=3 to n-1 do begin Sum1:=0; Sum2:=0; {} for k:=1 to j-1 do Sum1:=Sum1+mas[k]; {} for k:=j+1 to n do Sum2:=Sum2+mas[k]; {} if (Sum1>Sum2) then if ish>(Sum1-Sum2) then begin ish:=Sum1-Sum2; nomer:=j; end; if (Sum2>Sum1) then if ish>(Sum2-Sum1) then begin ish:=Sum2-Sum1; nomer:=j; end; if (Sum1=Sum2) then nomer:=j; end; {} writeln; write('Номер элемента ',nomer); end. Правда это только для наглядности, написал на скорую руку, но думаю основываться надо на этом, естественно надо сделать как то по легче, вернее по меньше шоб написано было!!! Посмотрим как будет действовать Atos Сообщение отредактировано: Amro - -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
Ира массивы, линейный односвязный список , файлы + 13.10.2004 23:52
Atos Задание срочное?
Постараюсь за выходные подумать н… 16.10.2004 12:53
zx1024 Пусть A - указатель на список с полями inf - само … 16.10.2004 17:11
Amro zx1024 Или я совсем дурак, или я просто не допонял… 16.10.2004 23:10
virt Flipper ,Гость_Tanya
решать вам тут никто не обяза… 16.10.2004 23:35
Atos Ого, сколько уже ответов... :huh: Сейчас начну смо… 17.10.2004 21:47
Atos Посмотрел...
То, что у меня описано в 1А), не силь… 17.10.2004 22:36
Amro Atos Дык ведь сказано
Выходит что сам элемент не … 17.10.2004 22:59
Atos
Ну, под суммой элементов, стоящих перед первым, м… 17.10.2004 23:10
Amro Получается что так, тагды понятно......
тоже вер… 17.10.2004 23:26
zx1024 Amro, я, возможно подзабыл чистый Паскаль, но свой… 18.10.2004 0:37
Atos Точно... :huh: Спасибо за поправку. Чего-то я совс… 18.10.2004 11:51
Guest С помощью односвязного списка напишите, пожалуйста… 21.11.2005 0:56
volvo Guest, во-первых, зачем было поднимать тему, котор… 21.11.2005 0:59![]() ![]() |
|
Текстовая версия | 8.11.2025 16:37 |