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

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

Форум «Всё о Паскале» _ Задачи _ написать слово наоборот

Автор: maksimla 25.01.2009 17:49

Напишите програму которая печатало каждое слово (слово небольше 20 симболов между словом нету симболов пробела) с разу чтобы печатало это слово наоборот (наоборот слово печатается во время ввода слова). Слова один от другого отделяются пробелом, читка слова завершается нажав клавешу вход.

ТРЕБОВАНИЕ Чтобы написать програму в ней должно напишить рекурсивную процедуру. Нельзя использовать структурных и динамических типов данных.

пример
As sA rasau uasar programa. .amargorp :) ):

Я даже сперва незнаю как так чтобы ввести букву и ненажимать enter напичаталась бы буква сразу.Как это?

Автор: volvo 25.01.2009 18:05

Цитата
незнаю как так чтобы ввести букву и ненажимать enter напичаталась бы буква сразу.Как это?
Очень просто: readkey для этого и существует...
uses crt;

function print_reverse: char;
var ch: char;
begin
ch := readkey;
if ch in [#32, #13] then print_reverse := ch
else begin
write(ch);
print_reverse := print_reverse;
end;

if ch <> #13 then write(ch);
end;

var symbol: char;
begin
repeat
symbol := print_reverse; write(symbol)
until symbol = #13;
writeln;
end.
Как работает - разберешься?

Автор: klem4 25.01.2009 18:06

Ну вот тебе набросок:

uses crt;

function revers(const s: string): string;
var
i: byte; rs: string;
begin
rs := '';
for i := 1 to length(s) do rs := rs + s[length(s) - i + 1];
revers := rs;
end;

procedure input(curr_str: string);
var
ch: char;
begin
clrscr;
writeln(curr_str, ' ' + revers(curr_str));
ch := readkey;
if ch <> #13 then begin
curr_str := curr_str + ch;
input(curr_str);
end;
end;

begin
input('');
end.

Автор: volvo 25.01.2009 18:15

Цитата
Ну вот тебе набросок:
Это не то, что требовалось по заданию. Задачи "разворачивать" слова в предложении не было, надо было только развернуть буквы...

Автор: maksimla 25.01.2009 18:22

можете обеснение написать мне как это работает все то кажется неразберусь я сам

uses crt;

function print_reverse: char;
var ch: char;
begin
ch := readkey;
if ch in [#32, #13] then print_reverse := ch
else begin
write(ch);
print_reverse := print_reverse;
end;

if ch <> #13 then write(ch);
end;

var symbol: char;
begin
repeat
symbol := print_reverse; write(symbol)
until symbol = #13;
writeln;
end.


для чего символы #32, #13 и еще когда ввожу первую букву то правильно выводит потом другую букву ввожу и тогда выводит ту букву которую ввел плюс улывку зачем и почему?

Автор: klem4 25.01.2009 18:28

volvo, ага точно ...

Автор: volvo 25.01.2009 18:36

Цитата
для чего символы #32, #13 и еще когда ввожу первую букву то правильно выводит потом другую букву ввожу и тогда выводит ту букву которую ввел плюс улывку зачем и почему?
Чего там тебе выводит? Какую улыбку? Ты просто печатай слова, и разделяй их пробелами... Тогда по нажатию каждого пробела введенное раньше слово будет "переворачиваться"...

#32 - код пробела, #13 - код Enter-а...

Автор: maksimla 25.01.2009 19:04

вот что выбивает у меня тут


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: volvo 25.01.2009 19:30

Ну, а у меня вот что получается:
Прикрепленное изображение
и что?

Какой компилятор у тебя вообще?

Автор: maksimla 25.01.2009 20:52

да уж странно у меня FPS на нем только одну букву водишь и все сразу вылитает буква а слово нельзя написать а на турбо паскале попробовал все хорошо идет странно. вот отсуда я скачал FPS литовский http://ims.mii.lt/fps/en/down/index.html может у них ошибка была незнаю я сечас заного попробую скачать и заинсталировать и что тогда будет странно да и только.


Вот скачал заинсталировал и тоже самое что и было выбивает по одной букве странно.

Автор: volvo 25.01.2009 21:23

Цитата
у меня FPS на нем только одну букву водишь и все сразу вылитает буква а слово нельзя написать
Я не знаю, что такое FPS, возможно имеется в виду какая-то версия FPC, так и на FPC это работает (я на нем и набросал программу, только потом на Турбо проверил):
Прикрепленное изображение

Цитата
я скачал FPS литовский
Возможно в нем что-то подкручено, я пользуюсь тем, что скачал с официального сайта: http://freepascal.org/download.var

Попробуй выставить режим совместимости с TP
{$mode TP}

самой первой строкой, еще перед Uses crt.

Автор: maksimla 25.01.2009 21:30

ясно спасибо надо мне будет сообщить об этом своему преподователю в интернете

Автор: maksimla 25.01.2009 21:52

все хорошо сечас вставил

Код
{$mode TP}

и все работает сечас ура
а что вы вставили и откуда взяли да и как?