Другие языки программирования и технологии
Помогите с Pascal
написать функцию, возвращающую переданное слово или строку, написанной в обратном порядке. Паскаль. Я вот читаю читаю про паскаль, а вот синтаксиса все никак понять не могу. Кто-нибудь объясните на пальцах. А то что не учебник - сплошная ВОДА
function ReverseString(Str: string): string;
var
i: integer;
begin
Result := '';
for i := Length(Str) downto 1 do
Result := Result + Str[i];
end;
var
i: integer;
begin
Result := '';
for i := Length(Str) downto 1 do
Result := Result + Str[i];
end;
char'ы там будут неявно, объявлять их не надо. string - это массив char с некоторыми дополнительными возможностями. Str[i] - это как раз и есть char.
Синтаксис в Pascal (в частности) это самое простое. Не понимая "букв" какие пишете и хотите быть писателем?
ну что делать. Надо изучать синтаксис. Тут в два слова не расскажешь.
Вообще программа простая. длина строки делится на 2 и с помощью цикла обращаетесь к строке к символу по индексу. И через третью переменную меняете местами. Можно и копировать соотв обратным циклом. если использовать ещё строку, но.... Вообще от компилятора зависит. Если он каждый раз будет исправлять счетчик символов в 0 байте в строке - это плохо. Если он оптимизирует это до std rep stosw и в самом конце запишет 0 байт - то всё супер - это лучше решение.
Пишите на почту, если что.
P.S: Функции вряд-ли вам давали сразу. Вероятнее что-то пропустили или поленились.
И что Вам даст программа, не зная синтаксиса? Ну узнаете как делать именно эту задачу. А будет другое задание - что будете делать?
А char есс-но понадобится. Str[i] это и есть char.
Добавлю к гуру. . var Result:string. Надо описать и вернуть
"Всем спасибо, попробую сама что нить сварганить"
Правильный подход =) Если что-то конкретное не получится - пишите =)
ну что делать. Надо изучать синтаксис. Тут в два слова не расскажешь.
Вообще программа простая. длина строки делится на 2 и с помощью цикла обращаетесь к строке к символу по индексу. И через третью переменную меняете местами. Можно и копировать соотв обратным циклом. если использовать ещё строку, но.... Вообще от компилятора зависит. Если он каждый раз будет исправлять счетчик символов в 0 байте в строке - это плохо. Если он оптимизирует это до std rep stosw и в самом конце запишет 0 байт - то всё супер - это лучше решение.
Пишите на почту, если что.
P.S: Функции вряд-ли вам давали сразу. Вероятнее что-то пропустили или поленились.
И что Вам даст программа, не зная синтаксиса? Ну узнаете как делать именно эту задачу. А будет другое задание - что будете делать?
А char есс-но понадобится. Str[i] это и есть char.
Добавлю к гуру. . var Result:string. Надо описать и вернуть
"Всем спасибо, попробую сама что нить сварганить"
Правильный подход =) Если что-то конкретное не получится - пишите =)
Что бы понять (а скорее запомнить, потому что понять нужно принцип программирования, а не синтаксис отдельного языка ИМХО) синтаксис, нужно написать побольше программ. Берёшь задание и делаешь. Потом, если чё-то не получается, то думай сама, и только потом спрашивай у других (и то, если очень срочно нужно решить) .
================================
var // тут переменные объявляем
s : string; // переменная строкового типа
i : integer; // переменная целочисленного типа
begin // начало программы
writeln('Enter sentens: '); // эта функция выводит на экран
readln(s); // эта функция считывает данные с консоли
for i := length(s) downto 1 do { Это цикл. В нём мы берём и выводим на экран каждую букву строки (А строка тут это массив символов. И циклы нужны, что бы работать с массивами. А массивы это связанные переменные одинакового типа. Тут переменные - буквы, а связаны они между собой тем, что находятся в одном слове. ) ок? ) задом на перёд.
Т. е. последний символ строки выведется первым, а первый - последним}
write(s[i]);
end. // конец программы
================================
var // тут переменные объявляем
s : string; // переменная строкового типа
i : integer; // переменная целочисленного типа
begin // начало программы
writeln('Enter sentens: '); // эта функция выводит на экран
readln(s); // эта функция считывает данные с консоли
for i := length(s) downto 1 do { Это цикл. В нём мы берём и выводим на экран каждую букву строки (А строка тут это массив символов. И циклы нужны, что бы работать с массивами. А массивы это связанные переменные одинакового типа. Тут переменные - буквы, а связаны они между собой тем, что находятся в одном слове. ) ок? ) задом на перёд.
Т. е. последний символ строки выведется первым, а первый - последним}
write(s[i]);
end. // конец программы
Рекурсивно можно так
function revers(s:string):string;
var ln:integer;
begin
ln:=length(s);
if ln=0 then revers:=s else revers:=s[ln]+revers(copy(s,1,ln-1))
end;
function revers(s:string):string;
var ln:integer;
begin
ln:=length(s);
if ln=0 then revers:=s else revers:=s[ln]+revers(copy(s,1,ln-1))
end;
Похожие вопросы
- Помогите разобраться, Pascal!
- Помогите с Pascal 7.0!Кто чем может!
- Помогите с Pascal, найдите ошибку
- ПОМОГИТЕ С PASCAL!!!
- Помогите пожалуйста (pascal). В долгу не останусь ;)
- помогите с pascal! пожалуйста!!
- помогите пожалуйста.pascal
- Люди помогите с Pascal
- Помогите с Pascal. Дано натуральное число. Определите сумму m его последних цифр отличных от 0
- Помогите с Pascal ABC. Можно ли соединить модуль Graph и обычную программу ?