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

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

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

 
 Ответить  Открыть новую тему 
> сумма выбранных чисел делилась на N
сообщение
Сообщение #1





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

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


имеется n чисел, написать программу, так чтобы сумма выбранных чисел делилась на n.
например n=6, а выбирать нужно по 2 числа, так чтобы сумма этих двух была равна 6, выдать все возможные комбинации...помогите плз.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

Здесь:
FAQ: Комбинаторика -> Сочетания
есть программа генерации всех сочетаний (сделай из 6 по 2), и проверяй, соответствуют ли элементы массива с найденными индексами заданному условию...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


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

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

 





- Текстовая версия 28.03.2024 19:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name