Member 14644231 Ответов: 2

Как это сделать Плесе кто нибудь поможет решить эту проблему


Считайте строку и печатайте ее в обратном порядке без сохранения в массиве с помощью рекурсивного метода
метод или нерекурсивный метод.
Описание:
Считайте строку от пользователя.
Не изменяя эту строку, выведите ее в обратном порядке.
Реализуйте как рекурсивные, так и нерекурсивные методы.
Pr-реквизиты:-
• Рекурсия
Цель: -
• Чтобы понять концепцию
◦ Рекурсия
Входные: -
Строка
Пример выполнения: -

Введите строку
: Привет, Мир
Обратная строка-это
: dlroW olleH
Примечание: без использования обратной функции и использования корпуса переключателя для этого используйте свою собственную функцию Не используйте strlen, обратную функцию или любую другую функцию создайте свою собственную функцию

Что я уже пробовал:

я попробовал это сделать
#include<stdio.h>
#include<string.h>
void reverse(char *);
int main()
{
    int option;
    char str[100];
    printf("Choose the option:\n");
    printf("1.Iterartive method\n2.Recursion method\n");
    scanf("%d", &option);
    switch (option)
    {
    case 1:
	    printf("Enter the string: ");
	    scanf("\n%[^\n]", str);

	    reverse(str);
	    printf("%s\n", str);
	    break;
    }
    return 0;

}
void reverse(char *str)
{
    int i,j;
    char ch;
    for (j = 0; *(str + 1) != '\0'; j++)
    {
	break;
    }
    printf("%d", j);
    for (i = 0; i < j/2; j++)
    {
	ch = *(str + i);
	*(str + i) = *(str + j - 1 - i);
	*(str + j - 1 - i) = ch;
    }
}

F-ES Sitecore

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

Member 14644231

хорошо мне нужна помощь я пробую свою собственную но застрял в функции отправьте свою электронную почту я поделюсь вами

2 Ответов

Рейтинг:
2

OriginalGriff

Спросите себя: что такое струна?
Это довольно просто: это последовательность символов, заканчивающаяся нулем.
Поэтому все, что вам нужно сделать, это найти нуль, подсчитав символы. Когда вы знаете длину, вы можете напечатать ее в простом цикле, работая в обратном направлении от символа с длиной индекса минус один, затем длиной минус два и так далее. Это нерекурсивный метод.

Рекурсивный метод еще проще (но серьезно ненужен):
Написать метод, который принимает строку и индекс. если символ в индексе не равен нулю ('\0'), то вызовите себя снова, передав массив и индекс плюс один.
Когда вы вернетесь, выведите символ в индексе.

Подумайте об этом: это действительно не сложная задача (но рекурсивная более сложная и очень ненужная)


CPallini

5.

Рейтинг:
0

Patrice T

Попробуйте заменить

for (j = 0; *(str + 1) != '\0'; j++)

с
for (j = 0; *(str + j + 1) != '\0'; j++)


Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

1.11 — отладка программы (пошаговое выполнение и останова) | выучить C++[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


CPallini

5.

Patrice T

Спасибо