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

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

Восстановить пароль Регистрация
 
Maxmadknight
0 / 0 / 0
Регистрация: 16.06.2011
Сообщений: 16
17.07.2011, 23:47     Рекурсивные функции #1
в функции мейн обьявить двумерный массив размером A[m][n] заполнить случайным образом 1 и 2, вывести масив на экран
написать рекурсивную функцию которая в этом массиве все 1 заменит 0 после работы функции вывести на экран
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Akvarium
2 / 2 / 0
Регистрация: 17.07.2011
Сообщений: 20
17.07.2011, 23:58     Рекурсивные функции #2
Maxmadknight, а где вопрос? Тут есть только описание задачи. Похоже ты хочешь что бы за тебя написали программу? Или напиши хоть какого размера массив. Или ты хочешь чтоб массив заполнился случайными числами аж до самого MAX_PATH? Это реально, но не позавидую тому, что будет читать числа с экрана.
Maxmadknight
0 / 0 / 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
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,691
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
0 / 0 / 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
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,691
18.07.2011, 00:33     Рекурсивные функции #7
Создайте массив динамически.
Maxmadknight
0 / 0 / 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++ Рекурсивные функции
Рекурсивные функции C++
Рекурсивные функции C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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     Рекурсивные функции
Ответ Создать тему
Опции темы

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