Ребят,пожалуйста, помогите решить задачи в среде PASCAL:1) Написать простой калькулятор
Ребят,пожалуйста, помогите решить задачки в среде PASCAL:
1) Написать простенький калькулятор через ввод строки, который на входе получает строчку вида "число1 символ операции число2" (например, "2 + 5" или "3 / 42"), а выводит значение этого выражения.
Числа - любые целые неотрицательные, знаки - +. -. *, /
2) Написать программку, которая на входе получает строчку под кодовым названием "грязное число" (вида "4km-549_ffb)5)6") состоящую из знаков, а на выходе выводит двойное число из изначальной строчки (а именно, 454956*2 = 909912)
Камилла Луконькина
По сути нужно только выделить два числа и символ
Вадим Булок
Может быть заключительное, что я написал либо и самое первое тоже?
Виктория Айгинина
и 1-ое и 2-ое
Полина Игуменева
Приветствую, Для вас неслабое такое задание подкинули...
Oleg Zhovnerchuk
Необыкновенно, если еще и между знаками и числами могут встречаться пробелы в неизвестном количестве
Aleksandra Merkilova
Вот...еще что надобно уточнить - числа в "простом калькуляторе" только целые? И если да, то сколько в их максимум цифр возможно?
Арина Ворникова
да,4
Владик Чербаев
У Вас комменты противоречат заданию. В задании написано, что числа неотрицательные, а в комментах Вы написали, что они могут быть и отрицательными.
Сергей
Я опять уточнил,да они не отрицательные...
Anatolij
Ну теперь поздно.... мой вариант вычисляет любые
2 ответа
Анжелика Ажина
// PascalABC.NET 3.0, сборка 1128
uses
System.Text.RegularExpressions;
begin
var s:=' - 32 / - 21 ';
s:=RegEx.Replace(s,'\s','');
var a:=RegEx.Matches(s,'(-0,1\d+)[\+\-\*/]');
var n:=a.Count;
var x,y:integer;
var c:char;
case n of
3:begin
x:=StrToInt(a[0].ToString); y:=StrToInt(a[2].ToString);
c:=a[1].ToString[1]
end;
2:begin
x:=StrToInt(a[0].ToString); var s1:=a[1].ToString;
c:=s1[1]; s1[1]:='0'; y:=StrToInt(s1)
end;
else
begin Writeln('Недопустимое выражение'); exit end
end;
WriteFormat('0 1 2 = ',x,c,y);
case c of
'+':Writeln(x+y);
'-':Writeln(x-y);
'*':Writeln(x*y);
'/':Writeln(x/y)
end
end.
Тестовое решение:
-32 / -21 = 1.52380952380952
// PascalABC.NET 3.0, сборка 1128
begin
var s:='4km-549_ffb)5)6';
var t:=s.Where(x-gt;x in ['0'..'9']).JoinIntoString('');
var n:int64;
if TryStrToInt64(t,n) then Writeln(2*n)
else Writeln('Не удалось выделить число')
end.
Тестовое решение:
909912
uses
System.Text.RegularExpressions;
begin
var s:=' - 32 / - 21 ';
s:=RegEx.Replace(s,'\s','');
var a:=RegEx.Matches(s,'(-0,1\d+)[\+\-\*/]');
var n:=a.Count;
var x,y:integer;
var c:char;
case n of
3:begin
x:=StrToInt(a[0].ToString); y:=StrToInt(a[2].ToString);
c:=a[1].ToString[1]
end;
2:begin
x:=StrToInt(a[0].ToString); var s1:=a[1].ToString;
c:=s1[1]; s1[1]:='0'; y:=StrToInt(s1)
end;
else
begin Writeln('Недопустимое выражение'); exit end
end;
WriteFormat('0 1 2 = ',x,c,y);
case c of
'+':Writeln(x+y);
'-':Writeln(x-y);
'*':Writeln(x*y);
'/':Writeln(x/y)
end
end.
Тестовое решение:
-32 / -21 = 1.52380952380952
// PascalABC.NET 3.0, сборка 1128
begin
var s:='4km-549_ffb)5)6';
var t:=s.Where(x-gt;x in ['0'..'9']).JoinIntoString('');
var n:int64;
if TryStrToInt64(t,n) then Writeln(2*n)
else Writeln('Не удалось выделить число')
end.
Тестовое решение:
909912
Стефания Михарлевская
а вот это вы что прислали?
Кабанкин
Виктор
А вот это решение Ваших задач на Паскале. Если Вы его не разумеете, это вовсе не значит, что оно неверное. Запустите в указанной версии Паскаля - и увидите сами, что все работает.
Любовь
не работает
Васька Ячевский
four.pas(2, ";" expected but "identifier S" found и four.pas(2,3) Error: Illegal expression
Егор Лиленков
Не работает - означает версия не та. Проверьте для начала в Интернет-среде на официальном веб-сайте: http://pascalabc.net/WDE/:
Dima Al Kurdi
А Вы запускаете, наверно, в этой уродливой допотопной DOS-среде Free Pascal
Сашок Гербут-Гейбович
нет,в джинни
Nina
Это то же самое по сути. В Geany употребляют Фри Паскаль. И глупо это делать пытаться, когда первой же строчкой обозначено, что написано и отлажено в среде PascalABC.NET 3.0
Геннадий Ночный
введите просто 2*5
Fedjushina Jevelina
будет 0 т.к. расчитано что будут пробелы
Валентина
в образце есть пробелы я и для себя их приделал
Димка Абаров
Почему они обязаны ОБЯЗАТЕЛЬНО БЫТЬ?
Вадим Шабас
Откуда это следует?
Porshikov Tema
Я Для вас могу только порекомендовать читать входную строчку и если там "не хватает" пробелов, их всталять принудительно, чтоб Ваш алгоритм не ломался.
Виолетта Зарайченко
Вы правы , ниоткуда . Я лиш поглядел на пример и решил что обязаны быть пробелы.
Арсений
Обычно делают наоборот: если входная строке в образце пробелов не содержит, возможность их возникновения на всякий случай предугадывают. А вот добиваться непременно пробелы указывать, при этом, мрачно где конкретно и в каком количестве - это неправильно.
Олеся Власкова
я сейчас доделаю.
Пимоненкова
Наталья
Да у Вас медли в достатке, сможете не торопиться. Решение 2 часа доступно для правки.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов