Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Maxmadknight
1 / 1 / 0
Регистрация: 16.06.2011
Сообщений: 16
#1

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

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

в функции мейн обьявить двумерный массив размером A[m][n] заполнить случайным образом 1 и 2, вывести масив на экран
написать рекурсивную функцию которая в этом массиве все 1 заменит 0 после работы функции вывести на экран
http://www.cyberforum.ru/cpp-beginners/thread856554.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2011, 23:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рекурсивные функции (C++):

Рекурсивные функции
Задание: вычислить функцию у, х задается с клавиатуры помогите с кодом...

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

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

Рекурсивные функции.
с самой функцией нет проблем проблема в самой программе задание звучит так ...

рекурсивные функции
помогите ррешить!!!!! на С++ Записать алгоритм Евклида вычисления наибольшего...

8
Akvarium
2 / 2 / 0
Регистрация: 17.07.2011
Сообщений: 20
17.07.2011, 23:58 #2
Maxmadknight, а где вопрос? Тут есть только описание задачи. Похоже ты хочешь что бы за тебя написали программу? Или напиши хоть какого размера массив. Или ты хочешь чтоб массив заполнился случайными числами аж до самого MAX_PATH? Это реально, но не позавидую тому, что будет читать числа с экрана.
0
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 минут
извиняюсь но только пришел домой а завтра сдавать....сейчас в процессе....
0
neske
1526 / 893 / 191
Регистрация: 26.03.2010
Сообщений: 3,073
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);
1
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'ами. При необходимости заменяй (или что проще, добавь проверку в этот же).
0
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 **"
0
neske
1526 / 893 / 191
Регистрация: 26.03.2010
Сообщений: 3,073
18.07.2011, 00:33 #7
Создайте массив динамически.
0
Maxmadknight
1 / 1 / 0
Регистрация: 16.06.2011
Сообщений: 16
18.07.2011, 00:37  [ТС] #8
Что есть динамический массив....Эту тему я еще не проходил =(((...
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
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
0
18.07.2011, 01:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2011, 01:28
Привет! Вот еще темы с решениями:

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

рекурсивные функции
Дано натуральные числа n,m ; найти НОД(наибольший общий делитель) ....

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

Рекурсивные функции
Мне нужно решить задачу с факториалом с использованием рекурсивной функции.Я...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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