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

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

Войти
Регистрация
Восстановить пароль
 
Maxmadknight
1 / 1 / 0
Регистрация: 16.06.2011
Сообщений: 16
#1

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

17.07.2011, 23:47. Просмотров 749. Ответов 8
Метки нет (Все метки)

в функции мейн обьявить двумерный массив размером A[m][n] заполнить случайным образом 1 и 2, вывести масив на экран
написать рекурсивную функцию которая в этом массиве все 1 заменит 0 после работы функции вывести на экран
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2011, 23:47     Рекурсивные функции
Посмотрите здесь:

рекурсивные функции - C++
Дано натуральные числа n,m ; найти НОД(наибольший общий делитель) . Использовать программу, которая содержит рекурсивную процедуру...

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

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

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

рекурсивные функции - C++
помогите ррешить!!!!! на С++ Записать алгоритм Евклида вычисления наибольшего общего делителя (НОД) как рекурсивную функцию. Алгоритм...

Рекурсивные функции. - C++
с самой функцией нет проблем проблема в самой программе задание звучит так Для заданных двух натуральных числа m и n найти НОД(m, n) и...

Рекурсивные функции - C++
Мне нужно решить задачу с факториалом с использованием рекурсивной функции.Я начал её делать но что то не получается #include <stdio.h> ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Akvarium
2 / 2 / 0
Регистрация: 17.07.2011
Сообщений: 20
17.07.2011, 23:58     Рекурсивные функции #2
Maxmadknight, а где вопрос? Тут есть только описание задачи. Похоже ты хочешь что бы за тебя написали программу? Или напиши хоть какого размера массив. Или ты хочешь чтоб массив заполнился случайными числами аж до самого MAX_PATH? Это реально, но не позавидую тому, что будет читать числа с экрана.
Maxmadknight
1 / 1 / 0
Регистрация: 16.06.2011
Сообщений: 16
18.07.2011, 00:10  [ТС]     Рекурсивные функции #3
вот примерное начало
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
#include <iostream>
#include <Windows.h>
#include <ctime>
 
using namespace std;
 
int recurs(int[],int,int)
{
    
}
 
int main()
{
    srand(unsigned(time(NULL)));
    int recurs[5][6]={0};
    for (int i=0;i<5;i++)
        for (int j=0;j<6;j++)
        {
            recurs[i][j]=rand()%(2-1+1)+1;
            cout<<recurs[i][j]<<' ';
            if (j==5)
                cout<<endl;
        }
 
    system("pause");
    return 0;
}
Добавлено через 5 минут
извиняюсь но только пришел домой а завтра сдавать....сейчас в процессе....
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
18.07.2011, 00:13     Рекурсивные функции #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void func (int **MAS, const int Row, const int Column, int i, int j) {
    if ((i == Row - 1) && (j == Column - 1)) 
        return;
    
    if (MAS[i][j] == 1)
        MAS[i][j] = 0;
    
    if (i == Row - 1)
        func (MAS, Row, Column, 0, ++j);
    else 
        func (MAS, Row, Column, ++i, j);
}
 
// вызов
func (MAS, Row, Column, 0, 0);
Akvarium
2 / 2 / 0
Регистрация: 17.07.2011
Сообщений: 20
18.07.2011, 00:16     Рекурсивные функции #5
Сразу по ошибкам (ты это пробывал в компилятор запихнуть вообще?):
1.
int recurs(int[],int,int)
Назови переменные.
Например
C++
1
int recurs(int[] a,int b,int c)
//Зачем тут вообще лишняя функция, если можно обойтись циклом?
2.
int recurs[5][6]={0};
Ты указываешь точный адрес, а не заполняешь весь массив. Поэтому тут {и } не нужны.
3.
Не совсем ошибка
(2-1+1)+1
Зачем так длинно? В результате будет одно и тоже число - 1.

Если я правильно понял задание, то дальше возьми тот же цикл что и заполнения и сравнивай if'ами. При необходимости заменяй (или что проще, добавь проверку в этот же).
Maxmadknight
1 / 1 / 0
Регистрация: 16.06.2011
Сообщений: 16
18.07.2011, 00:28  [ТС]     Рекурсивные функции #6
Akvarium, функцию с типом int я поставил для того что бы я смог вернуть оттуда значения что с войдом не получится,+ ошибку с не объявленным массивом в функции исправил через секунду когда запостил...
изначально заполнил массив 0 (говорили что полезный навык на будущее)
(2-1+1)+1 - в принципе да но пока делаю так по шаблону после того как оно запустится буду резать и оптимизировать =Р

Добавлено через 2 минуты
Как передать arr[x][y] в массив а то я так и не понял....
error C2664: func: невозможно преобразовать параметр 1 из "int [5][6]" в "int **"
neske
1474 / 841 / 74
Регистрация: 26.03.2010
Сообщений: 2,889
18.07.2011, 00:33     Рекурсивные функции #7
Создайте массив динамически.
Maxmadknight
1 / 1 / 0
Регистрация: 16.06.2011
Сообщений: 16
18.07.2011, 00:37  [ТС]     Рекурсивные функции #8
Что есть динамический массив....Эту тему я еще не проходил =(((...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2011, 01:28     Рекурсивные функции
Еще ссылки по теме:

рекурсивные функции - C++
Величайшие умы форума помагите пожалуйсто) Задание:Используя рекурсивную функцию, найдите n-й член арифметической прогрессии с...

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

рекурсивные функции - C++
1. Найти НОД (наибольший общий делитель) двух натуральных чисел. 2. В одномерном массиве, состоящем из n целых элементов, вычислить номер...

Рекурсивные функции в классе - C++
Я написал рабочий класс для работы с бинарным деревом поиска и в нём имеется много рекурсивных методов (по заданию). Из-за этого эти...

частично-рекурсивные функции - C++
Помогите, пожалуйста, написать программу на с++, используя частично-рекурсивную функцию f(x)=2x+1.


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
18.07.2011, 01:28     Рекурсивные функции #9
Цитата Сообщение от Maxmadknight Посмотреть сообщение
Что есть динамический массив
А вот, что
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
    
void fill_row(int * row, size_t size){
    if ( size ){
        *row = 1 + ( rand() & 1 );
        fill_row(row + 1, size - 1);
    }
}
 
void fill_matrix(int ** matrix, size_t rows, size_t columns){
    if ( rows ){
        fill_row(*matrix, columns);
        fill_matrix(matrix + 1, rows - 1, columns);
    }
}
 
void no_ones_in_row(int * row, size_t size){
    if ( size ){
        *row &= ~1;
        no_ones_in_row(row + 1, size - 1);
    }
}
 
void no_ones_in_matrix(int ** matrix, size_t rows, size_t columns){
    if ( rows ){
        no_ones_in_row(*matrix, columns);
        no_ones_in_matrix(matrix + 1, rows - 1, columns);
    }
}
 
void dump_row(int * row, size_t size){
    if ( size ){
        printf("%2d", *row);
        dump_row(row + 1, size - 1);
    }
    else {
        printf("\n");
    }
}
 
void dump_matrix(int ** matrix, size_t rows, size_t columns){
    if ( rows ){
        dump_row(*matrix, columns);
        dump_matrix(matrix + 1, rows - 1, columns);
    }
}
 
int main(void){
    int ** matrix;
    size_t rows, columns, i;
    
    printf("Rows: ");
    scanf("%u", &rows);
    printf("Columns: ");
    scanf("%u", &columns);
    
    if ( ! ( matrix = malloc(sizeof(int*) * rows) ) ){
        perror("malloc");
        exit(1);
    }
    for ( i = 0; i < rows; ++i ){
        if ( ! ( matrix[i] = malloc(sizeof(int) * columns) ) ){
            perror("malloc");
            exit(1);
        }
    }
    
    srand(time(NULL));
    
    fill_matrix(matrix, rows, columns);
    printf("Before:\n");
    dump_matrix(matrix, rows, columns);
    no_ones_in_matrix(matrix, rows, columns);
    printf("After:\n");
    dump_matrix(matrix, rows, columns);
    
    for ( i = 0; i < rows; ++i )
        free(matrix[i]);
    free(matrix);
    
    exit(0);
}
Код
$ ./no_ones
Rows: 5
Columns: 10
Before:
 2 2 2 1 2 1 2 2 2 1
 2 2 1 2 2 1 1 1 1 1
 2 1 1 1 1 1 2 2 1 1
 1 2 2 1 2 2 1 2 2 1
 2 2 2 1 2 2 1 1 1 1
After:
 2 2 2 0 2 0 2 2 2 0
 2 2 0 2 2 0 0 0 0 0
 2 0 0 0 0 0 2 2 0 0
 0 2 2 0 2 2 0 2 2 0
 2 2 2 0 2 2 0 0 0 0
Yandex
Объявления
18.07.2011, 01:28     Рекурсивные функции
Ответ Создать тему
Опции темы

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