Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 01:28

Перевод кода в 1С

Автор AlexWitcher, 03 фев 2019, 16:19

0 Пользователей и 1 гость просматривают эту тему.

AlexWitcher

Ребят, добрый вечер, поможете перевести код с Pascal в 1С ?


program zada4a;

var
  x: string;
  i, j, n: byte;

begin
  writeln('Введите слово');
  readln(x);
  writeln;
  n := Length(x); //количество букв
{ Будем сравнивать i-й номер (нечетный) со
всеми меньшими j-ми нечетными номерами: }
  i := 3; //второй нечетный номер
  while i < n do
  begin
    j := 1; //первый нечетный номер
    while j < i - 2 do //j должно быть меньше i-2
    begin
      if x[i] = x[j] then //совпали
      begin
        write('Не различны.'); //совпали
        exit //сразу выходим (не имеет смысла дальше проверять)
      end;
      j := j + 2 //увеличиваем на 2 (берем только нечетные)
    end;
    i := i + 2 //увеличиваем на 2 (берем только нечетные)
  end;
  writeln('Различны')
end.


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

Вот я попытался сделать, но не работает

Перем x;
перем i;
перем j;
перем n;
ВвестиСтроку(x, "Введите строку:",,);
n = СтрДлина(x);
i = 3;
Пока (i < n) Цикл
j=1;
Пока (j < i - 2) Цикл
Если (x[i] = x[j]) Тогда
Сообщить("Совпали");
Возврат;
КонецЕсли;
j = j + 2;
КонецЦикла;
i = i + 2;
КонецЦикла;
Сообщить("Не совпали");

antoneus

Надо прям один в один перевести или так пойдет?

Стр = "";
Если ВвестиСтроку(Стр, "Введите строку") Тогда
МассивБукв = Новый Массив;
Различны = Истина;
Длина = СтрДлина(Стр);
Поз = 1;
Пока Поз < Длина Цикл
Буква = Сред(Стр, Поз, 1);
Если МассивБукв.Найти(Буква) <> Неопределено Тогда
Различны = Ложь;
Прервать;
КонецЕсли;
МассивБукв.Добавить(Буква);
Поз = Поз + 2;
КонецЦикла;

Сообщить(?(Различны, "Различны", "Не различны"))

КонецЕсли;

AlexWitcher

Цитата: antoneus от 03 фев 2019, 16:52
Надо прям один в один перевести или так пойдет?

Стр = "";
Если ВвестиСтроку(Стр, "Введите строку") Тогда
МассивБукв = Новый Массив;
Различны = Истина;
Длина = СтрДлина(Стр);
Поз = 1;
Пока Поз < Длина Цикл
Буква = Сред(Стр, Поз, 1);
Если МассивБукв.Найти(Буква) <> Неопределено Тогда
Различны = Ложь;
Прервать;
КонецЕсли;
МассивБукв.Добавить(Буква);
Поз = Поз + 2;
КонецЦикла;

Сообщить(?(Различны, "Различны", "Не различны"))

КонецЕсли;

Пойдет, причем более чем, а еще вопрос, что нужно изменить, чтобы он проверял четные буквы?

antoneus


AlexWitcher

Цитата: antoneus от 03 фев 2019, 17:00
Поз = 2
Большое спасибо за помощь! :zebzdr:
Добавлено: 03 фев 2019, 17:15


Цитата: antoneus от 03 фев 2019, 17:00
Поз = 2
Если брать по нечетным, когда пишу слова "МАМА", выводит не различны, а когда напишу "МАМАПА" - тоже выводит не различны, не знаете, как пофиксить? Или это уже была ошибка в паскаль коде?
Добавлено: 03 фев 2019, 17:17


Цитата: AlexWitcher от 03 фев 2019, 17:04
Цитата: antoneus от 03 фев 2019, 17:00
Поз = 2
Большое спасибо за помощь! :zebzdr:
Добавлено: 03 фев 2019, 17:15


Цитата: antoneus от 03 фев 2019, 17:00
Поз = 2
Если брать по нечетным, когда пишу слова "МАМА", выводит не различны, а когда напишу "МАМАПА" - тоже выводит не различны, не знаете, как пофиксить? Или это уже была ошибка в паскаль коде?
И при четные, тоже странная ситуация, пишу "МАМА" - пишет различны, "МАМАПА" - не различны

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск