Другие языки программирования и технологии
PASCAL!!!
Написать программу - калькулятор для 4-х математических действий: сложение, вычитание, деление, умножение. И НАДО БЫ СДЕЛАТЬ ЧЕРЕЗ "CASE"!
1 фото — результат работы
2 фото — кусок кода с оператором case


2 фото — кусок кода с оператором case


примени эту программу к своей задаче
Program lab;
Uses crt;
Var
k: integer;
begin
clrscr;
write('Ввести номер месяца --> '); readln(k);
case k of
1:writeln(' январь');
2:writeln(' февраль');
3:writeln(' март');
4:writeln(' апрель');
5:writeln(' май');
6:writeln(' июнь');
7:writeln(' июль');
8:writeln(' август');
9:writeln('сентябрь ');
10:writeln(' октябрь');
11:writeln(' ноябрь');
12:writeln(' декабрь');
else writeln('нет такого месяца');
end;
end.
Program lab;
Uses crt;
Var
k: integer;
begin
clrscr;
write('Ввести номер месяца --> '); readln(k);
case k of
1:writeln(' январь');
2:writeln(' февраль');
3:writeln(' март');
4:writeln(' апрель');
5:writeln(' май');
6:writeln(' июнь');
7:writeln(' июль');
8:writeln(' август');
9:writeln('сентябрь ');
10:writeln(' октябрь');
11:writeln(' ноябрь');
12:writeln(' декабрь');
else writeln('нет такого месяца');
end;
end.
Ну, и до кучи, вот - целочисленный. Масса операторов case. Правда, мэйлру, как всегда, все отступы превратил в винегрет, но при желании можно разобраться:
PROGRAM calculator;
USES Crt;
CONST
STATE_FIRST_OPERAND_SIGN = 0;
STATE_FIRST_OPERAND = 1;
STATE_OPERATION = 2;
STATE_LASTOPERAND = 3;
OPERATION_PLUS = 0;
OPERATION_MINUS = 1;
OPERATION_MULTIPLY = 2;
OPERATION_DIVIDE = 3;
FUNCTION ProcessKey(var Operand :Integer; k :Char) :Boolean;
VAR Result :Boolean;
BEGIN
Result := False;
CASE k OF
'0' : Operand := Operand * 10;
'1' : Operand := Operand * 10 + 1;
'2' : Operand := Operand * 10 + 2;
'3' : Operand := Operand * 10 + 3;
'4' : Operand := Operand * 10 + 4;
'5' : Operand := Operand * 10 + 5;
'6' : Operand := Operand * 10 + 6;
'7' : Operand := Operand * 10 + 7;
'8' : Operand := Operand * 10 + 8;
'9' : Operand := Operand * 10 + 9;
ELSE
IF k in ['+', '-', '*', '/', '='] THEN Result := True;
END;
IF k in ['0'..'9'] THEN Write(k);
ProcessKey := Result;
END;
VAR
k :Char;
State :Integer;
FirstOperandSign,
FirstOperand,
Operation,
LastOperand :Integer;
BEGIN
k := ' ';
WriteLn('Крутой калькулятор (q - выход) '#13#10'------------');
Write('Введите выражение: ');
State := STATE_FIRST_OPERAND_SIGN;
REPEAT
REPEAT
k := ReadKey();
UNTIL k in ['0'..'9', '+', '-', '*', '/', '=', 'q'];
IF State = STATE_FIRST_OPERAND_SIGN THEN
BEGIN
FirstOperandSign := 1;
CASE k OF
'-' :
BEGIN
FirstOperandSign := -1;
Write(k);
k := #0;
END;
'+' :
BEGIN
FirstOperandSign := 1;
Write(k);
k := #0;
END;
END;
State := STATE_FIRST_OPERAND;
FirstOperand := 0;
Operation := -1;
LastOperand := 0;
END;
IF State = STATE_FIRST_OPERAND THEN
BEGIN
IF ProcessKey(FirstOperand, k) THEN State := STATE_OPERATION;
END;
IF State = STATE_OPERATION THEN
BEGIN
CASE k OF
'+' : Operation := OPERATION_PLUS;
'-' : Operation := OPERATION_MINUS;
'*' : Operation := OPERATION_MULTIPLY;
'/' : Operation := OPERATION_DIVIDE;
END;
IF k in ['+', '-', '*', '/'] THEN
BEGIN
State := STATE_LASTOPERAND;
Write(k);
k := #0;
END;
END;
IF State = STATE_LASTOPERAND THEN
BEGIN
ProcessKey(LastOperand, k);
IF k = '=' THEN
BEGIN
Write(k);
CASE Operation OF
OPERATION_PLUS : Write(FirstOperandSign * FirstOperand + LastOperand);
OPERATION_MINUS : Write(FirstOperandSign * FirstOperand - LastOperand);
OPERATION_MULTIPLY : Write(FirstOperandSign * FirstOperand * LastOperand);
OPERATION_DIVIDE :
BEGIN
IF (LastOperand = 0) THEN
Write('Идите в жопу')
ELSE
Write(FirstOperandSign * FirstOperand / LastOperand);
END;
END;
State := STATE_FIRST_OPERAND_SIGN;
Write(#13#10'Введите выражение: ');
END;
END;
UNTIL k = 'q';
END.
PROGRAM calculator;
USES Crt;
CONST
STATE_FIRST_OPERAND_SIGN = 0;
STATE_FIRST_OPERAND = 1;
STATE_OPERATION = 2;
STATE_LASTOPERAND = 3;
OPERATION_PLUS = 0;
OPERATION_MINUS = 1;
OPERATION_MULTIPLY = 2;
OPERATION_DIVIDE = 3;
FUNCTION ProcessKey(var Operand :Integer; k :Char) :Boolean;
VAR Result :Boolean;
BEGIN
Result := False;
CASE k OF
'0' : Operand := Operand * 10;
'1' : Operand := Operand * 10 + 1;
'2' : Operand := Operand * 10 + 2;
'3' : Operand := Operand * 10 + 3;
'4' : Operand := Operand * 10 + 4;
'5' : Operand := Operand * 10 + 5;
'6' : Operand := Operand * 10 + 6;
'7' : Operand := Operand * 10 + 7;
'8' : Operand := Operand * 10 + 8;
'9' : Operand := Operand * 10 + 9;
ELSE
IF k in ['+', '-', '*', '/', '='] THEN Result := True;
END;
IF k in ['0'..'9'] THEN Write(k);
ProcessKey := Result;
END;
VAR
k :Char;
State :Integer;
FirstOperandSign,
FirstOperand,
Operation,
LastOperand :Integer;
BEGIN
k := ' ';
WriteLn('Крутой калькулятор (q - выход) '#13#10'------------');
Write('Введите выражение: ');
State := STATE_FIRST_OPERAND_SIGN;
REPEAT
REPEAT
k := ReadKey();
UNTIL k in ['0'..'9', '+', '-', '*', '/', '=', 'q'];
IF State = STATE_FIRST_OPERAND_SIGN THEN
BEGIN
FirstOperandSign := 1;
CASE k OF
'-' :
BEGIN
FirstOperandSign := -1;
Write(k);
k := #0;
END;
'+' :
BEGIN
FirstOperandSign := 1;
Write(k);
k := #0;
END;
END;
State := STATE_FIRST_OPERAND;
FirstOperand := 0;
Operation := -1;
LastOperand := 0;
END;
IF State = STATE_FIRST_OPERAND THEN
BEGIN
IF ProcessKey(FirstOperand, k) THEN State := STATE_OPERATION;
END;
IF State = STATE_OPERATION THEN
BEGIN
CASE k OF
'+' : Operation := OPERATION_PLUS;
'-' : Operation := OPERATION_MINUS;
'*' : Operation := OPERATION_MULTIPLY;
'/' : Operation := OPERATION_DIVIDE;
END;
IF k in ['+', '-', '*', '/'] THEN
BEGIN
State := STATE_LASTOPERAND;
Write(k);
k := #0;
END;
END;
IF State = STATE_LASTOPERAND THEN
BEGIN
ProcessKey(LastOperand, k);
IF k = '=' THEN
BEGIN
Write(k);
CASE Operation OF
OPERATION_PLUS : Write(FirstOperandSign * FirstOperand + LastOperand);
OPERATION_MINUS : Write(FirstOperandSign * FirstOperand - LastOperand);
OPERATION_MULTIPLY : Write(FirstOperandSign * FirstOperand * LastOperand);
OPERATION_DIVIDE :
BEGIN
IF (LastOperand = 0) THEN
Write('Идите в жопу')
ELSE
Write(FirstOperandSign * FirstOperand / LastOperand);
END;
END;
State := STATE_FIRST_OPERAND_SIGN;
Write(#13#10'Введите выражение: ');
END;
END;
UNTIL k = 'q';
END.
Похожие вопросы
- pascal or delphi
- Один вопрос по Pascal (или Object Pascal, или Delphi) (не надо ничего решать, просто один вопрос)
- Зачем изучают Pascal если есть Python?
- Программисты Python, Pascal или Scheme для обучения программированию?
- Язык программирования Pascal сложен в изучении?
- Стоит ли параллельно школьной программе изучать другой язык программирования? Или углубляться в школьный Pascal?
- Pascal
- добрый день подскажите пожалуйста программисты есть отличия между turbo и object Pascal я знаю что object pascal
- народ помогите пожалуйста) надо сделать прогу на pascal)
- Помогите разобраться, Pascal!