Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задача на типы данных

Автор: Hunt666 1.10.2006 16:38

мне необоходимо написать такую прогу:в диалоговом режиме вводится число ,если оно относится к целому типу данных то в результате тоже должно быть целое число ,точно также с вещественным,сивольным и логическим типом данных (все в одной проге)реализовать надо на паскале .
P.S.
сам толком задание не понял и как делать не представляю,памажите кто чем может

Автор: klem4 1.10.2006 16:46

Так как таких вещей как шаблоны в Паскале нету, то вводи строку и анализируй ее.

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

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





ps Вот тут Volvo лучше вариант предложил smile.gif

Автор: volvo 1.10.2006 16:47

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

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

Цитата
Так как таких вещей как шаблоны в Паскале нету
rolleyes.gif 100% ?

Автор: -Hunt666- 1.10.2006 23:57

а на примере можно а то я не совсем понял

Автор: volvo 2.10.2006 0:28

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- 2.10.2006 0:50

спаибо огромное теперь я все вроде бы понял!!!!!!!!