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

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

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

> нахождение суммы, Срочно!!!
Bard
сообщение 16.03.2007 12:56
Сообщение #1


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

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


Срочно wacko.gif ...пожалуйста помогите мне решить задачу... unsure.gif
из заданных 9 чисел нужно найти 7 из них сумма которых равна 100
Спасибо за ранее... smile.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
КМА
сообщение 17.03.2007 1:43
Сообщение #2


Пионер
**

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

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


Вот то что получилось у меня, пока только для положительных чисел, по сути доработка твоей идеи.


CONST n=9;

VAR
count: array [1..n] of word;
s: longInt;
i, j, k: byte;
flag: boolean;

BEGIN
{вводим 9 чисел и считаем их итоговую сумму}
s:=0;
for i:=1 to n do
begin
write (i,' ->');
readLn (count[i]);
s:=s+count[i]
end;

flag:=false;
i:=0;
{если итоговая сумма оказалась меньше 100, значит выходим}
if s<100
then flag:=true;
{вычитаем из итоговой суммы 2 других элемента, таким образом по завершению в i и j номера лишних элементов}
while (not flag) and (i<=n) do
begin
inc (i);
j:=i;
while (not flag) and (j<=n) do
begin
inc (j);
if (s-count[i]-count[j])=100
then flag:=true
end
end;

if (i=0) or (not flag)
then writeLn ('no variants')
else
begin
for k:=1 to n do
if (k<>i) and (k<>j)
then write (count[k], ' ');
writeLn (' obrazuiyt symmy 100')
end;

END.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 17.03.2007 5:05
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


КМА, а знаешь, что нужно сделать, чтобы работало для всех чисел, а не только для положительных? Как делают скульпторы - отсечь лишнее.. smile.gif
Убери вот эти строки:

{если итоговая сумма оказалась меньше 100, значит выходим}
if s<100


Тут проверка i тоже лишняя:

if (i=0) or (not flag)




--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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