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

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

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

Ошибка в передаче знач-й функции - C++

31.12.2012, 21:18. Просмотров 501. Ответов 15
Метки нет (Все метки)

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
#include <stdio.h>
 
void dfs(int n, int **g, int v, int *used)
{
    if(used[v]) return;
 
    used[v] = 1; // ставим метку, что посетили данную вершину
    for(int i = 0; i < n; i++) // проходим по все ребрам
    {
        if(g[v][i] && !used[i]) // смотрим были ли мы в вершине раньше  можем ли туда попасть
        {
            dfs(n, g, i, used); // если нет, то запускаемся из нее
        }
    }
}
 
int main()
{
    int g[8][8] = {0};
    int used[8] = {0}; // массив меток
    g[0][1] = 1;
    g[1][2] = 1;
    g[1][3] = 1;
    g[1][5] = 1;
    g[3][4] = 1;
    g[5][6] = 1;
    g[5][7] = 1;
 
    int a;
    scanf("%d", &a);
    dfs(8, g, a, used);
 
    for(int i = 0; i < 8; i++) if(used[i]) printf("%d ", i);
 
    return 0;
}
Собсна, ругается тут:
C++
1
dfs(8, g, a, used);
Где ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2012, 21:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в передаче знач-й функции (C++):

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

Вопрос по передаче данных в функции - C++
Всем доброго времени суток. Друзья у меня такая проблема: у меня есть список и функции по роботе над етим списком. typedef struct...

Ошибка в передаче параметров - C++
Доброй ночи. форумчане, помогите в решении такой программы: получает матрицу из файла или клавы или рандомом по выбору пользователя, и...

Ошибка при передаче структуры - C++
Пишу в тему для начинающих, ибо жестко туплю с данным вопросом. Есть метод: Fuse_Interpretate::clearStruct(PS)//!!!!!!!!!!!! {...

Ошибка при передаче в функцию - C++
Хочу передать в функцию строку и там ее заполнить, подчеркивает void karta(MyStruct s.karta,int size); И пишет: 1 IntelliSense:...

ошибка в коде при идеальной передаче - C++
Здравствуйте, есть код и ошибка в нем: template&lt;typename T&gt; struct extension { extension&lt;T&gt;&amp; get(T&amp;&amp; value) { obj =...

15
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2012, 21:21 #2
Цитата Сообщение от Bacaramba Посмотреть сообщение
Где ошибка?
Во-вором параметре.
0
Bacaramba
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
31.12.2012, 21:25  [ТС] #3
<<
\Desktop\#2.cpp|31|error: cannot convert 'int (*)[8]' to 'int**' for argument '2' to 'void dfs(int, int**, int, int*)'|
>>

Ээ, я знаю, переформулирую вопрос: как исправить / что я не так делаю (поподробнее, пож-та, чем "непр-но прис-ешь значение 2 параметра")?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2012, 21:31 #4
Bacaramba, так Вам же компилятор почти по-руски сказал.

Я бы так объявил
C++
1
void dfs(int n, int g[][8], int v, int *used)
0
Bacaramba
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
31.12.2012, 21:38  [ТС] #5
Не, ну что это такое.. А нельзя как-нибудь добавить гибкость в моменте <<int g[][8]>> - надо не только для 8? Для n надо.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2012, 21:41 #6
Цитата Сообщение от Bacaramba Посмотреть сообщение
Не, ну что это такое.. А нельзя как-нибудь добавить гибкость в моменте <<int g[][8]>> - надо не только для 8? Для n надо.
Нет. Компилятор должен знать, на сколько частей делить массив. Я предлагаю использовать динамический массив, тогда можно передавать как указатель на указатель(как у Вас было). Или передавать как одномерный массив. Еще есть варианты, просто я не понимаю, чего вы хотите.
0
Bacaramba
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
31.12.2012, 21:43  [ТС] #7
Я хочу, что бы я мог передать функции массив любой длины. За 1 раз.


Без динамического массива никак?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2012, 21:55 #8
Цитата Сообщение от Bacaramba Посмотреть сообщение
Я хочу, что бы я мог передать функции массив любой длины. За 1 раз.
Цитата Сообщение от Bacaramba Посмотреть сообщение
Без динамического массива никак?
Любой каприз
C++
1
2
template<typename T>
void Print(T arr)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
template<typename T>
void Print(T arr)
{
   std::cout << arr[0][1] << std::endl;
}
 
int main()
{
   int arr[2][3] = 
   {
      {
         1, 2, 3
      },
      {
         4, 5, 6
      },
   };
   Print(arr);
}
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
31.12.2012, 21:56 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void dfs(int n, int **g, int v, int *used)
{
 
}
 
 
 
int **g = new int*[8];
for (int i=0; i<8; i++)
    g[i] = new int[8];
 
int used[8] = {0};
int a;
 
dfs(8, g, a, used);
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
31.12.2012, 22:16 #10
v.a.l.i.d,
Цитата Сообщение от Bacaramba Посмотреть сообщение
Без динамического массива никак?
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
31.12.2012, 22:23 #11
можно без динамического массива)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const int N = 8;
 
void dfs(int n, int g[][N], int v, int *used)
{
 
}
 
 
 
int g[N][N];
int used[N] = {0};
int a;
 
dfs(N, g, a, used);
0
Bacaramba
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
31.12.2012, 22:36  [ТС] #12

Ну лана, спасибо вам. Токо подвох... Чую подвох...
0
go
31.12.2012, 22:42
  #13

Не по теме:

Bacaramba, а может ну его программировать. Вам столько вариантов написали, а вы так и не знаете, что вам надо. Бросайте это дело.

0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
31.12.2012, 22:55 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void dfs(int n, int **g, int v, int *used)
{
 
}
 
 
int data[64]; 
int *arr[8];
for (int i=0; i<8; i++)
    arr[i] = data+i*8;
int used[8] = {0};
int a;
 
dfs(8, arr, a, used);
0
Bacaramba
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
01.01.2013, 15:29  [ТС] #15
Цитата Сообщение от go Посмотреть сообщение

Не по теме:

Bacaramba, а может ну его программировать. Вам столько вариантов написали, а вы так и не знаете, что вам надо. Бросайте это дело.

Не по теме:

Вы наверное хотели пошутить, а написали идиотизм.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2013, 15:29
Привет! Вот еще темы с ответами:

Ошибка при передаче параметра в функцию - C++
В ДЗ есть пример кода, помогите пожалуйста исправить, до работающего варианта (VS2015). Ошибки: (32) error C2660: strcpy_s: функция не...

Где ошибка в передаче указателя на массив? - C++
через указатель на массив хочу в массив записать значние -1 или +1. гдето ошибка в синтаксисе. ПРошу помочь. ПОдозреваю что ошибка в...

Remove_if - при передаче функции класса выдает ошибки - C++
#include &lt;QCoreApplication&gt; #include &lt;vector&gt; using namespace std; template &lt;class T&gt; class c_equ { protected: T equ; ...

Ошибка при передаче двумерного массива в функцию - C++
cannot convert 'int (*)' to 'int**' for argument '1' to 'void func(int**, int, int)' #include&lt;iostream&gt; using namespace std; ...


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

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

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