singlepost

Программа на Pascal << На главную или назад  

Здравствуйте, у меня не получается написать программу, которая могла бы считывать с файла два числа и знак, например (3 + 4) и исходя из знака делать арифметические действия.
Что я только не перепробовал, но ничего не получалось…Помогите пожалуйста.

82 ответов в теме “Программа на Pascal”

  1. 15
    Евгений Мельников ответил:

    var
    f:text;
    a,b:integer;
    p1,p2,p3:char;
    begin
    assign(f,'in.txt');
    reset(f);
    read(f,a,p1,p2,p3,b);
    assign(f,'out.txt');
    rewrite(f);
    if p2='+' then
    begin
    writeln(f,a+b);
    end;
    if p2='-' then
    begin
    writeln(f,a-b);
    end;
    if p2='*' then
    begin
    writeln(f,a*b);
    end;
    if p2='/' then
    begin
    writeln(f,a/b);
    end;
    close(f);
    writeln('Htpekmnfn в файле OUT.тхт');
    readln;
    end.

    Код по которому заработала программа.

  2. 14
    Антон Кононов ответил:

    а как же защита от дурака? ;)

  3. 13
    Игорь Федоров ответил:

    to Антон
    ЗЫ кстати, если прочитать READ(x) где x – интегер, то при чтении из файла "56+66" в x будет положено 56, а остальная часть строки потеряется. Так работает чтение из текстового файла в паскале.

    а если их пробелами разделить "56 + 66"то все нормально прочитается integer, char, integer

  4. 12
    Антон Кононов ответил:

    Расул, это ты про типизированные файлы говоришь, а тут речь о текстовом

  5. 11
    Расул Фазлыев ответил:

    Помню, я в программе на Дельфи (консольная была программа) из файла пытался число ввести. Все что получал – непонятное число 8… вместо 16. Оказалось: программа просто брала четыре байта и клала в переменную типа integer (тоже 4 байта). Я забыл про директиву {APP-CONSOLE}. Или что-то вроде этого.

  6. 10
    Евгений Мельников ответил:

    Ооууу…Все сработало!Спасибо большое!

  7. 9
    Антон Кононов ответил:

    так не получится.

    только парсить

    читаем всю строку, ищем знак

    ЗЫ кстати, если прочитать READ(x) где x – интегер, то при чтении из файла "56+66" в x будет положено 56, а остальная часть строки потеряется. Так работает чтение из текстового файла в паскале.

    Например если во входном файле
    45+45 5645/54 324
    то чтение read(f, A,B,C) даст A=45, B=5645, C=324

  8. 8
    Иван Киреев ответил:

    в таком случае тебе нужно подряд считывать read(Ч, С, С, С, Ч), где Ч – число, а С – символ. Про пробелы нельзя забывать – это тоже символы.

  9. 7
    Евгений Мельников ответил:

    Я просто пробовал считывать знак путем символьным CHAR, а числа как INTEGER

  10. 6
    Николай Терентьев ответил:

    #2 правильно сказал. ищи знак. потом от этого знака ищешь слева число и справа. ну а дальше case. Делай)

  11. 5
    Жека Кирпичев ответил:

    Покажи, что именно ты перепробовал. Пока что ниоткуда не следует, что ты перепробовал хоть что-нибудь, кроме "спросить в группе Программисты".

  12. 4
    Игорь Федоров ответил:

    нету нету
    а формат строки заранее определен?

  13. 3
    Мишель Елизаров ответил:

    а на паскале нету ничего типа eval? не помню… давно уже в руки паскаль не брал…

  14. 2
    ответил:

    поправка – лучше пробел ищи

  15. 1
    Иван Киреев ответил:

    Читаешь строку, с помощью pos находишь место знака в строке, разбиваешь её на три строки, ну а дальше case – определяешь знак и пишешь результат

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.