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

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

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

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

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

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

Рекурсивные и не рекурсивные функции (вычисление суммы всех натуральных чисел от 1 до n) - C++
Всем привет. Заранее извиняюсь за мб глупые вопросы и навязчивость. Но у меня есть одна просьба. Помогите пожалуйста написать...

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
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
1482 / 849 / 76
Регистрация: 26.03.2010
Сообщений: 2,917
18.07.2011, 00:33 #7
Создайте массив динамически.
Maxmadknight
1 / 1 / 0
Регистрация: 16.06.2011
Сообщений: 16
18.07.2011, 00:37  [ТС] #8
Что есть динамический массив....Эту тему я еще не проходил =(((...
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2011, 01:28
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.07.2011, 01:28
Ответ Создать тему
Опции темы

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