Перевод кода с 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;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию sym, которая выполняет рекурсию для проверки симметрии строки
- В функции main устанавливаем локальную кодировку, выделяем память под строку и запрашиваем у пользователя ввод строки, номер первого элемента и номер последнего элемента для проверки
- Вызываем функцию sym с передачей первого и последнего элементов в качестве аргументов
- Выводим результат на экран
- Возвращаем 0, чтобы указать на успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д