Просмотр полной версии : Типа калькулятор
Внимание это Turbo pascal:-)
Воть думаю как сделать к примерру в воде 4+4.
Программа понимал + и складовала.
Может быть так
uses crt;
var a,b,c:integer;
begin
write('vedi 4enit>'); readln(a,+,b);
c:=a+b;
writeln('=',c);
end.
?
Подскажите пожалуйста как это реализовать.
Может быть не правильно мысль оформил ?))
uses crt;
var a,b,c:integer;
begin
write('a='); readln(a);
write('b='); readln(b);
c:=a+b;
writeln('c=',c);
readln;
end.
в целом все правильно. можно покрасивее:
program calc;
uses crt;
var a,b,c:integer;
d:char; // (1)
begin
write('введите первое число');
readln(a);
write('введите второе число');
readln(b);
write('введите операцию');
readln(d);
c:=a StrToChar(d) b; // по поводу StrToChar() не уверен, но думаю, что-то похожее сделать можно
writeln(a,d,b,'=',c);
end.
NetMan, я так понял, что ему калькулятор нужен, а не только сложение))
uses crt;
var a,b,c:integer;
begin
write('a='); readln(a);
write('b='); readln(b);
c:=a+b;
writeln('c=',c);
readln;
end.
Не netman это не то.
Надо при вводе 4+4 программа сочитала и вывила ответ 4+4=8.
var
a,b,c:real;
action:char;
begin
write('a='); readln(a);
write('b='); readln(b);
write('action='); readln(action);
case action of
'+':c:=a+b;
'-':c:=a-b;
'/':c:=a/b;
'*':c:=a*b;
end;
writeln(a:1:3,action,b:1:3,'=',c:1:3);
readln;
end.
Exile1985
20.06.2007, 14:55
uses crt;
var a,b,c:integer;
begin
write('vedi 4enit>'); readln(a,+,b);
c:=a+b;
writeln('=',c); // а тут должно быть так: writeln('= 4enit');
end.
круто, молодца развеселил, поржал отдуши :D
Если серьезно то нужно так:
uses crt;
var a,b,c:integer;
begin
write('Vvedite 4+4'); readln;
a:=4;
b:=4;
c:=a+b;
writeln('c=',c);
readln;
end.
:D :D
Exile1985
20.06.2007, 15:18
Не netman это не то.
Надо при вводе 4+4 программа сочитала и вывила ответ 4+4=8.
ну а если вообще серьезно то вот:
uses
SysUtils;
var
b,c,r,y:integer;
a:string;
begin
write('4to xotite slozhit?');
readln(a);
y:=Length(a);
b:=strtoint(copy(a,pos('+',a)+1,y));
c:=strtoint(copy(a,1,pos('+',a)-1));
r:=c+b;
writeln('Otvet=',r);
readln;
end.
как заказывали, если ввести 4+4 одной строкой то выдаст ответ.
круто, молодца развеселил, поржал отдуши :D
Если серьезно то нужно так:
uses crt;
var a,b,c:integer;
begin
write('Vvedite 4+4'); readln;
a:=4;
b:=4;
c:=a+b;
writeln('c=',c);
readln;
end.
:D :D
То что ты мне накалякал я могу сделать ^_^ Но ты меня наверноене понил что надо к примеру чел вводит. x+y жмет ентер ему выходит экран решение в таком формате x+y=n
Exile1985
20.06.2007, 15:24
То что ты мне накалякал я могу сделать ^_^ Но ты меня наверноене понил что надо к примеру чел вводит. x+y жмет ентер ему выходит экран решение в таком формате x+y=n
ну ты следующий пост посмотри :D :D
а вообще спасибо, настроение офигенно поднял :D
особенно этим:
То что ты мне накалякал
:D :D
ну ты следующий пост посмотри :D :D
а вообще спасибо, настроение офигенно поднял :D
особенно этим:
:D :D
Рад старатся ))))
Твой вариант не работает (
uses
SysUtils;
var
b,c,r,y:integer;
a:string;
begin
write('4to xotite slozhit?');
readln(a);
y:=Length(a);
b:=strtoint(copy(a,pos('+',a)+1,y));
c:=strtoint(copy(a,1,pos('+',a)-1));
r:=c+b;
writeln('Otvet=',r);
readln;
end.
пишет типа отсутвует файл SysUtils.TPU
Exile1985
20.06.2007, 15:31
Рад старатся ))))
Твой вариант не работает (
пишет типа отсутвует библиотека SysUtils.
ааа чел, тода сори, попробуй за место SysUtils поставить другой модуль свой crt, я на делфе писал, все пашет замечательно, можно воодить не только 4+4 но вообще любые числа т.е. и 44 и 6532+5563 ей вообще пофиг, а так все работает сам проверял
Я же дал новый рабочий код!
uses crt;
var
a,b,c:real;
action:char;
begin
write('a='); readln(a);
write('b='); readln(b);
write('action='); readln(action);
case action of
'+':c:=a+b;
'-':c:=a-b;
'/':c:=a/b;
'*':c:=a*b;
end;
writeln(a:1:3,action,b:1:3,'=',c:1:3);
readln;
end.
Exile1985
20.06.2007, 15:54
Я же дал новый рабочий код!
uses crt;
var
a,b,c:real;
action:char;
begin
write('a='); readln(a);
write('b='); readln(b);
write('action='); readln(action);
case action of
'+':c:=a+b;
'-':c:=a-b;
'/':c:=a/b;
'*':c:=a*b;
end;
writeln(a:1:3,action,b:1:3,'=',c:1:3);
readln;
end.
да нет чел, в твоем коде получается так:
a= //вводим первое число
b= //вводим второе число
жмем Enter и получаем
c:= //ответ
а нужно так
a:= 4+4 //т.е. вводим не по одному числу, а сразу все вместе с знаком +,-,/,*, все одной строкой, чтоб получилосьтак
a:= 25+26
жмем Enter получаем
c:=51
Exile1985 в выражении могут присутствовать скобки?
Exile1985
20.06.2007, 15:59
Exile1985 в выражении могут присутствовать скобки?
честно сказать не понял вопроса.
стесняюсь спросить, эт ты щас про что спросил? :D
Такое может быть (2+2)/4 ? Или у тебя только сложение и только 2 операнда? :d
Ну тогда вот так:
uses crt;
var s:string;
a,b,c,posit:integer;
function Str2Int(Str:String):Integer;
var Res,code:integer;
begin
val(Str,Res,code);
Str2Int:=Res;
end;
begin
read(s);
posit:=pos('+',s);
a:=Str2Int(copy(s,1,posit-1));
b:=Str2Int(copy(s,posit+1,length(s)-posit+1));
c:=a+b;
write('=',c);
readln;
end.
Спасибо netman. Все пашет!
Вот мой способ
uses crt;
var
a,b,s,c:integer;
begin
write('>'); readln(a,c,b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
Почему он не работает ?
Exile1985
20.06.2007, 17:10
Ну тогда вот так:
uses crt;
var s:string;
a,b,c,posit:integer;
function Str2Int(Str:String):Integer;
var Res,code:integer;
begin
val(Str,Res,code);
Str2Int:=Res;
end;
begin
read(s);
posit:=pos('+',s);
a:=Str2Int(copy(s,1,posit-1));
b:=Str2Int(copy(s,posit+1,length(s)-posit+1));
c:=a+b;
write('=',c);
readln;
end.
:)) ну задача стояла насколько я помню чтоб сложить введенное одной строкой: 4+4 и выдать ответ, я эт и сделал, а про другое разгавора небыло :D
да это и не так и сложно сделать.
Просто тем способом каторый netman написал.... Я не проходил ))) Т.е. не учили )))
Вот мой способ
Почему он не работает ?
program pas;
uses crt;
var
a,b,s:integer;
c:char;
begin
write('>'); readln(a,c,b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
переменная, в которой может быть '+' должна быть типа char. еще было бы неплохо указать, что сложение вводить надо с пробелами (например, написать пример :) ). но ваще можно и так написать:
writeln('>');
writeln('4+4=8'); или writeln('FATAL ERROR!');
program pas;
uses crt;
var
a,b,s:integer;
c:char;
begin
write('>'); readln(a,c,b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
переменная, в которой может быть '+' должна быть типа char. еще было бы неплохо указать, что сложение вводить надо с пробелами (например, написать пример :) ). но ваще можно и так написать:
writeln('>');
writeln('4+4=8'); или writeln('FATAL ERROR!');
Твой код тоже не работает изначально твой код был похож на мой кроме названия ячек хз почему я решил в integer запихнуть ячейку c.... щас не об этом при тесте программы ..... пишет типа invalid
Exile1985
20.06.2007, 17:57
Просто тем способом каторый netman написал.... Я не проходил ))) Т.е. не учили )))
в чистом паскале я не особо но насколько я заню проще было бы сделать так:
var s:string;
a,b,c,posit:integer;
begin
read(s);
posit:=pos('+',s);
a:=val(copy(s,1,posit-1));
b:=val(copy(s,posit+1,Length(s)));
c:=a+b;
write('=',c);
readln;
end.
val - преобразует строку вчисло
copy - копирует заданную часть строки, формат записи такой copy(строка из которой копируем, символ с которого начинаем копировать, символ по который копируем)
но у NetMen ошибка в коде, в этой строке:
b:=Str2Int(copy(s,posit+1,length(s)-posit+1));
а именно тут length(s)-posit+1 он от общей длинны строки отнимает высчитанную позицию знака +, это не верно а вдруг будет такая запись 15+4
тогда получится 4-3 т.е. такая запись b:=Str2Int(copy(s,posit+1,1);
где 4 - длинна строки, а 3 - позиция знака +.
провильно буит так: b:=Str2Int(copy(s,posit+1,Length(s)));
Твой код тоже не работает изначально твой код был похож на мой кроме названия ячек хз почему я решил в integer запихнуть ячейку c.... щас не об этом при тесте программы ..... пишет типа invalid
у меня работает о0
Exile1985 LOL! RTFM about Copy function.
Delphi syntax:
function Copy(S; Index, Count: Integer): string;
Спасибо всем ребят разобрался я сам.
Воть как должно быть !
только обезательно надо ставить пробелы после каждего символа к примеру 4 + 4 воть
program pas;
uses crt;
var
a,b,s:integer;
c, ch:char;
begin
write('>');
read(a);
read(ch, c);
readln(ch, b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
ты в последнем коде чето намудрил. много лишнего=\
2piflit Помоймо он как раз работает а твой не компилит одни ошибки .... воть .... попробуй.
гг а у меня твой не пашет=) ты чем компилишь?) у меня Pascal ABC
Я же программирую в turbo pascal. ))) Воть и вся разница. В начале топика я предупредил.
Exile1985
20.06.2007, 22:45
Exile1985 LOL! RTFM about Copy function.
Delphi syntax:
function Copy(S; Index, Count: Integer): string;
мда, натупил чет я :)
=)
Я так и не понил к чему этот смайлик ))) Попробуй скачай турбо паскаль весит 1 мб и скомпиль свой код
ггг посмотрим что выйдет :D
Я так и не понил к чему этот смайлик ))) Попробуй скачай турбо паскаль весит 1 мб и скомпиль свой код
ггг посмотрим что выйдет :D
мы в школе год кодили на TP7. этот синий экран меня уже достал=\ терь кодю на дельфях. чего и тебе желаю))
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot