![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
reill |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Репутация: ![]() ![]() ![]() |
Записать выражение :
1 операция 2 операция 3 операция 4 операция 5 операция 6 операция 7 операция 8 операция 9 операция =100, т.е. цифры, от 1 до 9 соединить арифметическими операциями +,-,*,/ так, чтобы результат получился равным 100.Есть восемь вариантов такой записи, например, 1*2+3*4*5-6+7+8-9=100. |
![]() ![]() |
___ALex___ |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
вот держи
как потестишь напишешь... Код program ForForum; uses Crt; procedure WriteAllCombinations; const IndStr: String[4] = '+-*/'; var a, b, c, d, e, f, g, h: Byte; S: String[8]; function Calc(S: String): Real; var i: Byte; Res, PromRes: Real; F, Fl: Boolean; begin Res := 0; i := 1; repeat F := False; Fl := False; while S[i] in ['*', '/'] do begin Fl := True; case S[i] of '*': if not F then begin PromRes := (Sqr(i) + i); if i > 1 then begin if S[i - 1] = '-' then PromRes := -1 * PromRes; S[i - 1] := ' '; end; end else PromRes := PromRes * (i + 1); '/': if not F then begin PromRes := i / (i + 1); if i > 1 then begin if S[i - 1] = '-' then PromRes := -1 * PromRes; S[i - 1] := ' '; end; end else PromRes := PromRes / (i + 1); end; Inc(i); F := True; end; Inc(i); if Fl then Res := Res + PromRes; until i > 8; for i := 1 to 8 do case S[i] of '+': if i = 1 then Res := Res + 3 else Res := Res + i + 1; '-': if i = 1 then Res := Res - 1 else Res := Res - i - 1; end; if S[1] = ' ' then Calc := Res + 1 else Calc := Res end; begin S[0] := #8; for a := 1 to 4 do begin S[1] := IndStr[a]; for b := 1 to 4 do begin S[2] := IndStr[b]; for c := 1 to 4 do begin S[3] := IndStr[c]; for d := 1 to 4 do begin S[4] := IndStr[d]; for e := 1 to 4 do begin S[5] := IndStr[e]; for f := 1 to 4 do begin S[6] := IndStr[f]; for g := 1 to 4 do begin S[7] := IndStr[g]; for h := 1 to 4 do begin S[8] := IndStr[h]; if Calc(S) = 100 then WriteLn(S); end; end; end; end; end; end; end; end; end; begin ClrScr; WriteAllCombinations; WriteLn('With the best regards...'); repeat until KeyPressed end. Сообщение отредактировано: volvo - 17.12.2004 11:52 |
![]() ![]() |
![]() |
Текстовая версия | 30.07.2025 19:27 |