• XSS.stack #1 – первый литературный журнал от юзеров форума

Полноценый Калькулятор на Pascal

Onyx1050

(L3) cache
Пользователь
Регистрация
03.05.2024
Сообщения
175
Реакции
8
Здравствуйте люди.Такое дело пишу свою прогу на Паскале "Калькулятор" взял исзодник с одного сайта.В чем проблема целые числа он спокойно умножает слаживает вычитает делит все норм вроде бы а вот с плавающими чилами он выдает ошибку хоть дели хоть вычитай без разницы вот пример:

Ведите операнд a: 2
Ведите операнд b: 2.5
Runtime error 106 at $0000000000401151
$0000000000401151
$000000000042319C

Ведите операнд a: 25
Ведите операнд b: 4
Ведите операцию (+, -, *, /,): /
a / b = 6.2500000000000000E+000

как мне по фиксить это в коде чтоб каклькулятор мог работать кроме целых чисел еще и с плавающими без этих ошибок.Пожалуйста подскажите помогите где ошибки в коде где что нужно поправить дописать укажите мне на это.Прошу прощению если беспокою .я сам учусь и хочу уметь писать качевственный код и по этому беру разные задания для себя чтоб уметь работать с кодом а не только по книгам знать его.
Вот исходник Калькулятора:

program calculator;

var

a, b: integer;
op: char;

begin

write('Ведите операнд a: ');
readln(a);

write('Ведите операнд b: ');
readln(b);

write('Ведите операцию (+, -, *, /,): ');
readln(op);

if op = '+' then
writeln('a + b = ', a + b)
else

if op = '-' then
writeln('a - b = ', a - b)
else

if op = '*' then
writeln('a * b = ', a * b)
else

if op = '/' then
writeln('a / b = ', a / b)
else

writeln('Неизвестная операция!')

end.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ты считываешь целые числа из консоли и почему-то ожидаешь, что это будет работать с числами с плавающей точкой.
 
где что нужно поправить дописать укажите мне на это
Поменяй тип переменных a, b с целого integer на вещественный real
 
Здравствуйте люди.Такое дело пишу свою прогу на Паскале "Калькулятор" взял исзодник с одного сайта.В чем проблема целые числа он спокойно умножает слаживает вычитает делит все норм вроде бы а вот с плавающими чилами он выдает ошибку хоть дели хоть вычитай без разницы вот пример:

Ведите операнд a: 2
Ведите операнд b: 2.5
Runtime error 106 at $0000000000401151
$0000000000401151
$000000000042319C

Ведите операнд a: 25
Ведите операнд b: 4
Ведите операцию (+, -, *, /,): /
a / b = 6.2500000000000000E+000

как мне по фиксить это в коде чтоб каклькулятор мог работать кроме целых чисел еще и с плавающими без этих ошибок.Пожалуйста подскажите помогите где ошибки в коде где что нужно поправить дописать укажите мне на это.Прошу прощению если беспокою .я сам учусь и хочу уметь писать качевственный код и по этому беру разные задания для себя чтоб уметь работать с кодом а не только по книгам знать его.
Вот исходник Калькулятора:

program calculator;

var

a, b: integer;
op: char;

begin

write('Ведите операнд a: ');
readln(a);

write('Ведите операнд b: ');
readln(b);

write('Ведите операцию (+, -, *, /,): ');
readln(op);

if op = '+' then
writeln('a + b = ', a + b)
else

if op = '-' then
writeln('a - b = ', a - b)
else

if op = '*' then
writeln('a * b = ', a * b)
else

if op = '/' then
writeln('a / b = ', a / b)
else

writeln('Неизвестная операция!')

end.
Дело в типах переменных, выше правильно подмечено
 
Поменяй тип переменных a, b с целого integer на вещественный real
поменял тип перееменной на real, да работает спасибо. Но еще хотелось чтоб ответ выдавало более точным без нулей как сейчас выдает вот пример:
Ведите операнд a: 10
Ведите операнд b: 5
Ведите операцию (+, -, *, /,): -
a - b = 5.0000000000000000E+000
Как можно сделать чтоб выдавало ответ просто целое число например 5 или 4.5 без этих нулей 0000000000000000E+000
Подскажите пожалуйста как можно это исправить?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
поменял тип перееменной на real, да работает спасибо. Но еще хотелось чтоб ответ выдавало более точным без нулей как сейчас выдает вот пример:
Ведите операнд a: 10
Ведите операнд b: 5
Ведите операцию (+, -, *, /,): -
a - b = 5.0000000000000000E+000
Как можно сделать чтоб выдавало ответ просто целое число например 5 или 4.5 без этих нулей 0000000000000000E+000
Подскажите пожалуйста как можно это исправить?
Код:
program Calculator;
var
  a, b: real;
  op: char;
  result: real;
begin
  write('Введите операнд a: ');
  readln(a);
  write('Введите операнд b: ');
  readln(b);
  write('Введите операцию (+, -, *, /): ');
  readln(op);
 
  case op of
    '+': result := a + b;
    '-': result := a - b;
    '*': result := a * b;
    '/': if b <> 0 then result := a / b else
         begin
           writeln('Ошибка: деление на ноль.');
           exit;
         end;
  else
    writeln('Ошибка: неизвестная операция.');
    exit;
  end;
 
  // Форматированный вывод
  if frac(result) = 0 then
    writeln('Результат: ', trunc(result):0) // Если результат целый, то без дробной части
  else
    writeln('Результат: ', result:0:2); // Округление до 2 знаков после запятой
end.
 
Не уверен про эффективность паскаля, советую поучить спп) или го
Дело не в эфективности.Я изучаю програмирования от самых низов машиного кода и математики до вполне привычного асемблера и си си++ и в материале который мне подкинули здесь на форуме,Спасибо огромное большое ребятам за хороший подгон. Так вот в учебниках где я изучаю и читаю про основы программирования идет первым язык Pascal. Он не идет как основной что только его нужно учить Паскаль наше все нет, он идет как база а потом дальше после него Асембллер си++ и тд. Я мог бы вообще не заморачиватся а просто прочитать это параграф и пройти далее нооо. Хочется и пощупать то что изучаешь хочется и поработать с этим ,зачем учить что то и не попробывавши не пощупав на практике не написавши ни одной програмы.Ради того чтоб заучить как стихотворения я этого не понимаю.Я то что изучаю люблю и на практике попробывать испытывать и т.д.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ура калькулятор допиляный :smile10::D:cool::).
Спасибо огромное всем кто мне помогал и подсказывал в доведении "калькулятора".Очень большое спасибо.
пиши если еще с чем то помочь надо будет) паскаль хоть и стареньикй - зато все с него начинали)
 
О, я почувствовал ностальгию, читая эту ветку, она напомнила мне о ранних и далеких годах программирования на Паскале )) Вот и все, братан! Продолжай в том же духе!
 
пиши если еще с чем то помочь надо будет) паскаль хоть и стареньикй - зато все с него начинали)
Да хорошо спасибо ,если что не понятно буду общаться.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Да хорошо спасибо ,если что не понятно буду общаться.
Попробуй, написать простенькие диалоговые окна на паскале)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Можно будет неплохая идея ,а то я практику ищу себе что можно написать .
Паскаль - очень интересный язык, но к уже утратил свою значимость к сожалению. Если думаешь развиваться и зарабатывать на програмировании, советую - выбрать СПП или чистый С, сейчас сильная нехватка хороший разрабов.
 
Паскаль - очень интересный язык, но к уже утратил свою значимость к сожалению. Если думаешь развиваться и зарабатывать на програмировании, советую - выбрать СПП или чистый С, сейчас сильная нехватка хороший разрабов.
Да я в принципе то и учу Си Си+ просто у меня по книге по си и си++ основы программирования идёт глава про паскаль как базис основа языков программирования,просто читаю сейчас эту главу и паралельно практикуюсь чтоб не как стихотворения заучивать а на практике можно было и пощупать то что и читаешь и изучаешь.А так у меня цели писать полноценно на заказ или свой софт, здесь и ещё много где на си и си++ .И сейчас ещё ребята подогнали литературу по ассемблеру так как есть интерес и низко уровневый код херачить и дизасемблировать его, короче говоря работы хватает.
 
Последнее редактирование:
Паскаль - очень интересный язык, но к уже утратил свою значимость к сожалению. Если думаешь развиваться и зарабатывать на програмировании, советую - выбрать СПП или чистый С, сейчас сильная нехватка хороший разрабов.
Их всегода нехватка толковых программистов потому что это умы а умы всегда в ценне.Грамотных много а реально разбирающихся мало,а те говно курсы по типу скил бокса это полная шляпа развод на бабки,по итогу после тех курсов чуваки пишут то сами не понимают что пишут потому что низнают низов незнают что как работает изнутри на низком уровне.по итогу получается шаблонный говнокод.извините за грубость ноо такава реальность.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх