Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
1

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

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

Author24 — интернет-сервис помощи студентам
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.12.2012, 21:18
Ответы с готовыми решениями:

Составить блок-схему и программу для вычисления знач. функции У в зависимости от заданного с клав. знач. аргумента Х - T
Ребята помогите пожалуйста решить задачку по TurboPasсal Составить блок-схему и программу для...

Ошибка Знач в функции
=ЕСЛИ(И(ИНДЕКС('1738'!$F$8:$AS$371;(ПОИСКПОЗ(C2;'1738'!$F:$F;0));'1738'!P$1)&lt;&gt;0;ИНДЕКС('Sheet1'!$C:$...

Не работают функции: ошибка #ЗНАЧ!
Господа пожалуйста посмотрите почему не работают следующие функции... Public Function...

Ошибка #ЗНАЧ! в функции Trim
Здравствуйте! Помогите выяснить, почему при обрезке текста в НЕКОТОРЫХ ячейках выводит #ЗНАЧ! ...

15
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
31.12.2012, 21:21 2
Цитата Сообщение от Bacaramba Посмотреть сообщение
Где ошибка?
Во-вором параметре.
0
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
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
31.12.2012, 21:31 4
Bacaramba, так Вам же компилятор почти по-руски сказал.

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


Без динамического массива никак?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
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
425 / 390 / 113
Регистрация: 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
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
31.12.2012, 22:16 10
v.a.l.i.d,
Цитата Сообщение от Bacaramba Посмотреть сообщение
Без динамического массива никак?
0
425 / 390 / 113
Регистрация: 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
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
31.12.2012, 22:36  [ТС] 12

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

Не по теме:

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

0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 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
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
01.01.2013, 15:29  [ТС] 15
Цитата Сообщение от go Посмотреть сообщение

Не по теме:

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

Не по теме:

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

0
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
01.01.2013, 15:46 16
Bacaramba, не обращайте внимание, изучайте программирование.
А все варианты они рабочие и никакого подвоха тут нет.
С Новым годом
1
01.01.2013, 15:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2013, 15:46
Помогаю со студенческими работами здесь

При вызове функции из ячейки ошибка #ЗНАЧ
Здравствуйте! Помогите, пожалуйста, понять, почему не работает функция при вызове из ячейки ...

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

Ошибка при передаче указателя функции
Привет! В моем понимании приведенный ниже код должен дважды выводить одно и то же. Объясните мне,...

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru