

из заданных 9 чисел нужно найти 7 из них сумма которых равна 100
Спасибо за ранее...

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Bard |
![]() ![]()
Сообщение
#1
|
![]() Учиться, учиться еще раз учиться ![]() ![]() ![]() Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
Срочно
![]() ![]() из заданных 9 чисел нужно найти 7 из них сумма которых равна 100 Спасибо за ранее... ![]() -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
как же мы можем помочь, если ты ничего не делаешь?
написать за тебя - это не помощь! -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Bard |
![]()
Сообщение
#3
|
![]() Учиться, учиться еще раз учиться ![]() ![]() ![]() Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
var
ar : array[1..9] of integer;
i, j, k, sum : integer;
begin
sum := 0;
for i := 1 to 9 do
begin
readln( ar[i] );
sum := sum + ar[i];
end;
for i := 1 to 9 do
for j := i+1 to 9 do
if sum -(ar[i] + ar[j]) = 100 then
for k := 1 to 9 do
writeln( аr[k] );
end.
Вот кое что есть ![]() ![]() -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
КМА |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот то что получилось у меня, пока только для положительных чисел, по сути доработка твоей идеи.
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.
|
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
КМА, а знаешь, что нужно сделать, чтобы работало для всех чисел, а не только для положительных? Как делают скульпторы - отсечь лишнее..
![]() Убери вот эти строки:
{если итоговая сумма оказалась меньше 100, значит выходим}
if s<100
Тут проверка i тоже лишняя:
if (i=0) or (not flag)
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
КМА |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 69 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да, я это понял...
Я это уже дорешал, но не было сил дописать решение. Спасибо Lapp. |
klem4 |
![]()
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вот такой вариант еще:
const
n = 9;
type
TArray = array [1..n] of Integer;
function Sum(const arr: TArray; const a, b: Integer): Integer;
var
i, s: Integer;
begin
i := 1; s := 0;
while (i <= n) and (s <= 100) do begin
if (i <> a) and (i <> b) then inc(s, arr[i]);
inc(i);
end;
Sum := s;
end;
var
x: TArray = (25, 10, 25, 29, 1, 98, 5, 5, 56);
a, b: Integer;
flag: Boolean;
begin
a := 1; flag := false;
while (a <= n - 1) and not(flag) do begin
b := a + 1;
while (b <= n) and not(flag) do begin
flag := Sum(x, a, b) = 100;
if not(flag) then inc(b);
end;
if not(flag) then inc(a);
end;
if a <= n - 1 then writeln('Все числа, кроме ', x[a], ' и ', x[b])
else writeln('Решения нет');
end.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 12.04.2025 11:34 |