Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
luthien
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 7
1

Ошибка "error C2109: для индекса требуется массив или указатель"

02.06.2015, 18:22. Просмотров 1186. Ответов 18
Метки нет (Все метки)

Помогите, пожалуйста!
Имеется программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
double f4 (double x)
{
double p[N][N],f;
double a[N];
int i,j;
for(i=1;i<=N;i++)
a[i]=cos(2*M_PI_2/(i*x));
for(i=0; i<N; i++)
for(j=0; j<N; j++){
p[i][j]=sin(fabs(double(i-j))*M_PI_2*x);
} 
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
f+=pow((a[i]*p[j][i]),2);
 
return sqrt(f);
}
на double a[N] выдает ошибки: Ошибка 7 error C2109: для индекса требуется массив или указатель и Ошибка 6 error C2143: синтаксическая ошибка: отсутствие ";" перед "константа"
Как их исправить?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2015, 18:22
Ответы с готовыми решениями:

Найти причины и способы исправления ошибки "error C2109: для индекса требуется массив или указатель"
Добрый день! Подскажите пожалуйста, писала программу, но на протяжении всей программы для...

error C2109: для индекса требуется массив или указатель
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; #include...

Error C2109: для индекса требуется массив или указатель
Есть код,делаю его в классы,вот выскочили ошибки,помогите исправить. class PID { private: ...

Error C2109: для индекса требуется массив или указатель
Доброго времени суток! Будьте так добры помочь в данном вопросе, как сделать указатель для этой...

Error C2109: для индекса требуется массив или указатель
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; int const max_widht=3; int const max_height=3; int...

18
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
02.06.2015, 18:33 2
f нужно инициализировать, а про double a[N] - непонятно, больше кода покажи.
0
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.06.2015, 18:34 3
1. Покажи всю программу.
2. Индексация массивов в Си/С++ начинается с нуля (6-я строка).
3. Покажи всю программу.
0
luthien
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 7
02.06.2015, 18:46  [ТС] 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
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <cstdio>
#define _USE_MATH_DEFINES
#include <cmath>
#include <string>
 
using namespace std;
 
# define eps 0.0001
# define N 30
# define a 10
# define b 40
 
double f1 (double x);
double f2 (double x);
double f3 (double x);
double f4 (double x);
int f5 (string str);
 
string str="Человек в двадцать первом веке, который не будет уметь пользоваться ЭВМ, будет подобен человеку двадцатого века, не умевшему ни читать, ни писать";
 
int main()
{ 
double x,h,f;
FILE *fd;
h=(double)(b-a)/N;
fd=fopen("result.txt","w");
for (x=a;x<=b;x+=h)
{
f=(pow(f2(x),2)-2*f1(x))/(pow(f3(x),3))-pow(2*double(f5(str)),1/3)+15*f4(x);
fprintf (fd,"x=%0.1lf f=%lf\n",x,f);
}
fclose(fd);
return 0;
}
 
double f1 (double x)
{ 
double f;
int q;
q=b-a;
if((x>=a)&&(x<=a+q/10))
f=7+((2*exp(3*x)+3)/(2+5*log(x*x)));
else if((x>a+2*q/10)&&(x<=b)) 
f=4*pow(sin(5*x),2)+6;
else f=sqrt(6+(pow(x,4)));
 
return f;
}
 
double f2 (double x)
{
double f,sum=0;
 
for (double i=1;i<=N;i++)
{
sum=sum+(pow((-1),i+1)*pow((x/(x+5)),i));
}
f=-5*x+6*sum;
 
return f;
}
 
double f3 (double x)
{
 
double f=0,sum;
double n=0;
 
do
{
sum=pow(-1,n);
f+=sum*(x+3)/pow((2*n-1),3);
sum=4*sum;
n++;
}
while (fabs(sum)>double(eps));
return f;
}
 
double f4 (double x)
{
double p[N][N],f;
double a[N];
int i,j;
for(i=1;i<=N;i++)
a[i]=cos(2*M_PI_2/(i*x));
for(i=0; i<N; i++)
for(j=0; j<N; j++){
p[i][j]=sin(fabs(double(i-j))*M_PI_2*x);
} 
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
f+=pow((a[i]*p[j][i]),2);
 
return sqrt(f);
}
 
int f5(string str)
{
int f=0,p=0;
 
while (str.find(" ни ",p)!=-1)
{
f++;
p=str.find(" ни ",p)+3;
}
return f;
}
Добавлено через 1 минуту
это вся программа.

Добавлено через 3 минуты
ошибки на 4 и 7 строки(первая программа).
0
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.06.2015, 18:48 5
C++
1
# define a 10
заменяет все буквы a в коде программы на константу 10. Придумай более осмысленное имя.
0
luthien
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 7
02.06.2015, 18:53  [ТС] 6
заменила а в имени массива на другую букву - не помогло, выдает те же ошибки.
0
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.06.2015, 18:54 7
Цитата Сообщение от luthien Посмотреть сообщение
заменила а в имени массива на другую букву - не помогло, выдает те же ошибки.
Покажи исправленный код полностью.
Используй тег "С++" при отправке сообщения.
0
luthien
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 7
02.06.2015, 18:56  [ТС] 8
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <cstdio>
#define _USE_MATH_DEFINES
#include <cmath>
#include <string>
 
using namespace std;
 
# define eps 0.0001
# define N 30
# define a 10
# define b 40
 
double f1 (double x);
double f2 (double x);
double f3 (double x);
double f4 (double x);
int f5 (string str);
 
string str="Человек в двадцать первом веке, который не будет уметь пользоваться ЭВМ, будет подобен человеку двадцатого века, не умевшему ни читать, ни писать";
 
int main()
{ 
double x,h,f;
FILE *fd;
h=(double)(b-a)/N;
fd=fopen("result.txt","w");
for (x=a;x<=b;x+=h)
{
f=(pow(f2(x),2)-2*f1(x))/(pow(f3(x),3))-pow(2*double(f5(str)),1/3)+15*f4(x);
fprintf (fd,"x=%0.1lf f=%lf\n",x,f);
}
fclose(fd);
return 0;
}
 
double f1 (double x)
{ 
double f;
int q;
q=b-a;
if((x>=a)&&(x<=a+q/10))
f=7+((2*exp(3*x)+3)/(2+5*log(x*x)));
else if((x>a+2*q/10)&&(x<=b)) 
f=4*pow(sin(5*x),2)+6;
else f=sqrt(6+(pow(x,4)));
 
return f;
}
 
double f2 (double x)
{
double f,sum=0;
 
for (double i=1;i<=N;i++)
{
sum=sum+(pow((-1),i+1)*pow((x/(x+5)),i));
}
f=-5*x+6*sum;
 
return f;
}
 
double f3 (double x)
{
 
double f=0,sum;
double n=0;
 
do
{
sum=pow(-1,n);
f+=sum*(x+3)/pow((2*n-1),3);
sum=4*sum;
n++;
}
while (fabs(sum)>double(eps));
return f;
}
 
double f4 (double x)
{
double p[N][N],f;
double b[N];
int i,j;
for(i=0;i<=N;i++)
b[i]=cos(2*M_PI_2/(i*x));
for(i=0; i<N; i++)
for(j=0; j<N; j++){
p[i][j]=sin(fabs(double(i-j))*M_PI_2*x);
} 
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
f+=pow((b[i]*p[j][i]),2);
 
return sqrt(f);
}
 
int f5(string str)
{
int f=0,p=0;
 
while (str.find(" ни ",p)!=-1)
{
f++;
p=str.find(" ни ",p)+3;
}
return f;
}
0
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.06.2015, 18:59 9
luthien, понимаешь смысл данного сообщения?
Цитата Сообщение от castaway Посмотреть сообщение
Используй тег "С++" при отправке сообщения.
Цитата Сообщение от luthien Посмотреть сообщение
выдает те же ошибки
В каких строках?
0
luthien
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 7
02.06.2015, 19:01  [ТС] 10
нет, объясните, пожалуйста.
0
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.06.2015, 19:03 11
Цитата Сообщение от luthien Посмотреть сообщение
заменила а в имени массива на другую букву - не помогло
Заменила на b? Серьёзно?
C++
1
2
3
4
# define eps 0.0001
# define N 30
# define a 10
# define b 40
В следующий раз на N заменишь? А потом, дай угадаю, на eps?
0
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
02.06.2015, 19:03 12
Вместо double a[N] сделал double b[N]. Это более осмысленное имя.
0
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.06.2015, 19:06 13
Цитата Сообщение от luthien Посмотреть сообщение
нет, объясните, пожалуйста.
Жмёшь кнопку С++. Появляется тег (блок). Внутрь него вставляешь код.

Добавлено через 23 секунды

Не по теме:

Цитата Сообщение от lss Посмотреть сообщение
сделал
сделала

0
luthien
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 7
02.06.2015, 19:11  [ТС] 14
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <cstdio>
#define _USE_MATH_DEFINES
#include <cmath>
#include <string>
 
using namespace std;
 
# define eps 0.0001
# define N 30
# define a 10
# define b 40
 
double f1 (double x);
double f2 (double x);
double f3 (double x);
double f4 (double x);
int f5 (string str);
 
string str="Человек в двадцать первом веке, который не будет уметь пользоваться ЭВМ, будет подобен человеку двадцатого века, не умевшему ни читать, ни писать";
 
int main()
{ 
double x,h,f;
FILE *fd;
h=(double)(b-a)/N;
fd=fopen("result.txt","w");
for (x=a;x<=b;x+=h)
{
f=(pow(f2(x),2)-2*f1(x))/(pow(f3(x),3))-pow(2*double(f5(str)),1/3)+15*f4(x);
fprintf (fd,"x=%0.1lf f=%lf\n",x,f);
}
fclose(fd);
return 0;
}
 
double f1 (double x)
{ 
double f;
int q;
q=b-a;
if((x>=a)&&(x<=a+q/10))
f=7+((2*exp(3*x)+3)/(2+5*log(x*x)));
else if((x>a+2*q/10)&&(x<=b)) 
f=4*pow(sin(5*x),2)+6;
else f=sqrt(6+(pow(x,4)));
 
return f;
}
 
double f2 (double x)
{
double f,sum=0;
 
for (double i=1;i<=N;i++)
{
sum=sum+(pow((-1),i+1)*pow((x/(x+5)),i));
}
f=-5*x+6*sum;
 
return f;
}
 
double f3 (double x)
{
 
double f=0,sum;
double n=0;
 
do
{
sum=pow(-1,n);
f+=sum*(x+3)/pow((2*n-1),3);
sum=4*sum;
n++;
}
while (fabs(sum)>double(eps));
return f;
}
 
double f4 (double x)
{
double p[N][N],f;
double q[N];
int i,j;
for(i=0;i<=N;i++)
q[i]=cos(2*M_PI_2/(i*x));
for(i=0; i<N; i++)
for(j=0; j<N; j++){
p[i][j]=sin(fabs(double(i-j))*M_PI_2*x);
} 
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
f+=pow((q[i]*p[j][i]),2);
 
return sqrt(f);
}
 
int f5(string str)
{
int f=0,p=0;
 
while (str.find(" ни ",p)!=-1)
{
f++;
p=str.find(" ни ",p)+3;
}
return f;
}
Добавлено через 27 секунд
но теперь не записывает в фаил.

Добавлено через 1 минуту
вообще программа не работает.
0
lss
02.06.2015, 19:12
  #15

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Жмёшь кнопку С++. Появляется тег (блок). Внутрь него вставляешь код.
Как скажешь, так и будет.:)
Но:
Цитата Сообщение от luthien Посмотреть сообщение
теперь не записывает в фаил.
Дайте воды попить...
Да, и:
Цитата Сообщение от luthien Посмотреть сообщение
вообще программа не работает.
castaway, зачем программу сломал?

0
Tulosba
02.06.2015, 19:13
  #16

Не по теме:

Цитата Сообщение от luthien Посмотреть сообщение
Человек в двадцать первом веке, который не будет уметь пользоваться ЭВМ...
Человек в двадцать первом веке, который не будет обрамлять код в теги ...

0
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.06.2015, 19:26 17
Цитата Сообщение от lss Посмотреть сообщение
castaway, зачем программу сломал?
)))))))))
На самом деле, ингредиенты не виноваты в том, что повар не умеет их готовить

Добавлено через 3 минуты
Цитата Сообщение от luthien Посмотреть сообщение
}
return f;
}[C++][/C++]
О мой бог Есть ли тут хоть один администратор/модератор/поправлятор? Поправьте пожалуйста теги в её коде, а то у меня зрение ухудшается с каждым новым сообщением.

Добавлено через 1 минуту
volvo, спасибо!

Добавлено через 38 секунд
Цитата Сообщение от luthien Посмотреть сообщение
но теперь не записывает в фаил.
Стесняюсь спросить. А до этого записывало?
0
luthien
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 7
02.06.2015, 19:30  [ТС] 18
нет, были ошибки.
0
castaway
Эксперт С++
4938 / 3043 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
02.06.2015, 19:39 19
Цитата Сообщение от luthien Посмотреть сообщение
вообще программа не работает
Теперь она хотя бы компилируется.

Цитата Сообщение от luthien Посмотреть сообщение
но теперь не записывает в фаил.
Поподробней можно?
0
02.06.2015, 19:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2015, 19:39

error C2109: для индекса требуется массив или указатель.
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;ctime&gt; using namespace std; ...

Error C2109: для индекса требуется массив или указатель (найти причины возникновения ошибки)
по условию я составил программу &quot;Дан одномерный массив А, состоящий из N целых чисел. Сжать...

Для индекса требуется массив или указатель
Вот весь код: #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;vector&gt;...


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

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

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