Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 17.03.2017
Сообщений: 20
1

Получить из одной строки другую путем заданных преобразований (программа уходит в бесконечный цикл)

17.03.2017, 21:41. Показов 1038. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
По условию дано две строчки
Допустим B и ABBA, посредством поочередных действий, это
1) прибавление в конец строчки A
2) и полный переворт и прибавление в конец строчки B
У меня программа уходит в луп, не знаю из-за чего, очень сильно прошу исправить
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program zadacha6;
var a,c,d:string;
function perevorot(a:string):string;
var i: integer;
b:string;
begin
for i:=length(a) downto 1 do 
b:=b+a[i];
write(b);
end;
begin
readln(a);
readln(c);
while a<>c do 
begin
a:=a+'A';
a:=perevorot(a); // Как я понял на данном моменте начинает бесконечна спамить AAAAA в консоль, 
end;                  
 
write(A);
 
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2017, 21:41
Ответы с готовыми решениями:

Метод Ньютона - программа уходит в бесконечный цикл
Подскажите где туплю, уже недели две над этой прогой сижу, а оно всё не работает хоть убей.......

Таймер-счетчик в МК51: программа уходит в бесконечный цикл
Доброго времени суток. Набросал код по таймеру, но не знаю как проверить его работу. Прогоняя через...

Программа уходит в бесконечный цикл при использовании while и cin
Суть такова, хочу добавлять строки в вектор пока пользователь не введет пустую сроку. Но после ее...

При вводе не числа, программа уходит в бесконечный цикл
Помогите исправить, даже не хнаю как исправить... Если написать не число, а букву допустим, так...

4
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
17.03.2017, 21:50 2
B -> BA -> ABA -> ABAB <> ABBA - вот и ответ. Условие прошляпяпили - теперь так и будет крутить и прибавлять

Добавлено через 4 минуты
Да и B вы нигде не добавляете

Добавлено через 46 секунд
Функция ничего не возвращает
0
0 / 0 / 1
Регистрация: 17.03.2017
Сообщений: 20
17.03.2017, 21:53  [ТС] 3
Цитата Сообщение от Hitoku Посмотреть сообщение
B -> BA -> ABA -> ABAB <> ABBA - вот и ответ.
Ага, передлал под B -> BA -> ABB -> ABBA = ABBA, только как мне модифицировать мой цикл, чтобы после трех действий выходило из цикла.
Цитата Сообщение от paronroman Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
begin
a:=a+'A';
if a=c then break;
a:=perevorot(a); // Как я понял на данном моменте начинает бесконечна спамить AAAAA в консоль, 
if a=c then break;
a:=a+'B';
if a=c then break;
end;
Но все равно уходит в цикл :C
Цитата Сообщение от Hitoku Посмотреть сообщение
Функция ничего не возвращает
Функция переворачивает весь текст под переменной a
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
17.03.2017, 21:53 4
Лучший ответ Сообщение было отмечено paronroman как решение

Решение

программа уходит в луп по двум причинам:
1) функция не возвращает результат
2) из строки B нельзя получить ABBA указанными последовательными преобразованиями.

Первую ошибку исправить просто:
Pascal
1
2
3
4
5
6
7
8
9
function perevorot(a: string): string;
var
  i: integer;
  b: string;
begin
  for i := length(a) downto 1 do 
    b := b + a[i];
  result := b;
end;
, или вообще
Pascal
1
2
3
4
function perevorot(a: string): string;
begin
  result := ReverseString(a)
end;
, вторую - еще проще: нужно проверять не только равенство строк A и C, но еще и то, что длина строки A не превышает длину строки C. Как только она начнет превышать - цикл можно заканчивать, все равно уже дальше крутить его бесполезно.
1
0 / 0 / 1
Регистрация: 17.03.2017
Сообщений: 20
17.03.2017, 21:56  [ТС] 5
Большое спасибо @Volvo от горешкольника)
Цитата Сообщение от volvo Посмотреть сообщение
программа уходит в луп по двум причинам:
0
17.03.2017, 21:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2017, 21:56
Помогаю со студенческими работами здесь

Объяснить почему программа уходит в бесконечный цикл (связные списки)
Всем привет. Собрал связанный список, он работает, но при вводе типа char, программа уходит в...

Передача массивов в функцию: почему программа уходит в бесконечный цикл?
Всем здравствуйте, спасибо, что проявили к моей теме интерес. у меня вопрос и даже не один. для...

Найти и исправить ошибки в коде (программа уходит в бесконечный цикл)
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int n,k,s; float...

Объяснить почему при заполнении матрицы программа уходит в бесконечный цикл
#include &lt;iostream&gt; using namespace std; int main() { int mas; for (int i = 0; i &lt; 3;) {...

Цикл do/while. Страница в браузере, уходит в бесконечный цикл и ничего не выводит.
Помогите, страница в браузере, как я понял, уходит в бесконечный цикл и ничего не выводит. Если...

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru