Страница 1 из 1

Turbo и ABC - не работает программа.

СообщениеДобавлено: 11.10.2012 00:24:22
deka47
Ребят, реально уже крыша едет, либо поздно и я уже, проверив 50-й раз не могу найти ошибку, либо я даже уже не знаю к чему придраться.
ABC работает исправно, показывает когда ошибка, когда правильно, нормально завершает работу.
Turbo прикол, он на все значение пишет мне "Bad!", хотя я правильно умножаю числа.
Как по мне программы идентичны, капелька в капельку, разны лишь тем, что в ABC - strtoint, а в Turbo - str.
Все остальное одинаковое. Так почему Turbo не работает? При запуске на правильные ответы пишет "Bad!", я уже час смотрю на два компилятора и не могу найти в чем проблема. Помогите.

Код проргаммы для ABC:
Код: Выделить всё
var a, b, c : integer;
r: boolean;
q: string;
begin
Randomize;
repeat
A:= 1+ Random(10); B:= 1+ Random(10);
Write(A,' x ',B, ' = ');
readln (q);
if q='Stop' then break else c:= strtoint(q);
r:=c=a*b;
if r
then Writeln ('Молодец правильно!')
else Writeln ('Ошибка, повтори таблицу умножения!');
until false;
writeln ('Good bye!');
end.


Turbo:
Код: Выделить всё
var a, b, c : integer;
r: boolean;
q: string;
begin
Randomize;
repeat
A:= 1+ Random(10); B:= 1+ Random(10);
Write(A,' x ',B, ' = ');
readln (q);
if q='Stop' then break else str (c,q);
r:=c=a*b;
if r
then Writeln ('Good!')
else Writeln ('Bad!');
until false;
writeln ('Good bye!');
end.

Re: Turbo и ABC - не работает программа.

СообщениеДобавлено: 11.10.2012 00:42:33
Максим
Вы вообще документацию читать будете?

Вот это вот:
Код: Выделить всё
str (c,q);
что делает?

Re: Turbo и ABC - не работает программа.

СообщениеДобавлено: 11.10.2012 01:12:36
deka47
Максим, конвертирует тип string в integer. Аналог c:= strtoint(q), потому что в Turbo такой комманды нету.
Это я такое нашел на просторах интернета.

По-ходу последнее предложение сыграло роль в моей ошибке, верно, Максим?

Re: Turbo и ABC - не работает программа.

СообщениеДобавлено: 11.10.2012 01:57:15
Максим
deka47 писал(а):Максим, конвертирует тип string в integer.

Понятия не имею, откуда вы это взяли. На приведённом вами скриншоте про Str всё написано правильно (за исключением ереси про модуль Crt). Читайте снова и медленнее.

А ещё лучше, читайте не мурзилки в Интернете, а официальную документацию.

Re: Turbo и ABC - не работает программа.

СообщениеДобавлено: 11.10.2012 08:39:09
Oleg_D
deka47 писал(а):Ребят, реально уже крыша едет

На свежую голову в хелпах можно найти это:
Код: Выделить всё
Procedure Val(S; Var V; Var Code : Integer);

Где:
  S    - переменная со строковым типом. Должна представлять
         последовательность символов, формирующих знаковое целое число.
  V    - переменная типа Real или Integer.
  Code - переменная типа Integer.

Замечания:
-------------
Преобразовывает строковое значение (S) в его числовое представление, как это
происходит при чтении из текстового файла с помощью Read. Code - позиция, в
которой произошла ошибка при преобразовании, или нуль, если ошибки не было.

{ Пример программы для процедуры Val }

Var I, Code : Integer;
    S : string;
Begin
   Readln(S);
   Val(S, I, Code);
   { Была ошибка при преобразовании ? }
   If Code<>0
      Then WriteLn('Ошибка при преобразовании в позиции : ', Code)
      Else WriteLn('Число = ', I);
End.