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

Передача двумерного массива в функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сохранение массива в файл http://www.cyberforum.ru/cpp-beginners/thread300621.html
Подскажите, плз., можно ли сохранить массив в файл. Т.е. дан массив M. Ввожу числовые и строчные данные в массив. Затем нужно массив M сохранить в FILE. Это реально или ничего подобного?
C++ Название папки проекта Столкнулся с такой проблеммой, создал проект в MVS2008, в него входили три файла. Первый - заголовочный к классу, второй - сам класс, и третий - основной. При отладке выползла ошибка, что не может найти заголовочный файл. После того как я создал новый проект с коротким названием и просто скопировал содержимое файлов в аналогично созданные, все замечательно заработало. Вопрос, какая доступная... http://www.cyberforum.ru/cpp-beginners/thread300603.html
C++ Фильтр в DBFrid
Здравствуйте,Пытаюсь выполнить фильтр данных в DBGrid с помощью CheckBox, данные для сравнения ввожу в Edit, но выдаёт ошибку "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом" if (CheckBox4->Checked==true) { DataModule3->tblBluda->Filter="(Kategoriya=="+Edit5->Text+ ")"; DataModule3->tblBluda->Filtered=true; } ...
Заменить в исходном файле все отрицательные числа на положительные и наоборот C++
На экзамене попалась задачка, но решить ее до конца я так и не смог,за что поплатился низким баллом. Дан файл. Написать программу, заменяющую в исходном файле все отрицательные числа на положительные и наоборот - положительные на отрицательные.
C++ односвязные и двусвязные списки http://www.cyberforum.ru/cpp-beginners/thread300591.html
Задача: Дан перечень студентов группы с указанием табельного номера, ФИО студента, размера стипендии, года рождения (файл). Используя приемы работы с односвязными и двусвязными списками, написать программу, реализующую функцию: Найти общую сумму выплаты стипендии. реализовать функции добавления и удаления k-ой записи (с проверками на корректность действий), вывода содержимого и очистки списка....
C++ Треугольник и точка Задача С клавиатуры вводится координаты вершин треугольника и координаты точки с .Определить лежит ли точка в треугольнике.И если можно поподробнее объяснить ,что делаем в той или иной строчки.)) подробнее

Показать сообщение отдельно
Borsch
 Аватар для Borsch
0 / 0 / 0
Регистрация: 20.05.2011
Сообщений: 10
20.05.2011, 18:25     Передача двумерного массива в функцию
Доброго времени суток, форумчане.

Столкнулся с проблемой передачи двумерного массива (матрицы) по указателю в функцию.
Подскажите? Привожу код. Сразу оговорюсь: внутри функции работает некорректно, но не имею возможности проверить и отладить, ибо не могу передать массив.

Задание: Создать функцию нахождения первого элемента, равного нулю, и его местоположение в матрице. Использовать функцию для обмена положениями нулей в матрицах А(4,3) и В(7,3). Функция должна возвращать несколько значений, для этого использовать ссылки.

Пишу в MS Visual Studio 2010
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
85
86
87
88
89
90
91
92
93
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include <iomanip>
#include <stdio.h>
#define randomize() (srand(time(0))) //рандом в Visual C++ 2010
using namespace std; //использование стандартного пространста имён
 
//константы
#define X 4
#define Y 3
#define K 7
#define L 3
 
//Функция нахождения нулей в матрице
//&zero_i и &zero_j - это ссылки на переменные, в которые будут запоминаться координаты нуля
void find_nullz(int *array[3], int i, int &zero_i, int &zero_j)
{
    
        for (int j = 0; j < 3; j++) 
        {
        
        if (array[j]== 0)
            {
                zero_i = i;
                zero_j = j;
                break;
            
            } break;
        }
    
}
 
void main() {
 
    //задали две матрицы
    int first[X][Y];
    int second[K][L];
 
    //задали начальные значения запоминающих переменных
    int first_i=-1, first_j=-1, second_i=-1, second_j=-1;
    int i, j, I, J;
    randomize();
 
    //задаем рандомно первый массив
    cout<<"Original first array "<<endl;
        for (i=0; i<X; i++) 
    {
            for (j=0; j<Y; j++) 
            {
                first[i][j]=(rand() % 10) - 5;
                cout<<setw(5)<<first[i][j];
            }
            cout<<endl; 
    }
    cout<<endl;
    
    //задаем рандомно второй массив
    cout<<"Original second array "<<endl;
    for (I=0; I<K; I++) 
    {       for (J=0; J<L; J++)
            {     
                second[I][J]=(rand() % 10) - 5;
                cout<<setw(5)<<second[I][J];
            }
            cout<<endl; 
    }   
    cout<<endl;
 
    cout<<"Use function"<<endl;
    
        for (i=0; i<X; i++)
    {       find_nullz(first, i, first_i, first_j); 
            //ругается тут, подчеркивая слово first(первое в скобке). Пишет, что: Error. argument of type "int(*)[3]" is incompatible with parameter of type "int**"
            if (first_i != -1 && first_j != -1) break; 
    }
    if (first_i != -1 && first_j != -1) cout<<" Dlya pervogo massiva "<<endl<<first_i<<"  "<<first_j<<endl;
    else cout<<" net znacheniy "<<endl;
 
 
// закомментированный вызов для второй матрицы
//  for (i=0; i<K; i++)
//  {       find_nullz(second[i], second_i, second_j); 
    //      if (second_i != -1 && second_j != -1) break; 
//  }
//  if (second_i != -1 && second_j != -1) cout<<"Dlya vtorogo massiva "<<endl<<second_i<<"  "<<second_j<<endl;
    //else cout<<"net znacheniy";
 
    //чтоб при окончании окно программы не закрывалось
    system("PAUSE");
}
Update: так же пробовал на "приёмке" в параметрах функции писать не
C++
1
void find_nullz(int *array[3], int i, int &zero_i, int &zero_j)
а
C++
1
void find_nullz(int **array, int i, int &zero_i, int &zero_j)
Update2: обилие инклудов в начале кода - это просто стандартная шапка для любой лабораторной работы, прошу не заострять внимание.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru