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

Как засунуть двумерный массив в функцию? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
09.04.2011, 19:25     Как засунуть двумерный массив в функцию? #1
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 <stdio.h>
#include <conio.h>
#include <stdlib.h>
int f(int,int);
void main()
{
 int a[5][5],n,m,i,q,d[5][5];
 clrscr();
 randomize();
 for(n=0;n<5;n++)
 {
  for(m=0;m<5;m++)
  {
   a[n][m]=random(10);
   printf("%i ",a[n][m]);
  }
  printf("\n");
 }
 
 scanf("%i",&q);
 d[5][5]=f(a[5][5],q);
 getch();
}
int f(int a[5][5],q)
{
 
}
выдаёт ошибку! почему?

Добавлено через 11 минут
программисты!!! тут 2 строчки всего посматреть и поправить мою программу... помагите студенту!!

Добавлено через 6 минут
форум программистов и сисадминов... ну поф на сисадминов.. программисты куда делись все????
мне с массивом 2умерным чё делать то???
мне осталось сделать 2 задачи на пятёрку.. вот эту и ещё одну!!!
в прошлом симестре экз на 5 сдал))) в этом тоже надо постаратся... только вот с массивом то чё делать???

даже если в функции написать чёнибудь с этими переменными чтоб лишний раз компилятор не вазникал.. так он говарит что типа функция f чёта бла бла бла типа чёта не то с ней!!
чё делать то??7
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 19:25     Как засунуть двумерный массив в функцию?
Посмотрите здесь:

C++ Как передать в функцию указатель на двумерный массив заранее неизвестного размера?
C++ С++, как передать в функцию двумерный массив указателей на класс
Как разбить массив по 3 елемента и засунуть в другой массив C++
C++ Как правильно передать в функцию указатель на двумерный массив?
как передать Двумерный массив в функцию, которая вызывается в main? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ailia
27 / 26 / 1
Регистрация: 27.12.2009
Сообщений: 106
09.04.2011, 19:32     Как засунуть двумерный массив в функцию? #2
Адрес масива есть адрес его первого элемента. Матрица является массивом масовов, поэтому надо передать в ф-цию указатель на указатель на первый элемент матрицы.
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
09.04.2011, 19:33     Как засунуть двумерный массив в функцию? #3
во первых вместо
C++
1
int f(int a[5][5],q)
необходимо (каждый параметр должен иметь свой тип):
C++
1
int f(int a[][5], int q)
prazuber
09.04.2011, 19:45
  #4

Не по теме:

Если на 5 сдаешь, то такие вещи надо знать. А если не знаешь, то за что пятерку ставить-то?..

vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
09.04.2011, 19:47     Как засунуть двумерный массив в функцию? #5
сперва недоглядел полностью код
вот так будет работать
прототип функции
C++
1
int f(int mass[][5],int row, int col);
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
09.04.2011, 19:49  [ТС]     Как засунуть двумерный массив в функцию? #6
тоесть только поэлементно я так понял? сразу весь массив незапихнуть да?

Добавлено через 2 минуты
Цитата Сообщение от PraZuBeR Посмотреть сообщение

Не по теме:

Если на 5 сдаешь, то такие вещи надо знать. А если не знаешь, то за что пятерку ставить-то?..

а мы функции проходили во 2ом симестре))


Цитата Сообщение от vitaska Посмотреть сообщение
сперва недоглядел полностью код
вот так будет работать
прототип функции
C++
1
int f(int mass[][5],int row, int col);
всёравно немног непонял.. ещё 2 перменные те зачем?
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
09.04.2011, 19:50     Как засунуть двумерный массив в функцию? #7
Цитата Сообщение от lips!! Посмотреть сообщение
тоесть только поэлементно? сразу весь массив незапихнуть да?
вы передаете весь массив, что значит поэлементно? а две переменные количество строк и столбцов

Не по теме:

непонятно вообще, что эта программа делает или должна делать

ailia
27 / 26 / 1
Регистрация: 27.12.2009
Сообщений: 106
09.04.2011, 19:57     Как засунуть двумерный массив в функцию? #8
C#
1
2
3
4
//прототип
int f(int** a,int c,int r);
//вызов
int b = f(&a[0][0],c,r);
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
09.04.2011, 20:02  [ТС]     Как засунуть двумерный массив в функцию? #9
пишет что
undefined sumbol f(int,int,int)


мб тут чёта не так пишу??
d[n][n]=f(a[5][5],n,q);

Добавлено через 1 минуту
Цитата Сообщение от ailia Посмотреть сообщение
C#
1
2
3
4
//прототип
int f(int** a,int c,int r);
//вызов
int b = f(&a[0][0],c,r);
во вот теперь понятно.. щас попробую.. спасибо
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
09.04.2011, 20:04     Как засунуть двумерный массив в функцию? #10
Цитата Сообщение от lips!! Посмотреть сообщение
пишет что
undefined sumbol f(int,int,int)


мб тут чёта не так пишу??
d[n][n]=f(a[5][5],n,q);

Добавлено через 1 минуту

во вот теперь понятно.. щас попробую.. спасибо
что вы хотите записать в d[n][n], ответьте сперва на этот вопрос

и если по моему варианту прототипа функции, то нужно вот так:
C++
1
 d[n][n]=f(a,n,q);
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
09.04.2011, 20:05  [ТС]     Как засунуть двумерный массив в функцию? #11
Цитата Сообщение от vitaska Посмотреть сообщение

Не по теме:

непонятно вообще, что эта программа делает или должна делать

да там тупо сортировка... ерунда, сам справлюсь..
надо было разобратся только вот с этим.. нам учитель это не обьяснял
(хотя над заданием было полюбому написано канешно, но я как обычно забыл это прочитать, дома всё делаю просто)
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
09.04.2011, 20:09     Как засунуть двумерный массив в функцию? #12
ailia, такой вариант возможен только при условии, что массив динамический.
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
09.04.2011, 20:18  [ТС]     Как засунуть двумерный массив в функцию? #13
Цитата Сообщение от vitaska Посмотреть сообщение
что вы хотите записать в d[n][n], ответьте сперва на этот вопрос
да я просто варианты перебирал, пробовал всё подряд подставлять(метод тыка) иногда помогает
а то нефига не получалось

Добавлено через 7 минут
Цитата Сообщение от neske Посмотреть сообщение
ailia, такой вариант возможен только при условии, что массив динамический.
тоесть тот вариант неверный?
Цитата Сообщение от vitaska Посмотреть сообщение
и если по моему варианту прототипа функции, то нужно вот так:
C++
1
 d[n][n]=f(a,n,q);
ну вот я канешно наверное снова непонял, вы уж меня извините до меня иногда долго доходит
вот у меня массив с рандомными числами "a"
мне надо бы завести в функцию этот массив там его отсортировать и вернуть
но вот тока он снова выдаёт ошибку..
отказывается принимать вот это d[n][n]=f(a,n,q);
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
09.04.2011, 20:25     Как засунуть двумерный массив в функцию? #14
Цитата Сообщение от lips!! Посмотреть сообщение
мне надо бы завести в функцию этот массив там его отсортировать и вернуть
вы хотите массиву d присвоить отсортированный массив a? или я не доганяю, если да то так нельзя.

сформулируйте полность ваше задание
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
09.04.2011, 20:28  [ТС]     Как засунуть двумерный массив в функцию? #15
объявление функции
int f(int,int,int); прототип как я понял

в программе запись вызова
=f(a[][],n,q) перед равно ставить чё не пойму и в квадратных скобках чё?

ну и сама функция
int f(int a[][],n,q) и тут в квадратных скобках чё ставить?

все варианты перепробовал ничё неподходит((

Добавлено через 1 минуту
Цитата Сообщение от vitaska Посмотреть сообщение
вы хотите массиву d присвоить отсортированный массив a? или я не доганяю, если да то так нельзя.

сформулируйте полность ваше задание
нет.. я просто незнал чё влевую часть писать)))
я хочу чтоб в функции отсортировался массив и вернулся в программу отсартированый

по русскому 2, извиняюсь за орфаграфию)
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
09.04.2011, 20:30     Как засунуть двумерный массив в функцию? #16
прототип функции не
C++
1
int f(int,int,int)
, а
C++
1
int f(int [][5],int,int)
при вызове функции вы отдаете только имя массива без скобок

ну и сама функция
int f(int a[][],n,q) и тут в квадратных скобках чё ставить?
должно быть вот так
C++
1
2
3
4
int f(int a[][5], int n, int q) 
{
 
}
в списке параметров обязательно указывайте тип каждого параметра функции
lips!!
2 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 86
09.04.2011, 20:42  [ТС]     Как засунуть двумерный массив в функцию? #17
int f(int a[][5], int n, int q)
{

}
вот на это ругается
говарит каннот старт а параметр деклоратион
ailia
27 / 26 / 1
Регистрация: 27.12.2009
Сообщений: 106
10.04.2011, 11:56     Как засунуть двумерный массив в функцию? #18
Цитата Сообщение от neske Посмотреть сообщение
ailia, такой вариант возможен только при условии, что массив динамический.
Указазатель можно создать и на простой массив, поэтому мой вариант тоже подходит.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
10.04.2011, 11:57     Как засунуть двумерный массив в функцию? #19
ailia, а вы попробуйте передать указатель на двумерный статический массив.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2011, 18:09     Как засунуть двумерный массив в функцию?
Еще ссылки по теме:

Как передать в функцию двумерный динамический массив? C++
C++ Как передать массив (двумерный/одномерный вектор) в функцию C++?
C++ SFML. Как засунуть в функцию объект класса? ИЛИ как делается наследование?

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

Или воспользуйтесь поиском по форуму:
ailia
27 / 26 / 1
Регистрация: 27.12.2009
Сообщений: 106
10.04.2011, 18:09     Как засунуть двумерный массив в функцию? #20
Цитата Сообщение от neske Посмотреть сообщение
ailia, а вы попробуйте передать указатель на двумерный статический массив.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
void print(int* a,int r,int c);
 
int main()
{
int matr[3][3] = {{4,493,2},{38,4993,282},{374,5863,48}};
print(&matr[0][0],3,3);
return 0;
}
 
void print(int* a,int r,int c)
{
for(int i = 0;i < r;i++)
{
for(int j = 0; j < c;j++)
cout << *(a + (i * r ) + j) << "\t";
cout << "\n";
}
}
Yandex
Объявления
10.04.2011, 18:09     Как засунуть двумерный массив в функцию?
Ответ Создать тему
Опции темы

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