Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
16:08
3963
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2

Авторзнающие паскаль!
необходимо написать программу, которая бы выводила из строки вводимой с клавиатуры все перестановки ее с соседними буквами.
то есть из слова кот должно вывести
кот
лот
лпт
лпу
лпс
лну
лнс
ну и так далее
то есть каждая буква должна смениться на соседнюю - предыдущую или следующую.
var s:string;
procedure change(i:integer);
begin
s[i]:=chr(ord(s[i])-1);
if i<>length(s) then change(i+1) else begin
writeln (s);
end;
s[i]:=chr(ord(s[i])+1);
if i<>length(s) then change(i+1) else begin
writeln (s);
end;
end;
begin
readln (s);
change (1);
end.

Вот моя идея, но выводится не всё

йнс
йнт
йос
йот
кнс
кнт
кос
кот
Если слово обязательно из 3-х букв, то тройной цикл. Если произвольной длины, я бы рекурсию делал.
для FireSwarm:
я тоже рекурсию делал но не выходит
Это самое неадекватное в ФВТ что я видел.
для Zael_Hell:
фвт не только для взаимообщения быдло-троллей, знаешь
фвт ещё и для взаимопомощи быдло-троллей, знаешь
Где слово из 3 букв которое на заборе пишут!
для Крылатая:
нечего сказать, не надо зафлуживать. я спрашивал, у тех кто реально знает сабж
для Большая Злюка:
нигде, но я тебе разрешаю написать его себе на лбу и свалить из топика
для Маг-Лесник:
фвт не только для взаимообщения быдло-троллей, знаешь
Я вооще не тот и не другой знаешь ли. Я флудер!

И да я знаю паскаль на уровне 7-ого класса, но тут явно уровень выше.
нигде, но я тебе разрешаю написать его себе на лбу и свалить из топикао, господин!
Чуток доработал. но вывод все равно не тот.

var s:string;
procedure change(i:integer);
begin
s[i]:=chr(ord(s[i])-1);
writeln(s);
if i<>length(s) then change(i+1);
s[i]:=chr(ord(s[i])+1);
writeln(s);
if i<>length(s) then change(i+1);
end;
begin
readln (s);
change (1);
end.

Окно вывода:
йот
йнт
йнс
йнт
йот
йос
йот
кот
кнт
кнс
кнт
кот
кос
кот
для Маг-Лесник:
Попробуй простой способ.
Организуем метод. Он принимает слово и число. Число - номер изменяемой буквы. Если буква последняя, то мы выводим слово три раза, меняя эту букву. Если нет, то мы три раза вызываем этот метод, передавая туда слово с изменённой буквой и указателем на следующую букву.
Код сейчас не напишу, негде. А на форуме не удобно.
Ну я же говорю не адекватное. Я напишу так а ты думай.


А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я.


Это просто не правдо ли?
Тема про сиськи ?
не понял задачу. Вот есть "кот". Задача - все перестановки с соседними буквами. С соседними по алфавиту? Переставлять сразу все буквы надо сразу? То есть из "кот" должно получится "ймс"? Или сначала 1-ю, 2 не меняем, потом 2-ю, 1 и 3 не меняем или как? Можно подробней?
Паскаль же для школьников 6-го класса. Вот Delfi для настоящих мужиков. Тема ни о чём.
а что, Delphi чем то отличается от старого доброго Паскаля? Только формочками. Объекты ведь были уже в Паскале, ЕМНИП
Кароч, на джаве это вотаквот:
void fun(String s) {
fun(s, 0);
}

void fun(String s, int i) {

char ch = s.charAt(i);

if (s.length() == i + 1) {
System.out.println(s.substring(0, i) + (char)(ch - 1));
System.out.println(s.substring(0, i) + (char)(ch));
System.out.println(s.substring(0, i) + (char)(ch + 1));
} else {

if (i == 0) {
fun((char)(ch - 1) + s.substring(i + 1), i + 1);
fun((char)(ch) + s.substring(i + 1), i + 1);
fun((char)(ch + 1) + s.substring(i + 1), i + 1);
} else {
fun(s.substring(0, i) + (char)(ch - 1) + s.substring(i + 1), i + 1);
fun(s.substring(0, i) + (char)(ch) + s.substring(i + 1), i + 1);
fun(s.substring(0, i) + (char)(ch + 1) + s.substring(i + 1), i + 1);
}
}
}

Сейчас попробуем на паскаль перевести.
procedure TForm1.fun_main(ss: string);
begin
fun(ss, 1);
end;



procedure TForm1.fun(s: string; i: integer);
var ch: string;
begin
ch:= Copy(s, i, 1);

if Length(s) = i then
begin
lbl2.Caption:= lbl2.Caption + Copy(s, 1, i - 1) + Chr((Ord(ch[1]) - 1));
lbl2.Caption:= lbl2.Caption + #10#13;
lbl2.Caption:= lbl2.Caption + Copy(s, 1, i - 1) + ch;
lbl2.Caption:= lbl2.Caption + #10#13;
lbl2.Caption:= lbl2.Caption + Copy(s, 1, i - 1) + Chr((Ord(ch[1]) + 1));
lbl2.Caption:= lbl2.Caption + #10#13;
end
else if (i = 1) then
begin
fun(Chr((Ord(ch[1]) - 1)) + Copy(s, i + 1, 100), i + 1);
fun(ch + Copy(s, i + 1, 100), i + 1);
fun(Chr((Ord(ch[1]) + 1)) + Copy(s, i + 1, 100), i + 1);
end
else
begin
fun(Copy(s, 1, i - 1) + Chr((Ord(ch[1]) - 1)) + Copy(s, i + 1, 100), i + 1);
fun(Copy(s, 1, i - 1) + ch + Copy(s, i + 1, 100), i + 1);
fun(Copy(s, 1, i - 1) + Chr((Ord(ch[1]) + 1)) + Copy(s, i + 1, 100), i + 1);
end;
end;

Только вывод в консоль самостоятельно сделай.
1|2
К списку тем
2007-2025, онлайн игры HeroesWM