Что означает данная ошибка и как её исправить?? Program3.pas(6) : Нет перегруженной подпрограммы с таким количеством параметров Replace
Сам код:
begin
var s:= '3'*90 + '1';
while ('331' in s) or ('166' in s) do
begin
if '331' in s then
s := s.Replace('331','16',1)
else
s := s.Replace('166','31',1);
end;
print(s);
end.
Другие языки программирования и технологии
Нет перегруженной подпрограммы с таким количеством параметров Replace
1) В Паскале нет функции Replace, это не Питон. Стандартным подходом является написание своей функции или процедуры (в общем, в стандарте-то и типа string нет, и динамические массивы отсутствуют). В каждой реализации языка есть свои средства для замены строк, например, FreePascal содержит функции ReplaceStr, ReplaceText, StringReplace.
2) В Паскале нет оператора in для поиска подстрок в строке. Нужно использовать функцию Pos:
3) В Паскале нет методов, поэтому синтаксис s.что-то-там() недопустим. Все функции имеют префиксную нотацию, все параметры передаются в скобках справа:
4) В Паскале нет функции print. Значения выводятся в консоль или файл процедурами write, writeln и автоматически ничем не разделяются, пробелы надо добавлять вручную.
5) В Паскале все переменные нужно объявить в начале программы, процедуры или функции (до первого begin):
2) В Паскале нет оператора in для поиска подстрок в строке. Нужно использовать функцию Pos:
p := Pos(sub, str);
if p > 0 then ...
3) В Паскале нет методов, поэтому синтаксис s.что-то-там() недопустим. Все функции имеют префиксную нотацию, все параметры передаются в скобках справа:
str := ReplaceStr(str, sub, repl)
4) В Паскале нет функции print. Значения выводятся в консоль или файл процедурами write, writeln и автоматически ничем не разделяются, пробелы надо добавлять вручную.
5) В Паскале все переменные нужно объявить в начале программы, процедуры или функции (до первого begin):
var s: string;
p: integer;
и т.д.
Андрей Карпов
Потому что в примере PascalABC, а в нём всё есть
А матчасть для кого пишется
Replace(s1,s2: string): string Возвращает строку, полученную из исходной строки заменой ВСЕХ вхождений подстроки s1 на строку s2
Ошибка "Нет перегруженной подпрограммы с таким количеством параметров Replace" возникает, когда вы вызываете функцию `Replace` с неправильным количеством аргументов. В Pascal функция `Replace` требует три аргумента: исходную строку, подстроку для замены и строку-заменитель.
В вашем коде, в двух строках с использованием функции `Replace`, вы указываете только два аргумента: исходную строку и подстроку для замены, пропуская строку-заменитель. Это приводит к ошибке.
Чтобы исправить эту ошибку, вам нужно указать третий аргумент - строку-заменитель. Например, замените строки:
```pascal
s := s.Replace('331','16',1);
```
и
```pascal
s := s.Replace('166','31',1);
```
на:
```pascal
s := s.Replace('331','16','');
```
и
```pascal
s := s.Replace('166','31','');
```
Добавление пустой строки в качестве третьего аргумента указывает, что вы не хотите заменять найденные подстроки какой-либо другой строкой, а просто удалить их.
После внесения этих изменений код должен скомпилироваться без ошибок.
В вашем коде, в двух строках с использованием функции `Replace`, вы указываете только два аргумента: исходную строку и подстроку для замены, пропуская строку-заменитель. Это приводит к ошибке.
Чтобы исправить эту ошибку, вам нужно указать третий аргумент - строку-заменитель. Например, замените строки:
```pascal
s := s.Replace('331','16',1);
```
и
```pascal
s := s.Replace('166','31',1);
```
на:
```pascal
s := s.Replace('331','16','');
```
и
```pascal
s := s.Replace('166','31','');
```
Добавление пустой строки в качестве третьего аргумента указывает, что вы не хотите заменять найденные подстроки какой-либо другой строкой, а просто удалить их.
После внесения этих изменений код должен скомпилироваться без ошибок.
Похожие вопросы
- Пишет что не верное количество параметров процедуры в чём ошибка
- Программирование на языке СИ с использованием подпрограммы-функции
- FASM. Замена символов в строке, используя подпрограммы.
- Кто омжет написать пподпрограмму на паскале и чем программа отличается от подпрограммы ?
- Помогите с подпрограммой в с++.
- Изучение системы команд Ассемблера. Подпрограммы и прерывания. Помогите с задачами
- Pascal перевести программу на подпрограмму.
- TURBOPASCAL 7.0 модуль dos помогите пожалуйста с подпрограммой
- Составить подпрограмму-функцию вычисления значений интеграла методом Симпсон.
- как убрать теги с помощью str_replace или preg_replace (php)