Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
#1

Указатель и рекурсия - C++

30.10.2012, 19:58. Просмотров 836. Ответов 1
Метки нет (Все метки)

Подскажите почему не работает? (логика работы программы изложена в комментах к ней)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <windows.h>
#include <string.h>
#include <stdio.h>
using namespace std;
 
void reverse(char *s);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char *s, *q;
    char str[] = "Это";
    s = str;
    q = str;
    while(*s)
    {
       printf("%s\n", s);
       s++;
    }
    printf("%s\n", q);
    reverse(s, q); // передаю два указателя: 1). s указывает на конец строки. 2). q указывает на начало строки
    return 0;
}
 
void reverse(char *s, char *q) 
{
    printf("%s\n", s);
    if(*s!=*q) reverse(s-1); // тут у нас если значение указателя s не равно значению указателя q, то у нас будет делаться рекурсия и в определённый момент q==s и тогда у нас будет return. Почему собственно код не работает? Вроде всё правильно.
    else return;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2012, 19:58     Указатель и рекурсия
Посмотрите здесь:

Рекурсия и указатель - C++
Добрый день. Допустим, у меня есть указатель А. И равен он, допустим, 32. Вот есть у меня функция, которая чуток бегает по другим...

Освободить указатель на указатель - C++
class Interface { }; class Test : public Interface { }; void main() { Interface** s = new Interface*; for (int i =...

Про указатель *, указатель на указатель **, и про new - C++
#include &quot;stdafx.h&quot; class neuro { public: double *inputs; int inputs_count; neuro(int uc, double ii ) { ...

Указатель на указатель - C++
Всем доброго времени! Совсем недавно начал использовать технику двойных указателей типа Obj ** obj, поэтому путаюсь. Для удобного...

указатель - C++
собственно смысл ссылки я понял, грубо говоря передача в функцию адреса переменной что бы функция меняла не копию, а сам передаваемый...

указатель - C++
вычислить одномерную массив через указатель Добавлено через 1 минуту вычислить одномерную массив через указатель

Указатель на указатель - C++
Есть задача: Дана динамическая строка размер массива символов которой точно соответствует строке. написать функцию которая добавляет...

Указатель - C++
Имеется код: // header #ifndef DMA_H_ #define DMA_H_ #include &lt;iostream&gt; class abs { private:

Указатель на указатель - C++
Чем отличаются указатели на указатель от ссылки на указатель? Встретилась программа для работы со списками. В ней есть функция Insert....

Указатель - C++
const int MAX = 5; void f(double*); int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL, &quot;Russian&quot;); double array = { 10.0,...

Указатель this - C++
Каждый объект поддерживает указатель на самого себя - называемый указателем this - который является неявным аргументом во всех ссылках на...

указатель - C++
ввод: (1&lt;=n&lt;=100) вводим n вывод: Сумма элементов до максимума... Input Output 8 1 9 1 -1 -1 9 1 1 0


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
30.10.2012, 20:11     Указатель и рекурсия #2
В седьмой строку не проавильно объявил.

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
 
void reverse(char *s, char *q);
 
int main()
{
    char *s, *q;
    char str[] = "Это";
    s = str;
    q = str;
    while(*s)
    {
        printf("%s\n", s);
        s++;
    }
    printf("%s\n", q);
    reverse(s, q); // передаю два указателя: 1). s указывает на конец строки. 2). q указывает на начало строки
    return 0;
}
 
void reverse(char *s, char *q)
{
    printf("%s\n", s);
    if(*s!=*q) reverse(s-1, q); // тут у нас если значение указателя s не равно значению указателя q, то у нас будет делаться рекурсия и в определённый момент q==s и тогда у нас будет return. Почему собственно код не работает? Вроде всё правильно.
    else return;
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru