Записать выражение. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Записать выражение. |
reill |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Записать выражение :
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 Репутация: 0 |
вот держи
как потестишь напишешь... Код 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 - |
Текстовая версия | 9.05.2024 3:25 |