Перейти к содержимому

Как перевести число в строку в паскале

  • автор:

как преобразовать real в string в паскаль

Люди, дельфисты! Ну кто, кто вам сказал, что у человека в ПАСКАЛЕ есть такая функция FloatToStr ?
В Паскале всю жизнь была функция Str(число, переменная_строка) ! Вызывать примерно так:

var
B : real;
S : string;
begin
writeln(‘Input B’);
readln(b);

Str(B : 15 : 2, S);
writeln(‘result=’, S);
end.

Конструкция :15:2 означает, что надо число в строке отформатировать не шире чем 15 знаков всего, из них 2 знака после плавающей точки.
Как-то так

Процедуры STR и VAL.

В строковую переменную можно записывать не только буквы, но и цифры. Однако это будут не числа, как таковые, а их символьное представление. Для преобразования символьных представлений числа в само число, и наоборот, используются процедуры STR и VAl.

Например, возьмем 2 числа: 125 и 347. Если эти числа записаны в строковых переменных, то с ними можно производить те действия, которые производятся над строками. Например, в результате операции сцепления 125+347 получится 125347. Если же данные числа будут записаны в переменных типа Integer или Real, то над ними можно производить операции, предусмотренные для чисел (сложение, вычитание умножение, деление, DIV, MOD и т.д.). Например, в результате операции сложения 125+347 получится 472.
В языке программирования Pascal предусмотрена возможность преобразования чисел в их символьное представление и наоборот.
Процедура STR преобразует число целого или вещественного типов в его строковое представление. Процедура имеет 2 параметра: STR (X, ST), где «X» — это число, а ST – его строковое представление. Также, можно указывать формат преобразования: STR(X:A:B, ST), где «A» задает ширину всего поля, которое выделяется для строкового представления числа, а «B» — количество символов в дробной части (последний параметр имеет значение в том случае, если преобразуется вещественное число). Процедура STR делает с числом то же, что и оператор Writeln перед тем как вывести число на экран (преобразует число в символ).
Процедура VAL преобразует строковое представление числа в само число, которое можно записать в целочисленную или вещественную переменную. Процедура имеет 3 параметра: VAL (ST, X, CODE), где ST – строка, которую необходимо преобразовать в число, X – вещественная или символьная переменная, в которую записывается это число, CODE – необязательный параметр, который, в случае ошибки будет содержать номер позиции, в которой обнаружен ошибочный символ.

Использование процедуры STR.

program string7; uses crt; var stroka,stroka1,stroka2:string; x,y,z:integer; begin clrscr; x:=1234; y:=5678; z:=x+y; writeln(z); str(x,stroka1); str(y,stroka2); stroka:=stroka1+stroka2; writeln(stroka); readln end.

Строка №3. Создаем 3 строковые переменные.

Строка №4. Создаем 3 целочисленные переменные.

Строка №7. В 1-ую переменную типа Integer записываем число 1234.

Строка №8. Во 2-ую переменную типа Integer записываем число 5678.

Строка №9. Складываем эти числа, результат записываем в 3-ю переменную.

Строка №10. Выводим результат на экран.

Строка№11. Переводим 1-ое число в его строковое представление, результат сохраняем в переменной «stroka1».

Строка №12. Переводим 2-ое число в его строковое представление результат сохраняем в переменной «stroka2».

Строка №13. Производим над строками операцию сцепления и записываем результат в переменную «stroka».

Строка №14. Выводим результат на экран.

procedura Str

procedura Str.

О процедуре STR также можно прочитать в разделе, посвященному графике в Pascal.

Использование процедуры VAL.

Напишем программу, в которой строковой переменной будет присвоено значение, определяющее дату, например, 23.02.1965. Пусть эта дата обозначает год вашего рождения. Программа, должна подсчитать, сколько вам лет на текущий момент. Текущим моментом будем считать 2012 год.

program string8; uses crt; var stroka1,stroka2:string; rog, let:integer; begin clrscr; stroka1:='23.02.1965'; stroka2:=copy(stroka1,7,4); val(stroka2,rog); let:=2012-rog; writeln(let); readln end.

Строка №7. В переменную «stroka1» записываем дату рождения.

Строка №8. В переменную «stroka2» копируем из переменной «stroka1» последние 4 символа, 1965.

Строка №9. Преобразовываем эти 4 символа в число и записываем это число в целочисленную переменную «rog».

Строка №10. В целочисленную переменную «let» записываем значение, которое получится при вычитании из числа 2012 числа 1965.

Строка №11. Выводим значение переменной «let» на экран.

Преобразовать строку в число. Пример использования процедуры Val() в Паскаль

vedro-compota's picture

Для преобразований строк в числа в Паскале используется стандартная процедура процедура $val()$ со следующей сигнатурой:

procedure Val(S: String; Var V; var Code : Integer);
  1. $S$ — переменная со строковым типом (string). Должна представлять последовательность символов, формирующих знаковое целое число — это та строка, которую мы будем преобразовывать.
  2. $V$ — переменная типа Real или Integer (здесь имеет место перегрузка процедуры). В этой переменной будет содержаться число, если преобразование пройдёт успешно
  3. $Code$ — переменная типа Integer — позиция, в которой произошла ошибка при преобразовании, или нуль, если ошибки не было.

При этом следует отметить, что переменные $V$ и $Code$ принимаются переменной по ссылке — то есть хотя процедура и не возвращает значений, но она изменит значения этих двух переменных в области вызова и таким образом можно будет получить результат преобразования.

Что делает процедура val()

  • Процедура $val()$ делает попытку преобразовать строковое значение $S$ в его числовое представление $V$.
  • Переменная $Code$ будет содержать номер позиции, в которой произошла ошибка при преобразовании, или нуль, если ошибки не было.
  • Для успешного преобразования, необходимо, чтобы значение $S$ было корректной записью числа, рассмотрим примеры вызовов для разных значений и их типов:
var intChislo, Code : Integer; rChislo: real; s: string; begin s := '123'; Val(s, intChislo, Code); writeln(intChislo, ' | Error code: ', Code); // Получим: 123 | Error code: 0 -- все хорошо s := '1q23'; Val(s, intChislo, Code); writeln(intChislo, ' | Error code: ', Code); < Получим: 0 | Error code: 2 -- т.к. в позиции 2 стоит некорректный для числа символ q>s := '17.5'; Val(s, intChislo, Code); writeln(intChislo, ' | Error code: ', Code); < Получим: 0 | Error code: 2 -- т.к. в позиции 3 стоит точка, а этот символ не участвует в записи типа integer, т.е. '17.5' некорректный литерал для преобразования в integer>s := '17.5'; Val(s, rChislo, Code); writeln(rChislo, ' | Error code: ', Code); < Получим: 1.7500000000000000E+001 | Error code: 0 -- прошло успешно, т.к. '17.5' корректный литерал для преобразования в real>readln(); // удерживаем консоль end.

Пример использования $val()$ с обработкой кода ошибки

var I, Code : Integer; s: string; begin writeln('vvedite chislo:'); readln(s); < // далее попытаемся преобразовать полученную строку в число Val(s, I, Code); // вызываем процедуру преобразования < Была ошибка при преобразовании ? >if (Code <> 0) then writeln('Oshibka pri preobrazovanii v pozicii : ', Code) else writeln('Uspeshno poluchili chislo = ', I); readln(); // удерживаем консоль end.
  • Val (процедура): http://pascal.net.ru/Val

Key Words for FKN + antitotal forum (CS VSU):

  • паскаль число в строку функция
  • Как преобразовать строку в число В Паскале

Процедура Str

Основы программирования 2.0

Процедура Str в Паскале преобразует число или перечисление в строку. Синтаксис:

procedure Str(var X : TNumericType; var S : string);

Процедура Str возвращает строку, представляющую значение X , которое может быть любым числовым или перечисляемым типом. Фактическое объявление процедуры Str не соответствует синтаксису Паскаль и должно быть

procedure Str(var X : TNumericType [:NumPlaces [:Decimals]]; var S : String);

где необязательные спецификаторы NumPlaces и Decimals управляют форматированием строки:

  • NumPlaces задаёт общую ширину строки
  • Decimals задаёт количество десятичных знаков после символа десятичного разделителя

Процедуру Str также можно использовать для преобразования значения перечисляемого типа в строковое представление объявленного перечисления. Это означает, что будет работать следующее:

type TMyEnum = (One); var s : string; begin Str(One, s); Writeln(s); end.

Эта программа выведет на экран слово One . То же самое сделает и следующая программа:

type TMyEnum = (One); var s : string; E : TMyEnum; begin E := One; Str(E, s); Writeln(s); end.

Преобразование числа может быть выполнено, например, так:

Str(150, s); Writeln(s);

Если вы хотите преобразовать вещественное число и задать определённое количество знаков после запятой, то это можно сделать так:

Str(Pi:0:4, s); Writeln(s);

Примеры вывода показаны на рисунке:

Использование процедуры Str

Если хотите, можете с помощью процедуры Str создать собственную функцию преобразования вещественных чисел в строку с заданным количеством знаков после запятой. Функция может быть, например, такой:

//**************************************************************** // Функция преобразует вещественное число в строку // с указанным количеством знаков после запятой // ВХОД: х - число; n - количество знаков после запятой // ВЫХОД: строковое представление числа //**************************************************************** function MyFloatToStr(x : single; n : byte) : string; var st : string; begin Str(x:0:n, st); Result := st; end;

Здесь с помощью спецификатора Decimals мы задаём количество знаков после запятой. В программе функцию можно использовать так:

Writeln(MyFloatToStr(Pi*2, 3));

При этом на экран будет выведена строка 6.283

Спецификатор NumPlaces тоже может пригодиться, например, при выводе таблиц. С его помощью мы можем задать одинаковую ширину строки, и на экране вывод будет занимать всегда одинаковое заданное количество знакомест, независимо от того, сколько цифр у нас в числе. Пример:

for i := 1 to 16 do begin Str(i:3, s); if ((i mod 4) = 0) then WriteLn(s) else Write(s); end;

На экран будет выведена такая ровная таблица:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *