Помощь - Поиск - Пользователи - Календарь
Полная версия: Inputshortint
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
StrongS@t
Hi! People!
Вот имеем прогу(ниже).
Почему в этой части этой проги:
-----------------------------------------
 str[0]:=chr(3);
val(ch+str,t,prosto);
if ((t*10+k)<129)and((t*10+k)>-128 ) then

переменная t не получает никакого значения , что приводит к не выполнению
следущего блока if .. then..
Зарание благодарен.
==========================
program InputShortint;
uses crt;
var k,j,prosto,t:integer;
ch:char;
str:string;
s:shortint;
begin
clrscr;
j:=0;
str:='';
k:=ord(readkey);
if (k=45)or((k>=48)and(k<=57)) then ch:='-' else
begin
inc(j);
str[j]:=chr(k);
write(str[j]);
end;
repeat
k:=ord(readkey);
if ((k>=48)and(k<=57)) then
begin

inc(j);
if j<>3 then
begin
str[j]:=chr(k);
write(str[j]);
end;
if j=3 then
begin
str[0]:=chr(3);
val(ch+str,t,prosto);
if ((t*10+k)<129)and((t*10+k)>-128 ) then
begin
str[j]:=chr(k);
write(str[j]);
end
else writeln('Fuck it all');
end;
end;
until (j=3)or(k=13);
str[0]:=chr(3);
val(ch+str,S,prosto);
writeln;
writeln(s);
readln;
end.

=======================
"Наш путь труден, но
перспективы - светлые !"
Мао Цзедун
volvo
Цитата(StrongS@t @ 20.05.05 15:56)
Почему ... переменная  t не получает никакого значения , что приводит к не выполнению следущего блока if .. then ..

Все достаточно просто: перед вызовом Val значение str равняется 'XX#0', где X - цифра от 0 до 9... Вот в этом #0 и заключается проблема - Val выполняется, но ты этого не замечаешь, т.к. переменная Prosto на самом деле не должна быть просто так, она все-таки содержит код ошибки... :D Насколько я вижу, проблема в неправильном занесении ПЕРВОГО символа в строку.

Кстати, если бы ты привел задание, я уверен, что нашелся бы способ проще сделать это... Уж очень все закручено...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.