Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
1

про функции и 2х мерный массив

15.05.2009, 12:16. Просмотров 1566. Ответов 10
Метки нет (Все метки)

привет)
вот тут кое что немагу понять
пример

C++
1
2
3
4
5
 
int mass [2] [3];
for (int i =0; i<2; i++)
            for (int j = 0; j< 0; j++)
                      cin >> mass [i] [j];
вот так просто записывают в 2х мерный массив

а вот как написать или можно написать функцию которая запрашивает на заполнения массива

C++
1
2
3
4
5
6
7
8
 
int mac (int [] [3] , int n)
{
              for (int i = 0; i< n; i++)
                      for (int j = 0; j<3; j++)
                                   cin >> mass [i] [j];
                     return // а дальше незнаю что возвращать да и правильно ли написал ыункцию
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2009, 12:16
Ответы с готовыми решениями:

3-х мерный массив+Строки+функции
Задача: Обработать n1 матриц размером n*m. Элемент строка. В каждой из матриц...

5-ти мерный массив
написал функцию Проблема в том, что содержимое массива создается локально, а...

n-мерный массив
Вопрос заключается в следующем: Как задать n-мерный массив в описании класса,...

2-х мерный массив.
Дана целочисленная прямоугольная матрица. Определить: 1) количество столбцов,...

1 мерный массив
В одномерном массиве, состоящем из n целых элементов, вычислить: 1)...

10
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
15.05.2009, 12:39 2
Тип у такой функции void должен быть и возвращать ничего не надо.
0
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
15.05.2009, 17:11  [ТС] 3
Цитата Сообщение от kazak Посмотреть сообщение
Тип у такой функции void должен быть и возвращать ничего не надо.
тоесть вводит числа в 2-х мерный массив нужно невозвращающей функцией



Код C++123456789 int mass [2] [3];*void mac ( int ar [] [3] , int n ){ for ( int i = 0; i < n ; i++)for ( int j = 0; j < 3; j++)std : : cin >> ar [ i ] [ j ] ;
}
такая чтоли будет функция?

Добавлено через 4 минуты 46 секунд
C++
1
2
3
4
5
6
7
 
void mac (int ar [] [3] , int n)
{
              for ( int i = 0; i < n; i++)
                      for ( int j = 0; j < 3; j++)
                                  std : : cin >> mass [i] [j];
   }
такая функция?
0
#pragma
Временно недоступен
955 / 226 / 14
Регистрация: 12.04.2009
Сообщений: 926
15.05.2009, 20:15 4
Код не скомпилируется,скорее всего,так как первая размерность массива должна иметь тип const int.У тебя получается,что на момент компиляции размер массива неизвестен.
C++
1
2
3
4
5
6
void mac (int ar [2] [3] )
{
              for ( int i = 0; i < 2; ++i)
                      for ( int j = 0; j < 3; ++j)
                                  std : : cin >> mass [i] [j];
   }
0
Monte-Cristo
2796 / 1384 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
15.05.2009, 20:21 5
если необходимы функции, то лучше работать с динамическеой памятью - масивом указателей (в изреченениях некоторых преподов - динамической матрицей)
0
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
16.05.2009, 03:17  [ТС] 6
да я книгу Прата читаю вот дошел там до функций,но там нет примера как ввод в 2-х мерный массив в функции делать
0
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
16.05.2009, 12:21 7
Чтобы просто заполнить используй такой прототип void FunctionName(<TypeOfArray> array[][columnSize], int rowSize);
0
Evg
Эксперт CАвтор FAQ
19350 / 7203 / 538
Регистрация: 30.03.2009
Сообщений: 20,141
Записей в блоге: 30
16.05.2009, 12:41 8
Цитата Сообщение от #pragma Посмотреть сообщение
Код не скомпилируется,скорее всего,так как первая размерность массива должна иметь тип const int.У тебя получается,что на момент компиляции размер массива неизвестен.
В процедуре параметр, описанный как массив, передаётся по косвенности. В этом случае первая размерность не нужна, т.к. при вычислении адреса элемента она в расчёт не входит. Если нужно написать процедуру для массива с заранее известными размерами, то можно просто написать

C
1
2
3
4
5
6
7
8
9
10
11
12
void mac (int mas[2][3])
{
  for (int i = 0; i<2; i++)
    for (int j = 0; j<3; j++)
      cin >> mas [i][j];
}
 
main()
{
  int a[2][3];
  mac (a);
}
1
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
16.05.2009, 16:32  [ТС] 9
а в чем разница
C++
1
void mac(int ar [] [3],int n);
и
C++
1
void mas(int arr [2] [3];
0
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
16.05.2009, 16:51 10
C++
1
void mas(int arr [2] [3]);
тоже самое что и
C++
1
void mas(int arr [] [3]);
размерность строк будет игнорироваться.
0
Evg
Эксперт CАвтор FAQ
19350 / 7203 / 538
Регистрация: 30.03.2009
Сообщений: 20,141
Записей в блоге: 30
16.05.2009, 16:53 11
Ни в чём. При вычислении адреса элемента ar[x][y] используется только вторая размерность массива (3), первая нужна только для вычисления размера массива. Поскольку мы его передаём по указателю, то оно нужно только для красоты. Всё равно все варианты хреновые, т.к. в твоём случае одно измерение подаём параметром, а другое зашито внутри процедуры. В моём случае оба значения зашиты (т.е. черезжопность равномерная).

Правильно было бы подавать указатель на первый элемент и две размерности, но тут только через адресную арифметику типа

C
1
2
3
4
5
6
7
8
9
10
11
12
void mac (int *ar, int x, int y)
{
  for (i = 0; i < x; i++)
    for j = 0; j < y; j++)
      *(ar + i*y + j) = <инициализируем>
}
 
main ()
{
  int a[2][3];
  mac ((int*)a, 2, 3);
}
0
16.05.2009, 16:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2009, 16:53

m - мерный массив
Дано n точек m мерного пространства, каждая точка имеет массу. Найти координаты...

динамический 2-х мерный массив
помогите плиз вот код , нужно составить динамический 2-х мерный массив double...

N-мерный массив в векторе
Здравствуйте. Можно ли в векторе хранить n-мерный массив. т.е. я с клавиатуры...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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