Калькулятор на Pascal
Питання вирішено ізакрито.
Найкраща відповідь
KaKTyCC (30) 7 (37668) 10 56 152 10 років
program calc; var operation:byte; a,b:integer; begin writeln('a'); readln(a); writeln( 'b'); readln(b); writeln('1 - sum'); writeln('2 - sub'); writeln('3 - div'); writeln('4 - mul'); readln(operation); case operation of: 1: writeln(a+b); 2: writeln(a-b); 3: writeln(trunc(a/b)); 4: writeln(a*b); end; end.
AndrJuWa (34) 7 (25343) 2 5 16 10 років
Робиш B string Вважаєш символ Потому IFом/CASEом перевіряєш і робиш відповідну дію. А ідеально взагалі введення повного прикладу і вже розпарити рядок на числа та дії.
uses crt; var a,c,x: real; var b: string; begin clrscr;
writeln('1 Число'); readln(a); writeln('Дія'); readln(b); writeln('2 Число'); readln(c);
MFA 6 (5300) 1 3 9 10 років
А в інших мовах є eval, якою можна передати "a+b" і воно поверне тобі відповідь :-)
У паскалі доведеться case-ом перебирати всі можливі математичні функції
JI0JI 6 (16911) 2 10 26 10 років
Якийсь код із Матриці.
blblblbl 8 (115661) 8 15 115 10 років
Нененене не фіга у тебе не вийде. Тут треба купу if then або case of застосовувати. та аналізувати b. Типу, якщо b='+', тоді x=a+b, і b як символ, а чи не число зроби. + - * / це ж не числа
MiTja (31) 6 (7479) 2 4 14 10 років
пропонуй користувачеві на вибір press 1 to + press 2 to - readline(b) і так далі потім if b = 1 then otvet:=a +b тему вловив? сам синтаксис пам'ятаю т.к. вивчав давно
Схожі питання
while (abs(k) eps) do begin < S := S + (pow(-1, k) / (k * k)); k:= k + 1; >;
я не пам'ятаю синтаксис Паскаля, але суть відображена pow - звести число в ступінь - чи не впевнений чи є таке в Паскалі, але можна реалізувати за допомогою for циклу abs - модуль чилса або абсолютне значення; якщо немає ф-ії, то перевірку на 1 do begin Result := Result * v; Dec (v); end; end;
Нахилиш серед білого дня ПОСИЛЛУУУ МЕНІ ДАЛИ ШВИДКО. У гугле дивись
Взагалі не розумію, навіщо тобі це треба, якщо ти навіть інформацію в гугле знайти не можеш? (без образ)
В обох випадках розподіл відбувається на ціле число - тому, що k:Integer, а sqr() обчислює квадрат k. Таким чином, здається, що розподіл на нуль відбуватися не може - тому що в основному блоці програми k починається від 1 і потім тільки збільшується в циклі (на +1 при кожній ітерації).
Паскаль має свою особливість – у всіх типів є максимальне значення. Для Integer - діапазон, здається, -32768..32767. Якщо в якийсь момент значення k дорівнює 32767 і до нього додається ще 1, то виходить -32768 (тобто починається відстче від іншого кінця діапазону). При подальшому збільшенні значення циклі - щоразу на 1 - негативні значення k збільшуються і досягають нуля. У цей момент відбувається розподіл на нуль.
Швидше за все неправильно задано умову переривання циклу і він триває довше, ніж було задумано. Потрібно перевірити – за допомогою виведення всіх значень, як і було запропоновано.
Можливо також відключити "функцію" Паскаля, яка перетворює 32767 + 1 на -32768. Потрібно задати якусь спеціальну директиву компілятору (шукай у кулі за "аритметичний overflow").