Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Программа ввода

Автор: Танюшонка 15.06.2007 18:20

Здравствуйте! мне очень нужна ваша компетентная помощь!
Мне над написать программку, которая может решать простые уравнения типа 5Х+10, которые бы вводил пользователь. Как бы мне это сделать?
Пользователь вводит уравнение. Через readln я получаю стринг. Как мне его теперь разделить на отдельные символы, чтобы проверить это цифра или буква.
Мне в понедельник её сдавать, помогите мне, очень прошу! Буду примного благодарна!

Автор: volvo 15.06.2007 21:28

Цитата
написать программку, которая может решать простые уравнения типа 5Х+10, которые бы вводил пользователь
Ты видишь здесь уравнение? Я - нет... Уравнение - это что-то со знаком равенства...

Определи, кстати, насколько простым может быть уравнение, и какие арифметические операции надо будет уметь обрабатывать...

Автор: Танюшонка 15.06.2007 22:14

Ну скажем функция а не уравнение. Потом я за Х вставлю значения. Должно быть простое с одной переменной. типа 2Х+3 или 4Х-7.

Автор: volvo 15.06.2007 22:36

То есть, ты хочешь нечто вроде этого:

function eval(X: real; s: string): real;
var
p, err: integer;
st: string;
f: real;
begin
p := pos('X', s);
delete(s, p, 1);
str(X:0:3, st);
insert(st, s, p);
val(calc(s), f, err);
eval := f;
end;


begin
{ В строке обязательно вводить знак умножения, и буква X должна быть большой... }
write('f(x) = '); readln(s); { Тестировалось на строке 10*X+30 }
writeln(eval(12.45, s) :10 :5);
end.

(функция Calc приведена вот тут:
http://forum.pascal.net.ru/index.php?s=&showtopic=4694&view=findpost&p=40351 ) ?

Автор: Танюшонка 17.06.2007 5:22

Сделала вот так. Не обращайте внимание, что переменные по немецки. Что вы об этом думаете?


Код
program funktionsgraf;
    uses crt;
    var str, symbol1, symbol2,wertstr1, wertstr2    :string;
        position, wert, wert1, wert2, fehler, x, y  :integer;
        zeichen : char;


    BEGIN
    TextColor(Black);
    clrscr;
    writeln('Geben sie die Funtion f(x) ein');
    readln(str);
    position:=0;
    wertstr1 := '';
    wertstr2 := '';
    wert := 0;
    repeat
       begin
         wert1 := wert;
         position:=position+1;
         symbol1:=copy(str,position,1);
         wertstr1:=wertstr1+symbol1;
         val(wertstr1,wert, fehler);
        end;
    until
       fehler<>0;

    writeln(wert1);                {WEG}

    position:=position+1;
    zeichen:=str[position];
    wert := 0;

    repeat
       begin
         position:=position+1;
         symbol2:=copy(str,position,1);
         wertstr2:=wertstr2+symbol2;
         val(wertstr2,wert,fehler);
         wert2 := wert;
       end;
    until
       ((fehler<>0) or (position = length(str)));

       writeln(wert2);                   {WEG}

    writeln(' x     f(x)');

    for x:=1 to 10 do
      begin
        case zeichen of

        '+' :
        begin
            y:=wert1*x+wert2;
            {writeln(' ',x,'     ',y)}
            Punkt(x,wert1*x+wert2);
        end;

        '-' :

            begin
                  y:=wert1*x-wert2;
                  {writeln(' ',x,'     ',y)}
           Punkt(x,wert1*x+wert2);
            end

        else writeln('Fehler!');
      end;  {  case  }
      end;  {  for  }
      readkey;
END.

Автор: мисс_граффити 17.06.2007 7:47

dry.gif а перевести никак нельзя?
лично я не могу общаться с программой, не понимая, что она мне говорит...
а форум у нас вроде как русскоязычный. вот тебе приятно было бы, если бы я написала ответ, скажем, на китайском? и в конце - извини, что на китайском... не обращай внимания.

Автор: Танюшонка 20.06.2007 1:56

Извините, я сейчас перквкеду. Ещё вопрос, как в TP вводить степень? Просто 2^2 не работает, посмотрела в инете, а там что-то ничего простого нету. Не ужто TP не умеет просто степени считать.

Автор: volvo 20.06.2007 2:21

Цитата
Ещё вопрос, как в TP вводить степень?
Вот так:
http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=38227