Преобразование строки в число

Преобразование строки в число
Нужно написать программу, которая будет преобразовывать строку в число ( без использования уже.

преобразование из строки в число
как преобразовать из строки в число? если такое было то ткните в тему. в моём случае надо.
Преобразование строки в число
У меня проблема с преобразованием строки в число если писать int a=55+5-5 и тд. то все работает.
Преобразование строки в число
Разработать программу, выполняющую: — ввод строки, изображающей число в позиционной системе.
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
b:integer;
N:=StrToInt(st);
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
Сообщение от Zwelenewskiy 
Что не так? Ведь данная процедура стандартна
Процедура то стандартна… Да вот только длина строковой переменной в PABC.NET „не стандартна“.
Поэтому жмём F1 и читаем:
procedure Val(s: string; var value: число; var err: integer); Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную value. Если преобразование успешно, то err=0, иначе err>0
… где сказано, что err имеет тип integer, а не byte!
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Преобразование строки в число
А как многоразрядные числа из строки преобразовать? Если я использую string?

Преобразование строки в число
Вот код из учебника #include<iostream> using std::cout;using std::endl; int main()< char.

Преобразование строки в число
Здравствуйте. Преобразовываю строку в число с помощью функции atoi(), но есть одна проблема: .

Преобразование строки в число
Существует такая проблема. У меня есть справочник с набором процентов по наценке товаров. В этом.
Или воспользуйтесь поиском по форуму:
Символы и строки в PascalABC.NET
Символы имеют тип char, занимают 2 байта и хранятся в кодировке Unicode (UTF-16).
var c1: char; var c2 := 'z';
Для преобразования символа c в код используется функция Ord(c) или метод Ord(c) , для обратного преобразования кода i в символ используется функция Chr(i) .
begin var c := 'ю'; Print(Ord(c)); // 1102 c.Code.Print; // 1102 Print(Chr(1102)); // ю end.
Классический способ определить символ, следующий за данным в кодовой таблице, — это преобразовать символ в код, прибавить к коду число и потом преобразовать полученный код снова в символ:
Chr(Ord(c)+1)
Аналогично определяется предыдущий символ
Для перебора всех символов в заданном диапазоне используется цикл for:
for var c := 'a' to 'z' do Print(c);
Методы типа char
Методы, встроенные в тип char, делятся на две категории:
- проверяющие, принадлежит ли символ указанной категории: c.IsDigit , c.IsLetter , c.IsLower , c.IsUpper
- преобразующие символ: c.ToUpper , c.ToLower , c.ToDigit .
Отметим также, что c.IsLower возвращает True только если это буква в нижнем регистре — для не букв возвращается False .
Строки
Введение
Отметим, что для строк имеется много операций и методов, не все из которых мы рекомендуем для школьников.
Основная причина — многие методы строк в .NET считают, что строки индексируются с нуля, а в Паскале строки индексируются с 1.
Для устранения этой дилеммы при работе со школьниками мы не используем методы строк, которые работают с индексами, индексируемыми с нуля. Для них существуют эквивалентные замены внешними функциями, которые предполагают, что строки индексируются с 1.
Индексация строк
Строки в Паскале индексируются с 1. К символам строк можно обращаться по индексам — s[i] .
begin var s: string; s := 'тор'; Print(s[1],s[2],s[3]); end.
Символы строк можно менять:
begin var s := 'пир'; s[1] := 'м'; Print(s); // мир end.
Можно использовать индексацию с конца: s[^i] обозначает i-тый символ с конца
begin var s := 'мир'; s[^1] := 'г'; Print(s); // миг end.
Циклы по строкам
begin var s := 'привет'; for var i:=1 to s.Length do s[i] := Chr(Ord(s[i])+1); Print(s); end.
foreach var c in s do Print(c);
Операции +, *n и in
Строки можно складывать и умножать на целое положительное число
Пример. Генерация строки ‘abcdefghijklmnopqrstuvwxyz’
Идея. Начать с пустой строки. Всякий раз в цикле добавлять к строке символы от ‘a’ до ‘z’
begin var s := ''; for var c := 'a' to 'z' do s += c; end.
Методы Count, CountOf, Where
Чтобы посчитать количество символов в строке, удовлетворяющих определённому условию, используется метод Count. Если нужно посчитать, сколько раз встречается определенный символ, используется более простой метод CountOf
begin var s := 'абракадабра'; s.CountOf('а').Print; s := 'а123бр45а67к89адабра'; s.Count(c -> c.IsDigit).Print; end.
Если в строке надо отфильтровать только определенные символы, используется метод Where. Он возвращает последовательность символов, которую можно назад преобразовать к строке, используя метод JoinToString:
begin var s := 'а123бр45а67к89адабра'; s := s.Where(c -> c.IsLetter).JoinToString; end.
s.ToWords и разбиение строки на слова
Метод s.ToWords разбивает строку на массив слов, используя пробел в качестве разделителя. Полученный массив можно преобразовать и слить в строку, используя метод JoinToString:
begin var s := 'как однажды жак звонарь головой сломал фонарь'; var a := s.ToWords; Sort(a); s := a.JoinToString end.
По умолчанию JoinToString разделяет слова пробелами, но можно задать другой разделитель:
s := a.JoinToString(', ')
Функция Pos и процедуры Delete, Insert
Pos(subs,s) возвращает позицию первого вхождения подстроки subs в сторке s или 0 если подстрока не найдена
Pos(subs,s,from) начинает искать подстроку в строке с позиции from .
Следующий код выводит позиции всех вхождений s1 в s:
begin var s := 'абракадабра'; var s1 := 'бра'; var p := Pos(s1,s); while p>0 do begin Print(p); p := Pos(s1,s,p+s1.Length); end; end.
Следующий код удаляет в строке слово Python и вставляет на его место PascalABC.NET:
begin var s := 'Язык Python - мой любимый язык программирования'; Delete(s,6,6); // удалить с 6 позиции 6 символов Insert('PascalABC.NET',s,6); Print(s) end.
То же самое можно сделать с помощью метода Replace:
begin var s := 'Язык Python - мой любимый язык программирования'; s.Replace('Python','PascalABC.NET'); Print(s) end.
©2024 PascalABCNET Team. All rights reserved.
Page last updated: 19.12.2020
Site last generated: Mar 19, 2024
Преобразовать строку в число. Пример использования процедуры Val() в Паскаль
![]()
Для преобразований строк в числа в Паскале используется стандартная процедура процедура $val()$ со следующей сигнатурой:
procedure Val(S: String; Var V; var Code : Integer);
- $S$ — переменная со строковым типом (string). Должна представлять последовательность символов, формирующих знаковое целое число — это та строка, которую мы будем преобразовывать.
- $V$ — переменная типа Real или Integer (здесь имеет место перегрузка процедуры). В этой переменной будет содержаться число, если преобразование пройдёт успешно
- $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):
- паскаль число в строку функция
- Как преобразовать строку в число В Паскале
Как преобразовать строку в число Паскаль

Преобразование строки в число является одной из самых распространенных операций в программировании. Это особенно актуально, когда ввод данных происходит с клавиатуры или из внешних источников, где данные приходят в виде текста.
В языке Паскаль существуют различные методы и алгоритмы, которые позволяют преобразовать строку в число. Эти методы различаются по сложности и эффективности, и выбор оптимального метода зависит от конкретной задачи и требований к производительности.
В данной статье мы рассмотрим некоторые из наиболее популярных методов преобразования строки в число в языке Паскаль. Мы рассмотрим как стандартные функции и процедуры, так и самописные алгоритмы, которые могут быть полезны в некоторых конкретных случаях. Будут рассмотрены как методы преобразования целых чисел, так и десятичных чисел с плавающей точкой.
Не важно, какое задание предстоит решить – преобразование строки в число или наоборот – всегда стоит выбирать наиболее оптимальный и эффективный метод, чтобы обеспечить стабильную работу программы и минимальное потребление ресурсов.
Методы преобразования строки в число Паскаля
При работе с текстовыми данными в Паскале иногда может возникнуть необходимость преобразовать строку в число. Существует несколько методов, которые позволяют это сделать.
1. Использование функций StrToInt и Val
Функция StrToInt является одним из самых простых способов преобразования строки в число в Паскале. Она позволяет преобразовать строку, состоящую только из цифр, в число.
var
str: string;
num: integer;
begin
str := '12345';
num := StrToInt(str);
end;
Если нужно преобразовать строку, которая может содержать не только цифры, но и другие символы, можно воспользоваться функцией Val. Она позволяет преобразовать строку в число, игнорируя все символы, которые не являются цифрами.
var
str: string;
num: integer;
begin
str := '12a34';
Val(str, num);
end;
2. Использование функции StrToFloat
Если в строке содержатся не только целые числа, но и десятичные, можно воспользоваться функцией StrToFloat.
Она позволяет преобразовать строку в число с плавающей точкой.
var
str: string;
num: real;
begin
str := '3.14';
num := StrToFloat(str);
end;
3. Использование функции TryStrToInt
Для более безопасного преобразования строки в число можно воспользоваться функцией TryStrToInt.
Она возвращает значение типа Boolean, указывающее на успешность преобразования, и преобразованное число передается через параметр var.
var
str: string;
num: integer;
begin
str := '12345';
if TryStrToInt(str, num) then
begin
// Преобразование успешно
end
else
begin
// Преобразование не удалось
end;
end;
Таким образом, в Паскале существует несколько методов преобразования строки в число, в зависимости от типа данных и нужных условий.
Найти решение посредством алгоритма поиска числа Паскаля
Числа Паскаля – это ряд чисел, который был впервые представлен французским математиком Блезом Паскалем в 1654 году. Этот ряд чисел обладает несколькими удивительными свойствами и находит применение в различных областях математики и информатики.
Алгоритм поиска числа Паскаля позволяет найти значение определенного элемента в ряде без необходимости вычисления всех предыдущих значений. Данный алгоритм основан на рекуррентной формуле, которая определяет число Паскаля через его предыдущие значения.
Для поиска числа Паскаля можно использовать следующий алгоритм:
- Проверяем, является ли искомое значение первым или последним элементом в ряде. Если да, то возвращаем его значение.
- Иначе, используем рекуррентную формулу, согласно которой значение числа Паскаля равно сумме двух предыдущих значений в ряде.
- Повторяем шаг 2 до тех пор, пока не достигнем искомого элемента в ряде.
- Возвращаем найденное значение.
Примером работы алгоритма может служить поиск элемента в 5-м ряде чисел Паскаля:
- Ряд чисел Паскаля: 1, 1, 1, 1, 2, 1
- Искомый элемент: 2
Согласно алгоритму, мы должны посчитать значение 2-го элемента в ряде. Сначала проверим, является ли он первым или последним элементом — нет. Затем применим рекуррентную формулу и получим значение 2.
Таким образом, алгоритм поиска числа Паскаля позволяет быстро и эффективно находить значения в ряде без необходимости вычисления всех предыдущих чисел.
Использование встроенных функций для преобразования строки в число
В языке программирования Паскаль существуют встроенные функции, которые позволяют преобразовывать строки в числа. Это очень удобно при работе с пользовательским вводом или при чтении данных из файлов.
Одной из таких функций является StrToInt. Она принимает на вход строку и возвращает целое число, соответствующее этой строке. Если строка не может быть преобразована в число, то функция генерирует исключение.
Пример использования функции StrToInt:
var str: string;
num: integer;
begin
str := '1234';
num := StrToInt(str);
writeln(num);
end.
В данном примере функция StrToInt преобразует строку ‘1234’ в целое число 1234.
Если строка содержит недопустимые символы или не может быть преобразована в число, то функция генерирует исключение EStrConvertError. Чтобы избежать возникновения исключения, можно использовать функцию TryStrToInt. Она также преобразует строку в число, но в случае ошибки возвращает false вместо исключения. В этом случае переменная, которой присваивается результат функции, остается неизменной.
Пример использования функции TryStrToInt:
var str: string;
num: integer;
begin
str := '12a34';
if TryStrToInt(str, num) then
writeln(num)
else
writeln('Ошибка');
end.
В данном примере функция TryStrToInt пытается преобразовать строку ’12a34′ в число. Так как в строке присутствует недопустимый символ ‘a’, функция вернет false, и на экран будет выведено сообщение ‘Ошибка’.
Также существуют специальные функции для преобразования строк в числа с плавающей точкой: StrToFloat и TryStrToFloat.
Пример использования функции StrToFloat:
var str: string;
num: real;
begin
str := '3.14';
num := StrToFloat(str);
writeln(num);
end.
В данном примере функция StrToFloat преобразует строку ‘3.14’ в число с плавающей точкой 3.14.
Функция TryStrToFloat работает аналогично функции TryStrToInt, но преобразует строку в число с плавающей точкой.
Использование встроенных функций для преобразования строки в число упрощает работу с данными, и позволяет с легкостью выполнять различные математические операции.
Применение регулярных выражений для преобразования строки в число Паскаля
Регулярные выражения — мощный инструмент для работы с текстом, который позволяет искать и извлекать данные по определенным шаблонам. Они также могут быть использованы для преобразования строк в число Паскаля.
Чтобы преобразовать строку в число Паскаля с использованием регулярных выражений, необходимо выполнить следующие шаги:
- Определить шаблон, соответствующий числу Паскаля.
- Искать в строке все совпадения с этим шаблоном.
- Извлечь числа из найденных совпадений.
- Выполнить дополнительные преобразования для получения числа Паскаля.
Пример регулярного выражения для поиска чисел Паскаля в строке:
regexp = /\d+(\.\d+)?/g;
Этот шаблон ищет одно или более цифр, за которыми может следовать десятичная точка и дробная часть числа. Флаг «g» указывает на поиск всех таких совпадений в строке.
Пример преобразования строки в число Паскаля:
const string = "123.45";const matches = string.match(regexp);
const pascalNumber = matches[0].replace(/\./, "").parseInt();
В этом примере мы ищем совпадения с регулярным выражением в строке «123.45». Затем мы извлекаем первое совпадение и удаляем десятичную точку с помощью метода replace. В результате получаем строку «12345», которую преобразуем в число с помощью функции parseInt.
Таким образом, регулярные выражения позволяют легко преобразовывать строки в числа Паскаля. Они предоставляют гибкий и мощный способ работы с текстом и позволяют извлекать и преобразовывать нужные данные на основе заданных шаблонов.
Вопрос-ответ
Какие ещё способы преобразования строк в число существуют в Паскале?
Помимо функции StrToInt, в языке Паскаль существует ряд других функций и процедур для преобразования строк в числа. К ним относятся: Val, StrToFloat, StrToCurr, StrToDate, StrToTime и другие. Выбор конкретного способа зависит от требуемого типа числа и необходимой обработки ошибок.