Перевод кода с Pascal на Си или С++ (рекурсия) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите, пожалуйста, перевести код с Pascal на С++, либо на Си. Задание состояло в следующем: «Описать рекурсивную логическую функцию sym(s,i,j), проверяющую, является ли симметричной часть строки s, начинающаяся i-ым и кончающаяся j-ым её элементами».
function sym(var s: string; i, j: integer): boolean;
begin
  if i > j then
    Result := True
  else
    Result := (s[i] = s[j]) and sym(s, i+1, j-1);
end;
 
var
  s: string;
  i, j: integer;
begin
  write('Введите строку: '); readln(s);
  write('Введите номер элемента, с которого нужно проверить часть строки: '); readln(i);
  write('Введите номер элемента, которым заканчивается проверяемая часть строки: '); readln(j);
  writeln('Часть строки ', not sym(s, i, j) ? 'не ' : '', 'симметрична.')
end.
Благодарю.

Решение задачи: «Перевод кода с Pascal на Си или С++ (рекурсия)»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
bool sym(char * s, int i, int j){
 
    if (i > j) return true;
    else{
        if(s[i] == s[j]) sym(s, i+1, j-1);
        else return false;
    }
 
}
 
int main(){
    
    setlocale(LC_ALL, "rus");
    int i=0, j=0, n = 20;
    char * s = (char*) malloc(n*sizeof(char));
    printf("Введите строку: ");
    scanf("%s", s);
    printf("Введите номер элемента, с которого нужно проверить часть строки: ");
    scanf("%d", &i);
    printf("Введите номер элемента, которым заканчивается проверяемая часть строки: ");
    scanf("%d", &j);
    printf("\nЧасть строки ");
    if (sym(*&s, i, j)) printf("не");
    printf("симметрична.");
 
    return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем функцию sym, которая выполняет рекурсию для проверки симметрии строки
  3. В функции main устанавливаем локальную кодировку, выделяем память под строку и запрашиваем у пользователя ввод строки, номер первого элемента и номер последнего элемента для проверки
  4. Вызываем функцию sym с передачей первого и последнего элементов в качестве аргументов
  5. Выводим результат на экран
  6. Возвращаем 0, чтобы указать на успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5