IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> в пример надо подставить знаки + - * и все обратным методом, у меня неполучилось чтобы знаки менялись
maksimla
сообщение 27.12.2009 16:37
Сообщение #1


Знаток
****

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

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


a b c d e=r (здесь 0<a,b,c,d,e,r=<100) вместо пробелов надо подставить знаки операций +,-,* скобок нету поэтому все решение идет по приоритету сперва * а потом все остальное .
задание напишите функцию которая подобрала знаки операции чтобы пример былбы правильный, если можно пару вариантов то достаточно найти один вариант, а если ненашли нечего то тогда результат (невозможно).
алгоритм долженбыть описан в функции которая запись

function sprendimas(a, b, c, d, e, r: integer): string;


начальные данные
a = 1
b = 2
c = 3
d = 4
e = 5
r = 27
результат
1+2*3+4*5=27

все так ясно понятно но я столкнулся с проблемами
немогу цифру в формат string зделать точнене незнаю как сделать и потом чтобы тип данных k:char;
k:='+';
чтобы записать как простой плюс 5k6=11


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.12.2009 17:39
Сообщение #2


Гость






Ну вот тут же было практически то же самое: операции со знаками
Цитата
немогу цифру в формат string зделать точнене незнаю как сделать и потом чтобы тип данных k:char;
k:='+';
чтобы записать как простой плюс 5k6=11
blink.gif Ничего не понял, но по-моему, то, что ты хочешь сделать не получится, Паскаль все-таки компилятор, а не интерпретатор. Придется делать по-другому. Меня сейчас больше интересует, чем то решение, которое было приведено по ссылке (для тебя же, заметь) тебе не подходит?
 К началу страницы 
+ Ответить 
andriano
сообщение 27.12.2009 17:47
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Число переводится в строку процедурой str.
Дальше - тоже не понял, что тебе нужно.

Если мои телепатические способности восстановились, то, вероятно:
const op : string = '+-*/';
...
writeln(a,op[k],b,'=',r);
Здесь операциям приписаны коды:
+ 1
- 2
* 3
/ 4

Сообщение отредактировано: andriano - 27.12.2009 17:47
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 28.12.2009 14:21
Сообщение #4


Знаток
****

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

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


а да точно а я и забыл о том задании уже чего то.
а как сделать это все обратным методом?
program Bevarde0;
var a, b, c, d, e, r:integer;

function sprendimas(a, b, c, d, e, r: integer): string;
const
nPar=5;
nOper=3;
Opers: array[0..nOper-1]of string=('+','-','*');

var
Par,Par0: array[0..nPar-1]of Integer;
Oper,Oper0: array[0..nPar]of integer;
r0,t,i,m: Integer;
s:string;

begin
Par0[0] := a;
Par0[1] := b;
Par0[2] := c;
Par0[3] := d;
Par0[4] := e;
r0:=r;
for i:=0 to nPar do Oper0[i]:=0;
repeat
Par:=Par0;
Oper:=Oper0;

for i:=1 to nPar-1 do case Oper[i] of
2: begin
Par[i]:=Par[i-1] * Par[i];
Par[i-1]:=0;
Oper[i]:=Oper[i-1]
end;
end;
r:=Par[0];
for i:=1 to nPar-1 do case Oper[i] of
0: r:=r+Par[i];
1: r:=r-Par[i]
end;
if r=r0 then begin
str(Par0[0],s);
sprendimas:=s;
for i:=1 to nPar-1 do begin sprendimas:=sprendimas+Opers[Oper0[i]]; str(Par0[i],s); sprendimas:=sprendimas+s; end;
str(r,s);
sprendimas:=sprendimas+'='+s;
end;
t:=1;
for i:=1 to nPar do begin
t:=Oper0[i]+t;
Oper0[i]:=t mod nOper;
t:=t div nOper;
end
until Oper0[nPar]=1;
if sprendimas='' then sprendimas:='nevozmozen';
end;



begin
WriteLn('v vedite 5 cisel i potom otvet po vasemu primeru');
write('1 cislo = ');
Readln(a);
write('2 cislo = ');
Readln(b);
write('3 cislo = ');
Readln©;
write('4 cislo = ');
Readln(d);
write('5 cislo = ');
Readln(e);
write('i skolko polucitse po vasemu primeru = ');
Readln®;
writeln('vot rezultal');
writeln(sprendimas(a, b, c, d, e, r));
readln;
end.

я чегото некак непредумал


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 29.12.2009 10:46
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Ты все-таки напиши условие задачи, ибо по неправильно написанной программе можно лишь установить, что она делает, но никак не что она далала бы, если бы была написана правильно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 29.12.2009 12:08
Сообщение #6


Знаток
****

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

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


эта все задачка вводим чисел 5 и одно число это ответ и мы должны найти знаки + - и * чтобы подставить между 5 числами эта программка работает правильно но надо обратным методом написать( возвратным методом может так)
это метод когда идешь в перед и попал в тупик неправильное решение то тогда возвращаешься на один шаг назад и идешь дальше


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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