error: Expected '(' for function-style cast or type construction
имеется код:
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
const int m = 6, n = 6;
void chet(int** a) {
cout << endl << "Четность элементов в столбце:"<<endl;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++) {
int h = abs(a[j][i]) % 2;
if (h == 0 && j < m - 1) continue;
if (h == 1) break;
if (h == 0 && j == m - 1) {
cout << i+1 << endl;
}
else cout<<"в столбце не все элементы четные"<<endl;
}
cout << endl<<"Сумма элементов столбца и его номер:"<<endl;
int sum=0;
for (int i = 0; i < m; i++)
if (a[i][i] < 0) {
for (int j = 0; j < n; j++) {
sum += a[j][i];}
cout<<"сумма="<< sum<< " номер столбца:"<< i+1<<endl;
sum = 0;
}
}
int main() {
int i, j;
int a[m][n];
srand(time(NULL));
cout<<"данный массив"<<endl;
for (i = 0; i < m; i++){
for (j = 0; j < n; j++){
a[i][j] = rand()%100 - rand() % 100; }}
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++)
cout << setw(3) << a[i][j];
cout << endl;
}
chet(int** a);
return 0;
}
в строке 58(chet(int** a);) выводит ошибку Expected '(' for function-style cast or type construction. подскажите как ее исправить
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Пункт первый. При вызове функции тип аргумента не указывается. Вы же не вызываете что-то типа sqrt(double 2)?
Пункт второй. int a[m][n]; и int** a - это две очень большие разницы. И работать это не будет.
Раз уж у вас n и m - глобальные константы, то можете описать не
void chet(int** a) {
а
void chet(int a[][n]) {
тогда будет работать... Почти! Потому что у вас
int a[m][n];
m строк, n столбцов - а вы обращаетесь
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++) {
int h = abs(a[j][i]) % 2;
наоборот - первый индекс до n, второй - до m... Они-то у вас одинаковы, но стоит вам изменить размеры, как все станет печально.