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

Рекурсивные функции - C++

Восстановить пароль Регистрация
 
Джем
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 40
27.10.2013, 16:47     Рекурсивные функции #1
Плиз, помогите. Ошибку выдает, а исправить как - непонятно... Пока не очень понимаю рекурсивные функции...

Составить программу, используя рекурсивную функцию.
Массив S содержит 10 символов. Дана строка из 120 символов. Написать программу, включающую рекурсивную функцию,
которая удаляет из строки все символы, указанные в массиве S.
Строка при этом “сжимается”. За первое внешнее обращение к рекурсивной функции должны
удалятся все символы, равные S[0], за второе - все символы, равные S[1], и т.д.
Примечание. Имеется в виду, что в строке присутствует хотя бы один символ, равный S[i], i=0...9.

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 "stdafx.h"
#include <time.h>
#include <string>
#include <conio.h>
#include <stdio.h>
 
void del(char *str, char *s, int i)
{
    if (i>10) return;
    for (int j=0; str[j]; j++)
        if (str[j]==s[i])
            for (int k=j; str[k]; k++)
                str[k]=str[k+1];
    return del(str,s,i+1);
}
 
 
void _tmain(int argc, _TCHAR* argv[])
{
    int i;
 
    char a[10]={'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
    printf("\na[10] = %s\n", a);
    srand(time(NULL));
    char b[120];
    for (i=0; i<120; i++)  
        {
            b[i]=rand()%10;
        printf("\nb[120] = %s\n", b);
        }
    printf("\nFINAL = %s", del(a,b,10));
    getch();
}
Ошибки: printf: невозможно преобразовать параметр 2 из "void" в "..."
недопустимый неполный тип.

Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 16:47     Рекурсивные функции
Посмотрите здесь:

C++ рекурсивные функции
рекурсивные функции C++
C++ рекурсивные функции
C++ Рекурсивные функции
C++ рекурсивные функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.10.2013, 17:35     Рекурсивные функции #2
у тебя функция возвращает тип void , т.е. ничего, а ты пытаешься это самое ничего вывести на экран.
Сделай в самой функции вывод чего там тебе нужно, и просто вызывай функцию.
Джем
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 40
27.10.2013, 17:41  [ТС]     Рекурсивные функции #3
Цитата Сообщение от dzrkot Посмотреть сообщение
у тебя функция возвращает тип void , т.е. ничего, а ты пытаешься это самое ничего вывести на экран.
Сделай в самой функции вывод чего там тебе нужно, и просто вызывай функцию.
Хм, а кодом не покажете, пожалуйста?..
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.10.2013, 17:53     Рекурсивные функции #4
Цитата Сообщение от Джем Посмотреть сообщение
void del(char *str, char *s, int i)
вот функция
Цитата Сообщение от Джем Посмотреть сообщение
printf("\nFINAL = %s", del(a,b,10));
вот попытка вывести её
Джем
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 40
27.10.2013, 17:55  [ТС]     Рекурсивные функции #5
Цитата Сообщение от dzrkot Посмотреть сообщение
вот функция

вот попытка вывести её
Получается, эту попытку надо перенести в рекрсивную функцию?..
мне препод говорил, что выводить надо в основной программе
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.10.2013, 18:24     Рекурсивные функции #6
Цитата Сообщение от Джем Посмотреть сообщение
Получается, эту попытку надо перенести в рекрсивную функцию?..
мне препод говорил, что выводить надо в основной программе
зависит от того, как ты сделаешь, если через void, то только функцией, ну или через ссылки и указатели но не думай об этом) если напишешь функцию через int, то можешь так, как ты пытаешься через printf
Джем
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 40
27.10.2013, 18:53  [ТС]     Рекурсивные функции #7
dzrkot, доработала, вроде бы все верно, но теперь ругается, что функция должна возаращать значение. Даун я...

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
int del(char *str, char *s, int i)
{
    if (i>10) return;
    for (int j=0; str[j]; j++)
        if (str[j]==s[i])
            for (int k=j; str[k]; k++)
                str[k]=str[k+1];
    return del(str,s,i+1);
    
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int i;
 
    char a[10]={'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
    printf("\na[10] = %s\n", a);
    srand(time(NULL));
    char b[120];
    for (i=0; i<120; i++)  
        {b[i]=rand()%10;
        printf("\nb[120] = %s\n", b);
        }
    printf("\nFINAL = %s", del(a,b,0));
    getch();
}
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.10.2013, 19:09     Рекурсивные функции #8
Цитата Сообщение от Джем Посмотреть сообщение
if (i>10) return;
функция должна что-то типа int возвращать
Alex_Skripa
17 / 17 / 1
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 19:23     Рекурсивные функции #9
Попробуй функции тип string задать, может прокатит...
да и еще попробуй в функцию засунуть переменную типа string ,
ей присвой значение функции <переменная>=del(необходимые параметры)
и затем уже return <переменная>, ну как то так.

Добавлено через 6 минут
Да там еще нужно тогда у параметров типы поменять, или наоборот поменять тип у функции на *char также тип переменной ну итд по аналогии, но я думаю проще у параметров на string поменять тип
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
27.10.2013, 20:08     Рекурсивные функции #10
да я вот тоже в столовой сидел и подумал, какого дьявола там функция возвращает int...
я другому человеку параллельно делал задачу тоже на рекурсию, там был in, вот и не то сказал, прошу прощения))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2013, 21:33     Рекурсивные функции
Еще ссылки по теме:

C++ Рекурсивные и не рекурсивные функции (вычисление суммы всех натуральных чисел от 1 до n)
Рекурсивные функции C++
Рекурсивные функции C++

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

Или воспользуйтесь поиском по форуму:
Джем
1 / 1 / 0
Регистрация: 04.03.2013
Сообщений: 40
30.10.2013, 21:33  [ТС]     Рекурсивные функции #11
dzrkot, Alex_Skripa, ребят, я реально запуталась.
И так, и сяк делаю, не получается.
Yandex
Объявления
30.10.2013, 21:33     Рекурсивные функции
Ответ Создать тему
Опции темы

Текущее время: 12:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru