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

Подскажите в чем ошибка в моей программе (рекурсия) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Стандартные функции ввода/вывода языка Си http://www.cyberforum.ru/cpp-beginners/thread941907.html
Приветствую всех.У меня проблема.Я решил попробовать функции ввода/вывода в стиле Си.Написал прогу которая должна выводить сумму a и b,но прога постоянно выводит 12345000.В чем моя ошибка?Заранее благодарен. #include "stdafx.h" #include <iostream> #include <conio.h> #include <stdio.h> using namespace std; int main() { setlocale(LC_ALL,"Russian");
C++ Вызов конструктора копий Почему из строк 186-191 вызывается конструктор копий 83-91? #include "stdafx.h" #define DEBUG #define SHOW_INVARIANTS #include <iostream> #include <string.h> using namespace std; #ifndef DEBUG #define ASSERT(x) http://www.cyberforum.ru/cpp-beginners/thread941906.html
Один раз, - нет! Второй, - да! C++
Почему в 77-ой строке не осуществляется вызов оператора индексирования, а в 88-ой, - осуществляется (135-145)? #include "stdafx.h" #define DEBUG #define SHOW_INVARIANTS #include <iostream> #include <string.h> using namespace std; #ifndef DEBUG #define ASSERT(x)
Геттер и сеттер C++
Здравствуйте! Не подскажете, возможно ли создать такой класс для реализации следующих потомков: class foo()//необходимо реализовать {}; class a : public foo { /////////////// int x; int y;
C++ класс наследник http://www.cyberforum.ru/cpp-beginners/thread941894.html
Добрый день! Интересует вопрос отношения между parent-классом и child'ом. Допустим в protected parent класса описаны какие-то методы, а класс наследник имеет доступ к protected parent'a, нужно ли в наследнике заново перечислять все методы? или можно брать некоторые методы прям с парента? Допустим: class Parent { protected: int method 1(); int method 2(); }
C++ Вывести двоичное число в обратном порядке Вывести двоичное число в обратном порядке ???????/// while(number!=0) { res=number%2; number/=secondNum; cout<<res<<" "; } подробнее

Показать сообщение отдельно
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2013, 03:07     Подскажите в чем ошибка в моей программе (рекурсия)
Цитата Сообщение от Nikko12 Посмотреть сообщение
меня интересует ошибка в моей программе.
Их много.
При последнем заходе в функцию, здесь будет выход за границу строки:
C++
1
char *p=&t[i];//создаем указатель "р", изначально на нулевой элемент строки t
При чтении в string, cin >> не добавляет '\0', поэтому такая проверка не сработает:
C++
1
while(*p!='\0')// пока не дойдем до конца строки
Цикл while() здесь не нужен, рекурсия сама по себе цикл.
Не нужно передавать в функцию копии строк, и не нужно возвращать из функции копию строки, иначе, при выходе из рекурсии, строка начнёт уменьшаться.
Если так переписать, то будет работать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int i = 0;
void fn_strcat(string &s, string &t)
{
    if (i == t.size()) return; // пока не дойдем до конца строки
    char *p = &t[i]; //создаем указатель "р", изначально на нулевой элемент строки t
    s = s + *p++; //сначало к строке s прибавляем p и потом увеличиваем р
    ++i;
    fn_strcat(s, t); //рекурсия
 }
 
int main()
{
    string s, t;
    cin >> s >> t;
    fn_strcat(s, t);
    cout << s << endl;
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru