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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.85
airone
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 6
#1

Статический двумерный массив - C++

28.12.2010, 18:37. Просмотров 6069. Ответов 4
Метки нет (Все метки)

есть задача: заполнить матрицу и вывести её на экран, используя функции. вот что делаю:

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
//main.cpp
#include <iostream>
#include <conio.h>
using namespace std;
 
void vvod(int matr[10][10], int, int);
void vivod(int matr[10][10], int, int);
 
void main()
{
setlocale(LC_ALL,"rus");
int n=0;
int m=0;
cout<<"Введите  n"<<endl;
cin>>n;
 
cout<<endl<<"Введите m"<<endl;
cin>>m;
 
int matr[10][10];
cout<<endl<<"Введите матрицу построчно"<<endl;
vvod (matr[10][10], n, m);
 
cout<<endl<<"Ваша матрица"<<endl;
vivod (matr[10][10], n, m);
 
_getch();
}
 
//InOut.cpp
#include <iostream>
using namespace std;
 
void vvod(int matr[10][10], int n, int m)
{
  for (int i=0; i<n; i++) 
     for (int j=0; j<n; j++)
        cin>>matr[i][j];
}
 
void vivod(int matr[10][10], int n, int m)
{
   for (int i=0; i<n; i++) 
      { cout << "\n строка" << (i+1) << ":";
       for (int j=0; j<n; j++)
       cout<<"\t"<<matr[i][j];
      }
}
Результат:
error C2664: 'vvod' : cannot convert parameter 1 from 'int' to 'int [][10]'
error C2664: 'vivod' : cannot convert parameter 1 from 'int' to 'int [][10]'

Прекрасно понимаю, что в функцию я пытаюсь "передать" не пойми что. Но никак не могу понять, как это сделать правильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2010, 18:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Статический двумерный массив (C++):

Статический двумерный массив - C++
Данная двумерная матрица действительных чисел А . Необходимо получить двумерный массив B путем поворота первого против часовой стрелки. ...

Двумерный массив (поменять статический массив на динамический) - C++
Нужно поменять статический массив на динамический с выделением памяти #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; ...

Функция возвращает двумерный статический массив своего класса - C++
Есть класс whirlpool: class whirlpool { public: int *buffer; int len; whirlpool(int length)

Создать статический двумерный массив и посчитать сумму каждой строки - C++
Создать статический двумерный массив и его сумму в каждой строке C++ #include&lt;iostream&gt; using namespace std; int main() { int...

Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже --> - C++
Слова английского текста рассортировать по возрастанию количества заданной буквы в слове. Слова с одинаковым количеством такой буквы...

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

4
abyr
4 / 4 / 1
Регистрация: 23.12.2010
Сообщений: 27
28.12.2010, 18:48 #2
дак если массив статический, то элементы должны задавать все изначально. разве нет? а если ты его сам вводишь с клавы, то уже динмамический надо задавать.
0
airone
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 6
28.12.2010, 18:51  [ТС] #3
по условию задачи все операции ввода-вывода я должен оформить через функции и вынести в отдельный файл. вот так не пойдет:

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
#include <iostream>
#include <conio.h>
using namespace std;
 
 
void main()
{
setlocale(LC_ALL,"rus");
int n=0;
int m=0;
cout<<"Введите  n"<<endl;
cin>>n;
 
cout<<endl<<"Введите m"<<endl;
cin>>m;
 
int matr[10][10];
cout<<endl<<"Введите матрицу построчно"<<endl;
  for (int i=0; i<n; i++) 
     for (int j=0; j<n; j++)
        cin>>matr[i][j];
 
cout<<endl<<"Ваша матрица"<<endl;
   for (int i=0; i<n; i++) 
      { cout << "\n строка" << (i+1) << ":";
       for (int j=0; j<n; j++)
       cout<<"\t"<<matr[i][j];
      }
 
_getch();
}
0
Serhiy:)
2 / 2 / 1
Регистрация: 09.10.2010
Сообщений: 72
28.12.2010, 18:54 #4
Массив передается функции по ее адресу.
Неправильно vvod (matr[10][10], n, m);
Правильно vvod (matr, n, m);
1
airone
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 6
28.12.2010, 22:54  [ТС] #5
заработало, благодарю.
о_О

Добавлено через 1 час 59 минут
всё, в статике с задачей справился.
Составить программу, которая получает матрицу А размером m*n и, если
среднеарифметическое число всех положительных элементов матрицы по
модулю меньше среднеарифметического числа ее отрицательных элементов, то
программа формирует новую матрицу, все строки которой упорядочены по
возрастанию.
//main.cpp
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
#include <iostream>
#include <conio.h>
using namespace std;
 
void vvod(float matr[10][10], int n, int m);
void vivod(float matr[10][10], int n, int m);
bool analysing(float matr[10][10], int m, int n);
void performing (float matr[10][10], int n, int m);
void copy(float matr[10][10], float matrNew[10][10], int n, int m);
 
void main()
{
  setlocale(LC_ALL,"rus");
  char pvt='1';
 
  while (pvt=='1') {
  int n=0;
  int m=0;
 
  cout<<"\nВведите  n:"<<endl;
  cin>>n;
 
  cout<<endl<<"Введите m:"<<endl;
  cin>>m;
 
  float matr[10][10];
  cout<<endl<<"Введите матрицу построчно:"<<endl;
  vvod (matr,n,m);
 
  if (analysing(matr,n,m)) {
     float matrNew[10][10];
     copy (matr, matrNew, n, m);
     performing (matrNew, n, m);
     cout<<endl<<"Ваша матрица:"<<endl;
     vivod (matrNew,n,m);
  }
  else cout<<endl<<"Матрица не сформирована!"<<endl;
 
  cout<<endl<<"\nПовторить? (1/0)"<<endl;
  pvt=_getch();
  } 
}
//InOut.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
void vvod(float matr[10][10], int n, int m)
{
  for (int i=0; i<n; i++) 
     for (int j=0; j<n; j++)
        cin>>matr[i][j];
}
 
void vivod(float matrNew[10][10], int n, int m)
{
   for (int i=0; i<n; i++) 
      { cout << "\n строка" << (i+1) << ":";
        for (int j=0; j<n; j++)
        cout<<"\t"<<matrNew[i][j];
      }
}
//processing.cpp
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
#include <iostream>
using namespace std;
 
bool analysing (float matr[10][10], int n, int m)//true если sredPos<sredNeg
{
float summPos=0, summNeg=0;
int kolPos=0, kolNeg=0;
 
for (int i=0; i<n; i++) 
{ for (int j=0; j<m; j++)
  {
     if (matr[i][j]>=0) {
       summPos=summPos+matr[i][j];
       kolPos++;
       } 
 
     else {
     summNeg=summNeg-matr[i][j];
     kolNeg++;
     }
  }
}
 
float sredPos=summPos/kolPos;
float sredNeg=summNeg/kolNeg;
 
if (sredPos < sredNeg)
  return true;
return false;
}
 
 
void copy(float matr[10][10], float matrNew[10][10], int n, int m)
{
  for (int i=0; i<n; i++) 
     for (int j=0; j<n; j++)
        matrNew[i][j]=matr[i][j];
}
 
 
void performing (float matrNew[10][10], int n, int m)//упорядочивание элементов строк
{  
   float x;
    for(int k=0; k < m; k++) {
     for(int i=0; i < n; i++) {         
       for(int j = n-1; j > i; j-- ) {     
         if ( matrNew[k][j-1] > matrNew[k][j] ) {
         x=matrNew[k][j-1]; matrNew[k][j-1]=matrNew[k][j]; matrNew[k][j]=x;
         }
       }
     }
   }    
}
теперь всё это добро надо переправить под динамическое распределение. дядьки, помогайте. ибо завтра последний срок, и если сам не осилю - будет мне

Добавлено через 1 час 54 минуты
up
0
28.12.2010, 22:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2010, 22:54
Привет! Вот еще темы с ответами:

Переделать динамический массив на статический массив - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main() { int dim, counter_1 = 1, counter_2 =...

статический массив - C++
В одномерном статическом массиве состоящем из n вещественных элементов, вычислить: 1) количество элементов массива, больших С; 2)...

Статический массив - C++
Привет ВСЕММММ)))Помогите с написанием кода,чет я торможу((( Водномерном массиве,состоящем из n вещественных элементов,вычислить: ...

Сформировать статический массив - C++
Здраствуйте, помогите пожалуйста с заданием, смотрю такие похожие вопросы задавали но на них толком не отвечали....понимаю что сортировать...


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

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

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