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

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

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

> сумма выбранных чисел делилась на N
Tima
сообщение 14.10.2006 12:36
Сообщение #1





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

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


имеется n чисел, написать программу, так чтобы сумма выбранных чисел делилась на n.
например n=6, а выбирать нужно по 2 числа, так чтобы сумма этих двух была равна 6, выдать все возможные комбинации...помогите плз.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 14.10.2006 13:38
Сообщение #2


Гость






Цитата
так чтобы сумма этих двух была равна 6
Ты уж реши для себя, равна или все-таки кратна... А то в первой части задания ты говоришь одно, а во второй - другое...

Здесь:
FAQ: Комбинаторика -> Сочетания
есть программа генерации всех сочетаний (сделай из 6 по 2), и проверяй, соответствуют ли элементы массива с найденными индексами заданному условию...
 К началу страницы 
+ Ответить 
Tima
сообщение 14.10.2006 22:46
Сообщение #3





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

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


помогите сделать проверку на кратность сумму чисел на N...

for i:=0 to m do a[i]:=i; { формируется 1-е сочетание}
repeat
use;
I:=m;

while a[i]=n-m+i do dec(i); {поиск элемента для изменения}
inc(a[i]);

if ( a[i] div n = 0 ) then inc(sum); {я сделал такую проверку правильно ли? если нет то какую нужно?}


for j:=i+1 to m do a[j]:=a[j-1]+1; {изменение правой части сочетания}

then
inc(sum);}

until i=0;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.10.2006 22:48
Сообщение #4


Гость






Надо проверять остаток от деления...
if ( a[i] MOD n = 0 ) then inc(sum);


Причем ты это делаешь совершенно не там, где нужно... Я бы сделал это прямо в процедуре Use (перед выводом результатов):

Var
Data: array[1 .. n] of Integer; { <--- Это - твои N чисел }

procedure use;
var i, s: integer;
begin

s := 0;
for i:=1 to m do s := s + Data[a[ i ]];
if s mod n = 0 then
for i := 1 to m do write(Data[a[ i ]]:4);

end;
 К началу страницы 
+ Ответить 
Tima
сообщение 14.10.2006 22:55
Сообщение #5





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

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


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

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

 



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