0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
1

Ошибки в компиляции

14.07.2009, 20:36. Показов 2925. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравстуйте все.
В процессе написания одной проги на с++ в dev-cpp натолкнулся на целую кучу ошибок разного плана, а именно:

expected primary-expression before ';' token
expected primary-expression before "int"
stray '\194' in program
In function `int main()':
missing terminating " character
ISO C++ forbids declaration of `parameter' with no type
invalid initializer
expected `,' or `...' before ';' token
conflicts with previous declaration `int mdArray2[1][1]'

Также мне интересно есть ли в этом языке число пи и двойная степень(sqr)
Думаю знать что значат эти ошибки полезно всем начинающим
Я догадываюсь, что большинство этих ошибок по невнимательности или из-за нехватки опыта(я зеленый новичок которого прижали к стенке с требованием это сделать)
Но я надеюсь, что с вашей помощью мне всё же удастся довести эту клятую прогу до ума.
Готов выслушать нелестные отзывы о том что нужно книжки читат а не ждать помощи тут, но сроки сильно поджимают.
Сам листинг прогивылаживать думаю смысла нету тк судя по всему там ошибки на каждом шагу(
Хотелось бы для начала хотя бы понять эти ошибки
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2009, 20:36
Ответы с готовыми решениями:

с2079 и с2228 ошибки при компиляции ниже участок кода, с которым праблема и скрины ошибки
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ bool game = true; // КЛАССЫ class Me; class mob { public: void...

ошибки компиляции
недавно создавал тему но никто не помог(поиск юзал не помогло) когда я компилирую пример из boost...

Ошибки компиляции
Я начинающий программист. Не знаю почему компилятор ругается, объясните. В 20 строке: "=: левый...

Ошибки компиляции
Доброго времени суток. Прошу проверить меня) Собственно задание: 3. Найдите ошибки компиляции:...

17
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.07.2009, 20:39 2
кинь код, так проще будет
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
14.07.2009, 20:46 3
кин код

Добавлено через 38 секунд
да и вообще, используй VSTUDIO 2008
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.07.2009, 20:50 4
@lex, хватит про 2008 студию. Мне вон для написания консольных прог понравился Borland C++ 3.1, так я ж не говорю всем на этой старушке писать
0
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
14.07.2009, 21:05 5
Цитата Сообщение от hanasi Посмотреть сообщение
число пи
Есть, конечно, но оно приставлено, как мат. константа.
Чтобы иметь доступ для мат. констант(в данном случаи нужно пи) и мат.функций(в данном случаи - возведение в степень) нужно подключить заголовочный файл:
C++
1
2
#define _USE_MATH_DEFINES //для использования мат.констант
#include math.h //или cmath
вызывайте, то что вам нужно
C++
1
2
3
double x = 0, y =0;
x = M_PI; //число пи
y = pow(x,2); //возведение в квадрат числа х
P.S. подробно почитать про math.h(cmath) можете тут или тут
+
напиши код(или фрагменты, где эти ошибки возникают) для помощи по ошибкам(мы же не екстрасексы и не знаем, что ты там "начудил")
0
0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
15.07.2009, 02:28  [ТС] 6
Ладно если уж столько предлагающих выложить код и желающих покапаться в нём то вот он:

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream> 
#include <math.h>
#include <windows.h> 
#include <stdlib.h>
#include "TXLib.h"
#include <conio.h>
#define _USE_MATH_DEFINES
#include math.h
 
using namespace std;
 
//прототипы функций
int initial (int , int, double, double); // кол-во int в зависим от кол-ва перемен
int outpost (int, int);
int Euler (int, int, int, double, double, double, double, double);
 
main()
{
 
 
int i, j, mdArray1[2][2] , mdArray2[2][2], mdArray3[2][2], myArray1[2];
double dt, plot_period,dr, r3, dist2, accel, GM;
 
cout  << "Нажмите ноль для прекращения или введите данные” << endl;
cout << “Начальная х-координата  1-ой планеты равна” << endl;
cin >> mdArray1[1][1];
cout <<  “Начальная х-координата  2-ой планеты равна” <<endl;
cin >> mdArray1[2][1];
cout << endl << “Введите шаг по времени”;
cin >> dt;
cout << “Введите кол-во лет наблюдения”;
cin >>plot_period;
 
 
 
do {
//вызов функций
 
cout << outpost (i, j) <<" "; 
cout << endl;
cout << initial (mdArray1[2][2], mdArray2[2][2],dt ,plot_period); 
cout << endl;
cout << Euler (mdArray3[2][2], myArray1[2][2], dt, dr, r3, dist2, accel, GM); 
cout << endl;
 
} while ((mdArray1[1][1]!=0)||(mdArray1[2][1]!=0));
 
cout << "Смотрите"  << endl;
getch();
return 0;
 
}
 
double initial (int mdArray1, mdArray2; 
                double  dt ,plot_period)
{
 
double GM = 4*pow(M_PI,2);
double ncalc = plot_period /dt;
//1-ая планета
  int mdArray1[1][2] = 0;
  int mdArray2[1][1] = 0;
  int mdArray2[1][2] = sqr(GM/mdArray1[1][1]);
//2-ая планета
  int mdArray1[2][2] = 0;
  int mdArray2[2][1] = 0;
  int mdArray2[2][2] = sqr(GM/mdArray1[2][1]);
  int r= 2* mdArray1[2][1];
  int radious = 10,1
  txCreateWindow (1024, 768);             // Открытие окна 1024 на 768 пикселей
  txSetColor (TX_TRANSPARENT);
     txCircle (320, 190, radious);
return ncalc;
            
}
 double Euler (int mdArray3[2][2], myArray1[2], dt;
             double dr, r3, dist2, accel, GM) 
{
//двумерные массив
int  mdArray3 [2] [2];// ускорение
//одномер массив
int  myArray1 [3];
 
for (int icalc =1 ; icalc <=ncalc ; ++icalc);
 
// вычисление растояния dr м.у планетами 1 и 2
 int dx= mdArray1[2][1]  - mdArray1[1][1];
 int dy = mdArray1[2][2] - mdArray1[1][2];
 int dr = sqr(dx*dx + dy*dy); // рас-ние м.у планетами 1 и 2
double accel = GM/(gr*dr*dr);
 int mdArray3 [1 ] [1 ] = - 0,01 * accel* dx ; //ускорение планеты 1 из-за 2-ой
 int mdArray3 [1 ] [2 ] = - 0,01 * accel* dy
 
 int mdArray3 [2 ] [1 ] = - 0,001 *mdArray3 [1 ] [1 ]  ; //ускорение планеты 2 из-за 1-ой
 int mdArray3 [2 ] [2] = - 0,001 *mdArray3 [1 ] [2];
 
{
 
for ( int iplanet =1 ; iplanet <=2 ; ++iplanet);// суммирование по планетам
 int dist2 = mdArray1 [iplanet] [1]+ mdArray1 [iplanet] [1]; 
 int dist2 = dist1 + mdArray1 [iplanet] [2] + mdArray1 [iplanet] [2];// рас-ние планеты от Солнца
 
  int myArray1[iplanet] = sqr(dist2);
 
{
 
for ( int i=1 ; i <= 2; ++i)
int r3 =  myArray1[ iplanet] * myArray1[ iplanet]* myArray1[ iplanet];
int accel = -GM*mdArray1 [iplanet] [i] /(r3);
 int accel = accel+mdArray3 [iplanet] [i] ;
int mdArray2 [iplanet] [i] =mdArray2  [iplanet] [i] + accel*dt;
int mdArray1 [iplanet] [i] = mdArray1 [iplanet] [i]+mdArray2 [iplanet] [i] *dt;
 
return dist2, dr; 
return mdArray1, mdArray2; 
 
     }
   }
 }
}
 
int outpost ( int i, j)
{
 
txCreateWindow (1024, 768);             // Открытие окна 800 на 600 пикселей
txSetFillColor(TX_ORANGE); //  нужно подобрать другой цвет
 
int i1 = mdArray1 [1 ] [1];
int j1 = mdArray1 [1] [2] ;
int i2 = mdArray1 [2 ] [1];
int j2= mdArray1 [2] [2] ;
 
txEllipse (j1-1, i1-1, j1+1, i1+1);// рисование эллипса
txEllipse (j2-1, i2-1, j2+1, i2+1);// рисование эллипса
 
return txEllipse;
}
Я знаю, что эта прога просто ужасна по стилю и по логике и вообще мне за неё стыдно, но фактически эта моя первая прога на с++. Может кто её в порядок приведет.
((((((((((((((((((
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
15.07.2009, 02:35 7
И даже подсветка кода на форуме указывала на одну из ошибок...
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
15.07.2009, 02:40 8
Код
double initial (int mdArray1, mdArray2; 
                double  dt ,plot_period)
Гы, лол (c). С паскаля перешли?
0
0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
15.07.2009, 04:50  [ТС] 9
" На многих форумах дают всякие звездочки и статусы за сообщения, дабы чувствовать себя полноправным и крутым завсегдатаем пишите в любых темах сообщения по такому шаблону: два смайлика (желательно разных) + слово "Да" (а еще лучше "Ага" или "Гы")"
Gravity а где смайлики?)
Поэтому собственно и не хотелось вылаживать код.
Я действительно очень много не понимаю в этом языке программирования,
но я спрашивал о конкретных ошибках, так как всё же надеюсь разобраться.
0
6 / 5 / 0
Регистрация: 15.07.2009
Сообщений: 7
15.07.2009, 05:35 10
>:-)
Намекаю на 1-ю ошибку: в строке 8. Не хватает <>. Сравните заодно со 2-й строкой....
Намекаю также, что кроме "гы" в предшествующем сообщении цитата из программы...
И вообще, повнимательней относитесь к компилятору, он ещё и указывает, где ошибки, обычно...
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
15.07.2009, 10:11 11
M128K145,
старушка это ты к студио?

Добавлено через 3 минуты 27 секунд
у меня одна ошибка: не может найти файл
#include
"TXLib.h"...
удалил это не может теперь найти math.h......ПОЧЕМУ??
----
а в других местах ошибок не находит...вроде код норм
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.07.2009, 11:49 12
2 hanasi
Ошибка где пишется redefinition означает, что ты несколько раз обьявил переменную с одним именем, если передал в функцию параметром, то в теле функции не надо снова указывать ее тип.
Если в сигнатуре функции стоит тип переменной double, то почему ты в теле описываеш такую же переменную с типом int???
При передаче параметров в функцию возле каждого параметра указывают его тип, по типам не группируют, в списке параметров может быть только ",", а не ";"

В конце каждой строчки всегда ставится ";". НО!!! После for(; точка с запятой не ставится!!! Только если это не намеренный пустой цикл.

{} - не ставится где угодно, а только в условиях if(если более одной выполняемой строки), при переходах switch, в циклах while(если более одной выполняемой строки), for(если более одной выполняемой строки), do while, тела функции, пространства имен, класса, структуры. Количество открывающих скобок должно быть равно количеству закрывающих

С++ does not support default-int - возле main указывай его тип

Чтобы пользоватся константами лучше пиши так:
C++
1
#define Pi 3.1415926536
Самое быстродействующее возведение в степень - это умножение вручную
C++
1
z = a*a*a*a
. Если же изначально степень не известна, то используй или
C++
1
2
for(int i = 0; i <tvoei_stepeni; ++i)
        z *= a;
или
C++
1
z = Pow(a, tvoja_stepen);
А где ты нашел на клаве такие кавычки " ” "? Вообще-то ставят те который возле энтера находятся " " "(ну или на двойке, в зависимости от языка)

Невозможно вернуть несколько переменных из функции. Вот поэтому необходимо начинать с ассемблера. На return выделяется регистр eax (размером в 4 байта), туда записывается один адрес, а ты решил вернуть целых четыре
C++
1
2
return dist2, dr; 
return mdArray1, mdArray2;
Если это так необходимо, то возвращай массив
Цитата Сообщение от hanasi
Я знаю, что эта прога просто ужасна по стилю и по логике и вообще мне за неё стыдно, но фактически эта моя первая прога на с++. Может кто её в порядок приведет.
Так зачем начинать сразу с таких программ? Начни писать что-то попроще. Без обид, но в этой программе даже циклы непонятно написаны. Прочитай что такое глобальная и локальная видимость переменных
C++
1
2
3
4
5
for ( int iplanet =1 ; iplanet <=2 ; ++iplanet);// суммирование по планетам
 int dist2 = mdArray1 [iplanet] [1]+ mdArray1 [iplanet] [1]; 
 int dist2 = dist1 + mdArray1 [iplanet] [2] + mdArray1 [iplanet] [2];// рас-ние планеты от Солнца
 
  int myArray1[iplanet] = sqr(dist2);
твой iplanet видно только в следующей за фором строчке, далее это неизвестная переменная. Когда исправиш эти ошибки - поищем другие

to @lex"Старушка" это про Borland C++ 3.1, которая появилась в 92 году

Добавлено через 45 секунд
2 hanasi
Ошибка где пишется redefinition означает, что ты несколько раз обьявил переменную с одним именем, если передал в функцию параметром, то в теле функции не надо снова указывать ее тип.
Если в сигнатуре функции стоит тип переменной double, то почему ты в теле описываеш такую же переменную с типом int???
При передаче параметров в функцию возле каждого параметра указывают его тип, по типам не группируют, в списке параметров может быть только ",", а не ";"

В конце каждой строчки всегда ставится ";". НО!!! После for(; точка с запятой не ставится!!! Только если это не намеренный пустой цикл.

{} - не ставится где угодно, а только в условиях if(если более одной выполняемой строки), при переходах switch, в циклах while(если более одной выполняемой строки), for(если более одной выполняемой строки), do while, тела функции, пространства имен, класса, структуры. Количество открывающих скобок должно быть равно количеству закрывающих

С++ does not support default-int - возле main указывай его тип

Чтобы пользоватся константами лучше пиши так:
C++
1
#define Pi 3.1415926536
Самое быстродействующее возведение в степень - это умножение вручную
C++
1
z = a*a*a*a
. Если же изначально степень не известна, то используй или
C++
1
2
for(int i = 0; i <tvoei_stepeni; ++i)
        z *= a;
или
C++
1
z = Pow(a, tvoja_stepen);
А где ты нашел на клаве такие кавычки " ” "? Вообще-то ставят те который возле энтера находятся " " "(ну или на двойке, в зависимости от языка)

Невозможно вернуть несколько переменных из функции. Вот поэтому необходимо начинать с ассемблера. На return выделяется регистр eax (размером в 4 байта), туда записывается один адрес, а ты решил вернуть целых четыре
C++
1
2
return dist2, dr; 
return mdArray1, mdArray2;
Если это так необходимо, то возвращай массив
Цитата Сообщение от hanasi
Я знаю, что эта прога просто ужасна по стилю и по логике и вообще мне за неё стыдно, но фактически эта моя первая прога на с++. Может кто её в порядок приведет.
Так зачем начинать сразу с таких программ? Начни писать что-то попроще. Без обид, но в этой программе даже циклы непонятно написаны. Прочитай что такое глобальная и локальная видимость переменных
C++
1
2
3
4
5
for ( int iplanet =1 ; iplanet <=2 ; ++iplanet);// суммирование по планетам
 int dist2 = mdArray1 [iplanet] [1]+ mdArray1 [iplanet] [1]; 
 int dist2 = dist1 + mdArray1 [iplanet] [2] + mdArray1 [iplanet] [2];// рас-ние планеты от Солнца
 
  int myArray1[iplanet] = sqr(dist2);
твой iplanet видно только в следующей за фором строчке, далее это неизвестная переменная. Когда исправиш эти ошибки - поищем другие

2 @lex"Старушка" это про Borland C++ 3.1, который появился в 92 году
1
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
15.07.2009, 12:10 13
M128K145,

Не по теме:

аа)))))ну ясно....но все равно студия лучше......лучше тем что можно на всех языках программировать

0
0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
15.07.2009, 17:53  [ТС] 14
M128K145
спасибо за проделанный труд.
Пойду исправлять.
Я бы рад с прог,что попроще начать, но меня заставили сделать конкретно эту в максимально сжатый срок, поэтому выбора у меня нету.

"у меня одна ошибка: не может найти файл
#include"TXLib.h"...
удалил это не может теперь найти math.h......ПОЧЕМУ??
----
а в других местах ошибок не находит...вроде код норм
Цитата Сообщение от @lex Посмотреть сообщение
у меня одна ошибка: не может найти файл
#include"TXLib.h"...
удалил это не может теперь найти math.h......ПОЧЕМУ??
----
а в других местах ошибок не находит...вроде код норм
""
@lex это фраза к моей проге относилась?

Добавлено через 1 час 19 минут 4 секунды
Цитата Сообщение от M128K145 Посмотреть сообщение
Код C++1
2
3
4
5
for ( int iplanet =1 ; iplanet <=2 ; ++iplanet);// суммирование по планетам
*int dist2 = mdArray1 [iplanet] [1]+ mdArray1 [iplanet] [1];
*int dist2 = dist1 + mdArray1 [iplanet] [2] + mdArray1 [iplanet] [2];// рас-ние планеты от Солнца
*
* int myArray1[iplanet] = sqr(dist2);твой iplanet видно только в следующей за фором строчке, далее это неизвестная переменная.
Сказать поправде я не знаю как запихнуть в массив iplanet этот. нужно чтоб сначало iplanet в массиве значение 1 а потом 2.

А вообще после исправлений теперь ругается только на
In function `int main(int, double)':
в строке
C++
1
cout << Euler (mdArray3[2][2], myArray1[2][2], dt, dr, r3, dist2, accel, GM);
на invalid types `int[int]' for array subscript и At global scope:
и в этом цикле
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
do {
//вызов функций
 
cout << outpost (i1, j1, i2, j2) <<" "; 
cout << endl;
cout << initial (mdArray1[2][2], mdArray2[2][2],dt ,plot_period); 
cout << endl;
cout << Euler (mdArray3[2][2], myArray1[2][2], dt, dr, r3, dist2, accel, GM); 
cout << endl;
 
} while ((mdArray1[1][1]!=0)||(mdArray1[2][1]!=0));
 
cout << "Смотрите"  << endl;
getch();
return 0;
}
}
{
ругается на expected declaration before '}' token
Догадываюсь .что значат эти ошибки но исправить их не получается
И наверное всё же и првда мои циклы не заработают в этом виде(
PS Читаю усердно про области видимости переменных
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.07.2009, 18:07 15
C++
1
2
3
4
return 0;
}
}//что это, и...
{//...это?
Кинь весь проект, если не сложно и задание, я посмотрю
1
0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
15.07.2009, 20:32  [ТС] 16
M128K145 отписал в личку.
0
insolent
15.07.2009, 21:50
  #17

Не по теме:

hanasi, я бы тоже хотел взглянуть на задание

0
0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
15.07.2009, 22:05  [ТС] 18
insolent выслал в личку
0
15.07.2009, 22:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2009, 22:05
Помогаю со студенческими работами здесь

Ошибки компиляции
Пожалуйсто,помогите! Очень надо #include &lt;cmath&gt; #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include...

Ошибки компиляции
Иногда при незначительном изменении рабочей программы возникает куча ошибок (см. скриншот). Такое...

Ошибки после компиляции на Visual Express 2012.Ошибки в теме
Добрый вечер ребят помогите пожалуйста.Программа написана на Visual Express 2012.Обясните что...

Ошибки компиляции
Здравствуйте. Что то никак не пойму как избавиться от одной проблемы, в общем так: создаю Plain C++...

Ошибки при компиляции - исправить ошибки в коде
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include &lt;conio.h&gt;...

Ошибки в компиляции
Есть исходники: . Это исходники программы UPDchat (простейший чат в виде консоли). Так вот, не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru