Записать выражение. |
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; {$APPTYPE CONSOLE} uses SysUtils; procedure WriteAllCombinations; const IndStr = '+-*/'; var a, b, c, d, e, f, g, h: Byte; S: String; 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 begin Res := Res + 3; end else begin Res := Res + i + 1; end; '-': if i = 1 then begin Res := Res - 1; end else Res := Res - i - 1; end; if S[1] = ' ' then Result := Res + 1 else Result := Res end; begin S := '12345678'; 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 WriteAllCombinations; WriteLn('With the best regards...'); ReadLn end. будут вопросы спрашивай( Сообщение отредактировано: volvo - |
Текстовая версия | 9.05.2024 7:45 |