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

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

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

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

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

Здравстуйте все.
В процессе написания одной проги на с++ в 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)
Думаю знать что значат эти ошибки полезно всем начинающим
Я догадываюсь, что большинство этих ошибок по невнимательности или из-за нехватки опыта(я зеленый новичок которого прижали к стенке с требованием это сделать)
Но я надеюсь, что с вашей помощью мне всё же удастся довести эту клятую прогу до ума.
Готов выслушать нелестные отзывы о том что нужно книжки читат а не ждать помощи тут, но сроки сильно поджимают.
Сам листинг прогивылаживать думаю смысла нету тк судя по всему там ошибки на каждом шагу(
Хотелось бы для начала хотя бы понять эти ошибки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
14.07.2009, 20:39     Ошибки в компиляции #2
кинь код, так проще будет
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
14.07.2009, 20:46     Ошибки в компиляции #3
кин код

Добавлено через 38 секунд
да и вообще, используй VSTUDIO 2008
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
14.07.2009, 20:50     Ошибки в компиляции #4
@lex, хватит про 2008 студию. Мне вон для написания консольных прог понравился Borland C++ 3.1, так я ж не говорю всем на этой старушке писать
insolent
826 / 347 / 15
Регистрация: 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) можете тут или тут
+
напиши код(или фрагменты, где эти ошибки возникают) для помощи по ошибкам(мы же не екстрасексы и не знаем, что ты там "начудил")
hanasi
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;
}
Я знаю, что эта прога просто ужасна по стилю и по логике и вообще мне за неё стыдно, но фактически эта моя первая прога на с++. Может кто её в порядок приведет.
((((((((((((((((((
Vourhey
Почетный модератор
6473 / 2248 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
15.07.2009, 02:35     Ошибки в компиляции #7
И даже подсветка кода на форуме указывала на одну из ошибок...
Gravity
557 / 551 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
15.07.2009, 02:40     Ошибки в компиляции #8
Код
double initial (int mdArray1, mdArray2; 
                double  dt ,plot_period)
Гы, лол (c). С паскаля перешли?
hanasi
0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
15.07.2009, 04:50  [ТС]     Ошибки в компиляции #9
" На многих форумах дают всякие звездочки и статусы за сообщения, дабы чувствовать себя полноправным и крутым завсегдатаем пишите в любых темах сообщения по такому шаблону: два смайлика (желательно разных) + слово "Да" (а еще лучше "Ага" или "Гы")"
Gravity а где смайлики?)
Поэтому собственно и не хотелось вылаживать код.
Я действительно очень много не понимаю в этом языке программирования,
но я спрашивал о конкретных ошибках, так как всё же надеюсь разобраться.
interferent
5 / 4 / 0
Регистрация: 15.07.2009
Сообщений: 7
15.07.2009, 05:35     Ошибки в компиляции #10
>:-)
Намекаю на 1-ю ошибку: в строке 8. Не хватает <>. Сравните заодно со 2-й строкой....
Намекаю также, что кроме "гы" в предшествующем сообщении цитата из программы...
И вообще, повнимательней относитесь к компилятору, он ещё и указывает, где ошибки, обычно...
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
15.07.2009, 10:11     Ошибки в компиляции #11
M128K145,
старушка это ты к студио?

Добавлено через 3 минуты 27 секунд
у меня одна ошибка: не может найти файл
#include
"TXLib.h"...
удалил это не может теперь найти math.h......ПОЧЕМУ??
----
а в других местах ошибок не находит...вроде код норм
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
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 году
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
15.07.2009, 12:10     Ошибки в компиляции #13
M128K145,

Не по теме:

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

hanasi
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 Читаю усердно про области видимости переменных
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
15.07.2009, 18:07     Ошибки в компиляции #15
C++
1
2
3
4
return 0;
}
}//что это, и...
{//...это?
Кинь весь проект, если не сложно и задание, я посмотрю
hanasi
0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
15.07.2009, 20:32  [ТС]     Ошибки в компиляции #16
M128K145 отписал в личку.
insolent
15.07.2009, 21:50
  #17

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2009, 22:05     Ошибки в компиляции
Еще ссылки по теме:

C++ Ошибки компиляции
Ошибки при компиляции C++
C++ Ошибки при компиляции
C++ Ошибки при компиляции
Исправить ошибки компиляции C++

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

Или воспользуйтесь поиском по форуму:
hanasi
0 / 0 / 0
Регистрация: 14.07.2009
Сообщений: 6
15.07.2009, 22:05  [ТС]     Ошибки в компиляции #18
insolent выслал в личку
Yandex
Объявления
15.07.2009, 22:05     Ошибки в компиляции
Ответ Создать тему
Опции темы

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