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

есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. - C++

Восстановить пароль Регистрация
 
yangicher
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 29
27.11.2011, 12:44     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #1
Программа для решения обычных уравнений методом адамса, не работает.... 3 ошибки здесь:
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
#include <math.h>
#include <stdio.h>
const float a=0,b=2;             // bounds of the interval
const int num_points=10,         // number of points to solve
          num_starting_points=4; // number of points to solve with Runge-Kutta method
float x0=0,y0=1;                 // starting conditions
float f(float x, float y)
{
  return x+y;  // y'=x+y
}
// this function realises Runge-Kutta method for n starting points
void calculate(float *y)
{
  float k1,k2,k3,k4,x,yi,h;
  h=(b-a)/num_points;  // step
  yi=y0; x=x0;
  for (int i=0;i<num_starting_points;i++)
  {
    k1=h*f(x,yi);
    k2=h*f(x+h/2,yi+k1/2);
    k3=h*f(x+h/2,yi+k2/2);
    k4=h*f(x+h,yi+k3);
    yi+=(k1+2*k2+2*k3+k4)/6;
    x+=h;
    *(y+i+1)=yi;
  }
}
void main(void)
{
  float y[num_points+1],h;
  y[0]=y0;
  // apply Runge-Kutta method
  calculate(y);
  h=(b-a)/num_points;
  // extrapolating
  for (int i=num_starting_points;i<num_points;i++)
    y[i] = y[i-1]+h/24*(55*f(x0+(i-1)*h,y[i-1])-
             59*f(x0+(i-2)*h,y[i-2])+
             37*f(x0+(i-3)*h,y[i-3])-
             9*f(x0+(i-4)*h,y[i-4]));
  printf("X\t\tY\t\tExact solution\n");
  for (i=0;i<num_points;i++)
    printf("%f\t%f\t%f\n",(x0+i*h),y[i],(2*exp(x0+i*h)-(x0+i*h)-1));
}
вот ошибки:
c:\program files\microsoft visual studio\myprojects\8834\98.cpp(6) : error C2373: 'y0' : redefinition; different type modifiers
c:\program files\microsoft visual studio\vc98\include\math.h(434) : see declaration of 'y0'
c:\program files\microsoft visual studio\myprojects\8834\98.cpp(16) : error C2440: '=' : cannot convert from 'double (__cdecl *)(double)' to 'float'
There is no context in which this conversion is possible
c:\program files\microsoft visual studio\myprojects\8834\98.cpp(31) : error C2440: '=' : cannot convert from 'double (__cdecl *)(double)' to 'float'
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 12:44     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста.
Посмотрите здесь:

C++ Подскажите где в программе может быть ошибка
C++ Пожалуйста, подскажите в чем у меня ошибка?
Подскажите кто может и найдите ошибки в программе)) C++
пример на файлы. у меня в коде есть ошибки, но я не знаю, как их исправить C++
C++ Подскажите пожалуйста какие ошибки здесь есть - или что не соблюдено.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.11.2011, 12:52     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #2
yangicher, теперь компилируется
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
#include <math.h>
#include <stdio.h>
const float a=0,b=2;             // bounds of the interval
const int num_points=10,         // number of points to solve
          num_starting_points=4; // number of points to solve with Runge-Kutta method
float x0=0,y0=1;                 // starting conditions
float f(float x, float y)
{
  return x+y;  // y'=x+y
}
// this function realises Runge-Kutta method for n starting points
void calculate(float *y)
{
  float k1,k2,k3,k4,x,yi,h;
  h=(b-a)/num_points;  // step
  yi=y0; x=x0;
  for (int i=0;i<num_starting_points;i++)
  {
    k1=h*f(x,yi);
    k2=h*f(x+h/2,yi+k1/2);
    k3=h*f(x+h/2,yi+k2/2);
    k4=h*f(x+h,yi+k3);
    yi+=(k1+2*k2+2*k3+k4)/6;
    x+=h;
    *(y+i+1)=yi;
  }
}
void main(void)
{
  float y[num_points+1],h;
  y[0]=y0;
  // apply Runge-Kutta method
  calculate(y);
  h=(b-a)/num_points;
  // extrapolating
  for (int i=num_starting_points;i<num_points;i++)
    y[i] = y[i-1]+h/24*(55*f(x0+(i-1)*h,y[i-1])-
             59*f(x0+(i-2)*h,y[i-2])+
             37*f(x0+(i-3)*h,y[i-3])-
             9*f(x0+(i-4)*h,y[i-4]));
  printf("X\t\tY\t\tExact solution\n");
  for (int i=0;i<num_points;i++)
    printf("%f\t%f\t%f\n",(x0+i*h),y[i],(2*exp(x0+i*h)-(x0+i*h)-1));
}
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
27.11.2011, 13:02     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #3
y0 уже был объявлен в math.h. Переименуйте название переменной.
Если численно решаете задачу, то используйте double. Результаты точнее будут.

Не по теме:

Странно немного. У меня также y0 объявлен как функция в /usr/include/i386-linux-gnu/bits/mathcalls.h



Добавлено через 1 минуту
Цитата Сообщение от go Посмотреть сообщение
теперь компилируется
Bash
1
2
3
4
5
6
7
8
9.cpp:6:12: ошибка: «float y0» redeclared as different kind of symbol
/usr/include/i386-linux-gnu/bits/mathcalls.h:241:1: ошибка: previous declaration of «double y0(double)»
9.cpp: В функции «void calculate(float*)»:
9.cpp:16:6: ошибка: cannot convert «double(double)throw ()» to «float» in assignment
9.cpp: At global scope:
9.cpp:28:15: ошибка: «::main» должна возвращать «int»
9.cpp: В функции «int main()»:
9.cpp:31:8: ошибка: cannot convert «double(double)throw ()» to «float» in assignment
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.11.2011, 13:15     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #4
Евгений М.,
Миниатюры
есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста.  
yangicher
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 29
27.11.2011, 13:34  [ТС]     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #5
Цитата Сообщение от go Посмотреть сообщение
Евгений М.,
напиши код что у тебя там, со скрином.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.11.2011, 13:37     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #6
yangicher, есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста.
yangicher
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 29
27.11.2011, 14:11  [ТС]     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #7
у меня все также((
есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста.
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
27.11.2011, 14:21     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #8
yangicher,
Цитата Сообщение от Евгений М. Посмотреть сообщение
y0 уже был объявлен в math.h. Переименуйте название переменной.
- это пробовали?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.11.2011, 14:35     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #9
yangicher, а сразу нельзя было сказать?
вообще это проблемы студии
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
#include <math.h>
#include <stdio.h>
const float a=0,b=2;             // bounds of the interval
const int num_points=10,         // number of points to solve
                  num_starting_points=4; // number of points to solve with Runge-Kutta method
//float x0=0,y0=1;                 // starting conditions
float f(float x, float y)
{
  return x+y;  // y'=x+y
}
// this function realises Runge-Kutta method for n starting points
void calculate(float *y)
{
  float k1,k2,k3,k4,x,yi,h;
  h=(b-a)/num_points;  // step
  yi=1; x=0;
  for (int i=0;i<num_starting_points;i++)
  {
        k1=h*f(x,yi);
    k2=h*f(x+h/2,yi+k1/2);
        k3=h*f(x+h/2,yi+k2/2);
    k4=h*f(x+h,yi+k3);
        yi+=(k1+2*k2+2*k3+k4)/6;
        x+=h;
        *(y+i+1)=yi;
  }
}
void main(void)
{
  float y[num_points+1],h;
  y[0]=1;
  float x0=0;
  // apply Runge-Kutta method
  calculate(y);
  h=(b-a)/num_points;
  // extrapolating
  for (int i=num_starting_points;i<num_points;i++)
        y[i] = y[i-1]+h/24*(55*f(x0+(i-1)*h,y[i-1])-
                         59*f(x0+(i-2)*h,y[i-2])+
                         37*f(x0+(i-3)*h,y[i-3])-
                         9*f(x0+(i-4)*h,y[i-4]));
  printf("X\t\tY\t\tExact solution\n");
  for (int i=0;i<num_points;i++)
        printf("%f\t%f\t%f\n",(x0+i*h),y[i],(2*exp(x0+i*h)-(x0+i*h)-1));
  getchar ();
}
Добавлено через 7 минут
А вообще вот
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
#include <math.h>
#include <stdio.h>
const float a=0,b=2;             // bounds of the interval
const int num_points=10,         // number of points to solve
                  num_starting_points=4; // number of points to solve with Runge-Kutta method
float x0=0,yy=1;                 // starting conditions
float f(float x, float y)
{
  return x+y;  // y'=x+y
}
// this function realises Runge-Kutta method for n starting points
void calculate(float *y)
{
  float k1,k2,k3,k4,x,yi,h;
  h=(b-a)/num_points;  // step
  yi=yy; x=x0;
  for (int i=0;i<num_starting_points;i++)
  {
        k1=h*f(x,yi);
    k2=h*f(x+h/2,yi+k1/2);
        k3=h*f(x+h/2,yi+k2/2);
    k4=h*f(x+h,yi+k3);
        yi+=(k1+2*k2+2*k3+k4)/6;
        x+=h;
        *(y+i+1)=yi;
  }
}
void main(void)
{
  float y[num_points+1],h;
  y[0]=yy;
  // apply Runge-Kutta method
  calculate(y);
  h=(b-a)/num_points;
  // extrapolating
  for (int i=num_starting_points;i<num_points;i++)
        y[i] = y[i-1]+h/24*(55*f(x0+(i-1)*h,y[i-1])-
                         59*f(x0+(i-2)*h,y[i-2])+
                         37*f(x0+(i-3)*h,y[i-3])-
                         9*f(x0+(i-4)*h,y[i-4]));
  printf("X\t\tY\t\tExact solution\n");
  for (int i=0;i<num_points;i++)
        printf("%f\t%f\t%f\n",(x0+i*h),y[i],(2*exp(x0+i*h)-(x0+i*h)-1));
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2011, 14:47     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста.
Еще ссылки по теме:

Ошибки я не пойму что от меня хотят C++
C++ Подскажите, где ошибки в программе
C++ Есть ли тут ошибки? У меня С++ виснет и ничего не выдает

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

Или воспользуйтесь поиском по форуму:
yangicher
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 29
27.11.2011, 14:47  [ТС]     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста. #10
спасибо!)
Yandex
Объявления
27.11.2011, 14:47     есть ошибки в программе, может что то с компилятором у меня, подскажите пожалуйста.
Ответ Создать тему
Опции темы

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