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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
мисс_граффити
сообщение 16.03.2007 18:03
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


как же мы можем помочь, если ты ничего не делаешь?
написать за тебя - это не помощь!


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bard
сообщение 16.03.2007 21:19
Сообщение #3


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

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

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



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.


Вот кое что есть lol.gif но чего то маленького не хватает... rolleyes.gif


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


Пионер
**

Группа: Пользователи
Сообщений: 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
Сообщение #5


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

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

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


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

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


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

if (i=0) or (not flag)




--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
КМА
сообщение 18.03.2007 1:09
Сообщение #6


Пионер
**

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

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


Да, я это понял...

Я это уже дорешал, но не было сил дописать решение. Спасибо Lapp.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 18.03.2007 11:50
Сообщение #7


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Вот такой вариант еще:

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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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