Помощь - Поиск - Пользователи - Календарь
Полная версия: задача на типы данных
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Hunt666
мне необоходимо написать такую прогу:в диалоговом режиме вводится число ,если оно относится к целому типу данных то в результате тоже должно быть целое число ,точно также с вещественным,сивольным и логическим типом данных (все в одной проге)реализовать надо на паскале .
P.S.
сам толком задание не понял и как делать не представляю,памажите кто чем может
klem4
Так как таких вещей как шаблоны в Паскале нету, то вводи строку и анализируй ее.

Если только числа [и знак числа в первом сисмволе] - то целое
Если то что и выше + 1 десятичный разделитель - то вещественное

ну и так далее ....





ps Вот тут Volvo лучше вариант предложил smile.gif
volvo
Читаешь строку, и пробуешь преобразовать ее к целому числу (через Val)... Если ошибка, то введено не целое - пробуй преобразовать к вешественному. Если и здесь ошибка - то анализируй длину введенной строки... При длине = 1 был введен символ.

Если длина отлична от 1, то переводить введенную строку в верхний регистр и проверять на 'TRUE' или 'FALSE'... Есть совпадение - введена логическая переменная, нет - была введена строка, не являющаяся ничем из выше перечисленного...

Цитата
Так как таких вещей как шаблоны в Паскале нету
rolleyes.gif 100% ?
-Hunt666-
а на примере можно а то я не совсем понял
volvo
function UpStr(s: string): string;
var i: integer;
begin
  for i := 1 to length(s) do
    s[i] := UpCase(s[i]);
  UpStr := s;
end;

var
  s: string;
  code: integer;
  i: longint;
  r: real;
  b: boolean;

begin
  write('> '); readln(s);
  val(s, i, code);
  if code > 0 then begin
    val(s, r, code);
    if code > 0 then begin

      if length(s) > 1 then begin

        if (UpStr(s) = 'TRUE') or (UpStr(s) = 'FALSE') then begin
          b := UpStr(s) = 'TRUE';
          writeln('Boolean type. B = ', b);
        end
        else writeln('None of these types... Just a string: ', s);

      end
      else writeln('Char type. Ch = ', s);

    end
    else writeln('Real type. R = ', r:10:5);
  end
  else writeln('Integer type. I = ', i:10);

end.
-Hunt666-
спаибо огромное теперь я все вроде бы понял!!!!!!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.