2

по сути, нужно проверить что в строке, число или нет и в зависимости от результата действовать. Пытался через val, но это не логическая функция(

Program prov;
var
    s,s1:string;
    b,x,e:integer;
begin
    writeln('vvedite stroku');
    read(s);
    if val(s,x,e) then
        b:=x
    else
        s1:=s;
end.
mayhem
  • 31
  • как этот код можно преобразовать? или есть отдельная функция? – mayhem Oct 29 '13 at 18:46
  • Читайте внимаельнее про процедуру val – DreamChild Oct 29 '13 at 18:50
  • @DreamChild,я наверно не так выразился,прошу прощения, мне нужно проверить, является ли строка s числом, если да, то выполнить действие1, если s является чем угодно кроме числа(строкой символов), выполнить действие2 – mayhem Oct 29 '13 at 19:02
  • ну так и что же? Судя по приведенному описанию этой функции (пардон, процедуры) val вам подходит – DreamChild Oct 29 '13 at 19:03
  • 1
    я вам в третий раз говорю - вам нужно использовать val – DreamChild Oct 29 '13 at 19:07
  • @DreamChild я не могу понять, как конкретно его использовать.___. если в строке число, то внести его в одну переменную , если символ(не число), то в другую.__. – mayhem Oct 29 '13 at 19:11
  • слушайте, ну вы прикалываетесь что ли? В ссылке, что я вам привел, русским языком сказано:

    Code - номер неправильного символа (0 - если изображение числа правильное)

    следовательно, вызываете процедуру val, передав ей вашу строку, и смотрите на ссылочный параметр Code, возвращаемый процедурой. Если он равен нулю, то делаете что-то там. Если не равен, то делаете другое что-то там. Для полной надежности можете еще отловить переполнение

    – DreamChild Oct 29 '13 at 19:16

1 Answers1

1

Мои "пять копеек" из далёкого 2018 года. Val() - процедура, а не функция. Она не возвращает никаких значений. Её не получится использовать как x := Val(...)

Поэтому код следовало бы писать так:

Program prov;
var
  s,s1:string;
  b,x,e:integer;
begin
  writeln('Введите строку:');
  readln(s);
  val(s, x, e);
  if e = 0 then
    b:=x
  else
    s1:=s;
end.

Несколько общих замечаний. Во-первых, использование read() не всегда даёт ожидаемый результат. Во-вторых, использование стольких переменных избыточно, ибо если не произошло ошибок в процедуре val(), то в переменной x уже будет искомое число и его можно будет использовать для расчётов, переменная b - не нужна. Равно как и s1. Если была ошибка, переменная e - содержит её код - отличается от нуля. В-третьих, новичкам часто не хватает знаний основ, того, чем именно отличаются процедуры и функции. Посмотрите уже хотя бы это.

Exodium
  • 2,121