Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

Паскаль. в чем ошибка?   Найти похожие ветки 

 
Troy ©   (2004-02-28 18:04) [0]

Первый вариант:
program calc;
uses crt;
label count;
var a,c,result:real;b:char;
begin
clrscr;
count:
write(">");
read(a);read(b);read(c);
if b="+" then result:=a+c;
if b="-" then result:=a-c;
if b="*" then result:=a*c;
if b="/" then result:=a/c;
writeln ("result =",result:5:5);
goto count;
end.
после ввода символа b writeln"ит result = 0.5002 незаваисимо от переменной a.
Второй вариант:
program calc;
uses crt;
label count;
var a,c,result:real;b:char;
begin
clrscr;
count:
write(">");
read(a);read(b);read(c);
case b of
"+": result:=a+c;
"-": result:=a-c;
"*": result:=a*c;
"/": result:=a/c;
end;
writeln ("result =",result:5:5);
goto count;
end.
то же самое.


 
Palladin ©   (2004-02-28 18:20) [1]

попробуй вместо read readln


 
Gero ©   (2004-02-28 18:30) [2]

> read(a);read(b);read(c);

Ошибка здесь, все остальное правильно. Попробуй ReadKey для Char"a.


 
Sam Stone ©   (2004-02-28 18:42) [3]


> Попробуй ReadKey для Char"a.

readln"а достаточно
Просто после ввода а "проглатывается" ввод b

2Troy
дебаг ;)


 
TButton ©   (2004-02-28 18:45) [4]

интересно. почему проглатывается. вроде бы как read заканчивается с нажатием enter"а...


 
Troy ©   (2004-02-28 20:34) [5]

я думал мож у мя с компилятором беда какая...
ладно сча попробую ридкей


 
Troy ©   (2004-02-28 20:38) [6]

хм. и гдеж этот ReadKey взять?
это в дельфи он наверно есть... мне то паскаль нужен.


 
Troy ©   (2004-02-28 20:40) [7]

вернее ест ьто он есть. как его юзать.


 
Gero ©   (2004-02-28 21:21) [8]

> как его юзать

var C : Char;
C := ReadKey;

Хотя в TP Ctrl + F1 отлично работает...


 
TButton ©   (2004-02-28 22:33) [9]

в Дельфи ридкея нет, ридкей как раз в CRT прописан.


 
Defunct ©   (2004-02-28 22:35) [10]

Не проще сделать синтаксический разбор строки?
или хотя бы посимвольный ввод?


 
TButton ©   (2004-02-28 22:37) [11]

это смотря кто будет делать


 
Troy ©   (2004-02-28 22:43) [12]

эээ. посимвольно не получится...


 
Gero ©   (2004-02-28 23:16) [13]

> Troy ©

Так считывай строку, а потом - Copy, Pos...


 
Troy ©   (2004-02-28 23:48) [14]

хм. как можно на одной консольной строке ввести 3 переменные.
после read(x) курсор вниз спрыгивает... как ему запретить это.


 
Gero ©   (2004-02-29 00:22) [15]

var
C : Char;
S : string;
...
S := "";
repeat
C := Readkey;
if Ord(C) in [32..255] then
S := S + C;
until C = #13;


 
YurikGl ©   (2004-02-29 00:27) [16]

{$A+,B-,D+,E-,F-,G+,I-,L+,N+,O-,P+,Q-,R-,S-,T-,V-,X+,Y+}
{$M 1024,0,655360}
uses Crt;
Type
SC=record
C:Char;
A:Byte;
end;
VAR
Ch:Char;
I1,i2:Integer;
Ekr:Array[1..25,1..80]of SC absolute $B800:$0000;
BEGIN
Textmode(3);
ClrScr;
Ekr[1,2].C:="A";
Ekr[1,2].A:=$12;
For i1:=1 to 25 do
For i2:=1 to 80 do begin
Ekr[i1,i2].C:="a";
Ekr[i1,i2].A:=i1+i2;
end;
Ch:=Readkey;
IF Ch=#0 Then Ch:=Readkey;
END.


 
Германн ©   (2004-02-29 02:09) [17]

Хех, давно не писАл "диалоговые" ДОС программы, но в любом случае в них следовало, что типа:
Writeln("Введите что-то");
Readln(переменная);

Если хочется набрать сразу всю строку, то:
Readln(St);
if Pos(St,...)...
else if Pos(St,...)...
...
Val(Copy(St...,1.Pos(St,...)-1,k);
Val(Copy(St...,Pos(St,...)+1,k);
case St[nn] of
"+" : ...
"-" : ...
"*" : ...
"/" : ...
else
...
end;



Страницы: 1 вся ветка

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
3-43272
Serg33443
2004-02-12 18:49
2004.03.14
InterBase and BDE


1-43623
Dina
2004-01-23 13:34
2004.03.14
На форме надо написать X в квадрате ( Двоечка вверху :) )


14-43895
McSimm
2004-02-19 13:50
2004.03.14
Проблемы и приколы с действительными числами


14-43852
denkop
2004-02-18 22:42
2004.03.14
настройка аутентификации пользователей LAN в XP Pro


4-43973
WdR
2003-12-25 17:31
2004.03.14
Отлов сообщения о перетаскивании колонок в ListView