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

Error C2109: для индекса требуется массив или указатель - C++

Восстановить пароль Регистрация
 
senechka_93
1 / 1 / 0
Регистрация: 11.05.2012
Сообщений: 15
11.05.2012, 20:45     Error C2109: для индекса требуется массив или указатель #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
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
#include <stdio.h>
#include <conio.h>
 
int const max_widht=3;
int const max_height=3;
 
int minmax (int min, int max, int val, int max_height, int max_widht, int* m)
{   int i,max_w, min_w;
    for (int i=0; i<max_widht; i++)
    {
      max=min=m[i][0];
        for (int j=1; j<max_height; j++)
        {
          val=m[i][j];
          (val<min)? min=val : 0;
          (val>max)? max=val :0;  
        }
     max_w[i]=max;
     min_w[i]=min;
 
    }
 return max_w[i], min_w[i];
}
 
void main()
{   
    int i,j,val, min, max;
    int m[max_widht][max_height]={
    {8,2,3},
    {-1,0,-1},
    {9,77,34}
    };
    int max_w[max_widht], min_w[max_widht], max_h[max_height], min_h[max_height];
 
for (int i=0; i<max_widht; i++)
    {
        for (j=0; j<max_height; j++)
        {
          printf("%4d", m[i][j]);
        }
        printf ("\n");
}
 
 minmax ( min ,max, val, max_height, max_widht,*m);
 
/*for (i=0; i<max_widht; i++)
{
    max=min=m[i][0];
    for (j=1; j<max_height; j++)
    {
        val=m[i][j];
        (val<min)? min=val : 0;
        (val>max)? max=val :0;  
    }
 max_w[i]=max;
 min_w[i]=min;
 
}*/
 
for (j=0; j<max_height; j++)
{
    max=min=m[0][j];
    for (i=1; i<max_widht; i++)
    {
        val=m[i][j];
        (val<min)? min=val : 0;
        (val>max)? max=val :0;  
    }
 max_h[j]=max;
 min_h[j]=min;
 
}
 
for ( i= 0; i<max_widht; i++ ) 
{
 
    for ( j= 0; j<max_height; j++ ) 
{
   if ( m[i][j] == max_w[i] && m[i][j] == min_h[j] || m[i][j] == min_w[i] && m[i][j] == max_h[j]) 
   {
 
      printf( "m[%d][%d]=%d\n", i, j, m[i][j] );
   }
 
}
}
 
 
 
_getch();
}
error C2109: для индекса требуется массив или указатель в 12,15,19,20 и 23 строке. Что не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,158
Завершенные тесты: 1
11.05.2012, 21:25     Error C2109: для индекса требуется массив или указатель #2
в параметрах функции minmax указано, что m - одномерный массив,
а используется как двумерный.
max_w, min_w - описаны как простые переменные, а используются как массивы.
Функция должна возвращать целое число, а написано нечто странное
return max_w[i], min_w[i]; (i здесь неопределено, поэтому
return max_w[i] возвратит непонятное значение, а min_w[i] -
стоит после запятой, поэтому скорее всего вообще не будет вычисляться
senechka_93
1 / 1 / 0
Регистрация: 11.05.2012
Сообщений: 15
11.05.2012, 21:27  [ТС]     Error C2109: для индекса требуется массив или указатель #3
а как это исправить?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,158
Завершенные тесты: 1
11.05.2012, 21:36     Error C2109: для индекса требуется массив или указатель #4
Я бы эту функцию написал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void minmax (int* max_w, int* min_w, int max_height, int max_widht, int** m)
{   int max, min,val;
    for (int i=0; i<max_widht; i++)
    {
      max=min=m[i][0];
        for (int j=1; j<max_height; j++)
        {
          val=m[i][j];
          (val<min)? min=val : 0;
          (val>max)? max=val :0;  
        }
     max_w[i]=max;
     min_w[i]=min;
 
    }
 return;
}
ArmoredHell
 Аватар для ArmoredHell
15 / 15 / 1
Регистрация: 05.04.2012
Сообщений: 32
11.05.2012, 21:37     Error C2109: для индекса требуется массив или указатель #5
Я не очень понимаю, что должна делать функция, но код нужно так исправить:

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
int* minmax (int min, int max, int val, int max_height, int max_widht, int** m)
{   
    int max_w = 0, min_w = 0;
    int* result = new int[2];
 
    for (int i=0; i<max_widht; i++)
    {
        max=min=m[i][0];
 
        for (int j=1; j<max_height; j++)
        {
          val=m[i][j];
          (val<min)? min=val : 0;
          (val>max)? max=val :0;  
        }
 
        max_w = max;
        min_w = min;
    }
 
    res[0] = max_w;
    res[1] = min_w;
 
    return res;
}
senechka_93
1 / 1 / 0
Регистрация: 11.05.2012
Сообщений: 15
11.05.2012, 21:38  [ТС]     Error C2109: для индекса требуется массив или указатель #6
премного благодарна)
Yandex
Объявления
11.05.2012, 21:38     Error C2109: для индекса требуется массив или указатель
Ответ Создать тему
Опции темы

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