Калкулатор на 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 - сума'); writeln('2 - sub'); writeln('3 - div'); writeln('4 - mul'); readln(операция); операция за регистър на: 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 Прочитате знака След това проверявате с IF/CASE и извършвате съответното действие. И идеално е да въведете пълен пример и вече да анализирате низа на числа и действия.
използва crt; var a,c,x: real; var b: низ; begin clrscr;
writeln('1 число'); readln(a); writeln('Действие'); readln(b); writeln('2 число'); readln(c);
MFA 6 (5300) 1 3 9 10 години
И на други езици има eval, който можете да подадете "a + b" и той ще ви върне отговора :-)
В Pascal ще трябва да използвате case-ohm, за да повторите всички възможни математически функции
JI0JI 6 (16911) 2 10 26 10 години
Някакъв код от Матрицата.
blblblbl 8 (115661) 8 15 115 10 години
nenene not fig at you will not leave. Тук е необходимо да се приложи куп if then или case of. И анализирайте b. Например, ако b='+', тогава x=a+b и b като знак, а не число, направете го. + - * / това не са числа
MiTja (31) 6 (7479) 2 4 14 10г
предложете на потребителя избор от натиснете 1 за + натиснете 2 за - readline(b) и така нататък след това ако b = 1 тогава отговор:=a+b получете темата? Не помня самия синтаксис. учи дълго време
Подобни въпроси
докато (abs(k) > eps) do begin < S := S + (pow(-1, k) / (k*k)); к:= k + 1; >;
Не помня синтаксиса на Pascal, но същността се показва pow - повдигнете число на степен - не съм сигурен дали има такова нещо в Pascal, но може да се реализира с помощта на цикъла for abs - chils модул или абсолютна стойност; ако няма функция, тогава проверяваме за 1 do begin Result := Result * v; дек(v); край; край;
Нагъл посред бял ден ССЪЙЛЛКУУУ ДАДЕ МИ БЪРЗО. погледни в гугъл
Просто не разбирам защо ви трябва това, ако дори не можете да намерите информация в Google? (без да се обиждаш)
И в двата случая делението е на цяло число - защото k:Integer и sqr() изчисляват квадрата на k. По този начин може да изглежда, че деление на нула не може да се случи - защото в основния блок на програмата k започва от 1 и след това само се увеличава в цикъла (с +1 при всяка итерация).
Pascal има своя особеност - всички типове имат максимална стойност. За Integer - диапазонът изглежда е -32768..32767. Ако в даден момент стойността на k е равна на 32767 и към нея се добави още 1, тогава се получава -32768 (т.е. сякаш обратното броене започва от другия край на диапазона). С последващото увеличаване на стойността в цикъла - всеки път с 1 - отрицателните стойности на k нарастват и достигат нула. В този момент се извършва деление на нула.
Най-вероятно условието за прекъсване на цикъла е зададено неправилно и той продължава по-дълго от предвиденото. Трябва да проверите - като изведете всички стойности, както е предложено.
Също така е възможно да изключите "функцията" на Паскал, която превръща 32767 + 1 в -32768. Трябва да зададете някаква специална директива на компилатора (потърсете в Google „аритметично препълване“).