C2447 ошибка c

kuklus

0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

1

20.10.2009, 12:59. Показов 14887. Ответов 27

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

ривет, я вот только начинаю не ругайтесь, написал по учебнику вот такое

C++
1
2
3
4
5
6
7
#include <iostream.h> 
#include <stdafx.h>
void main (void);
 
{ 
    cout << "типа хело ворлд";
}

а VisualC++ при компиле пишет:
error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
я не понял что он имеет ввиду



0



8 / 8 / 0

Регистрация: 21.09.2009

Сообщений: 84

20.10.2009, 13:07

2

Строку

Цитата
Сообщение от kuklus
Посмотреть сообщение

void main (void);

исправить путем убирания точки с запятой в конце
и лучше написать так
int main(int argc, char *argv[])



0



IT_Exp

MCSD: APP BUILDER

8794 / 1073 / 104

Регистрация: 17.06.2006

Сообщений: 12,603

20.10.2009, 13:10

3

kuklus,
у тебя опечатки в учебнике… ну или всё расплывается перед глазами

правильно так (для старых компиляторов):

C++
1
2
3
4
5
6
7
8
#include "stdafx.h"
#include <iostream.h>
 
int main (void)
{
    cout << "типа хело ворлд";
    return 0;
}

наличие первой строчки — необязательно и зависит от настроек компилятора (в данном случае — Visual Studio)

для современных компиляторов код выглядит так:

C++
1
2
3
4
5
6
7
#include <iostream>
 
int main (void)
{
    std::cout << "типа хело ворлд";
    return 0;
}

http://codepad.org/5HYDjeLW



0



0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 13:27

 [ТС]

4

последний пример (для современных компиляторов) тоже не работает пишет
fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву «#include «stdafx.h»» в источник.

может это из-за того что у меня win7?



0



1664 / 1133 / 80

Регистрация: 21.08.2008

Сообщений: 4,726

Записей в блоге: 1

20.10.2009, 13:42

5

Цитата
Сообщение от kuklus
Посмотреть сообщение

последний пример (для современных компиляторов) тоже не работает пишет fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву «#include «stdafx.h»» в источник. может это из-за того что у меня win7?

вы забыли добавить директиву «#include «stdafx.h»



0



kuklus

0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 13:48

 [ТС]

6

добавил.
ошибка.

C++
1
2
3
4
5
6
7
#include <iostream>
#include <stdafx.h>
int main (void)
{
    std::cout << "типа хело ворлд";
    return 0;
}

1. warning C4627: #include <iostream>: пропущен при поиске использования предкомпилированного заголовка

2. error C2653: std: не является именем класса или пространства имен

3. error C2065: cout: необъявленный идентификатор



0



oxotnik

1664 / 1133 / 80

Регистрация: 21.08.2008

Сообщений: 4,726

Записей в блоге: 1

20.10.2009, 13:54

7

C++
1
2
3
4
5
6
7
8
#include "stdafx.h"
#include <iostream>
 
int main (void)
{
    std::cout << "типа хело ворлд";
    return 0;
}

PS: к стати, выведет кракозябры на консоль, для перевода в читабельный вид CharToOem/OemToChar



0



0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 14:01

 [ТС]

8

Ещё один вопрос как добавить манифест, из-за него ещё ошибка типо он не подключен( как с этим бороться?



0



1664 / 1133 / 80

Регистрация: 21.08.2008

Сообщений: 4,726

Записей в блоге: 1

20.10.2009, 14:05

9



1



0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 14:29

 [ТС]

10

Ещё вопрос как мне посмотреть на форму стандартной программы? ну чтобы например там кнопочку сделать? wizard типо чтоли…



0



1664 / 1133 / 80

Регистрация: 21.08.2008

Сообщений: 4,726

Записей в блоге: 1

20.10.2009, 14:32

11

в Solution Explorer-e ищешь файл ресурсов, в нем есть формочка (если ее туда поставил) 2 раза жамкаешь на нее и открывается редактор визуальных ресурсов.



0



0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 14:39

 [ТС]

12

в Solution Explorer-e =— тоесть обозреватель решений?
там много всяких файлов и на какой не жму открывается в виде текста.

есть файл 2.rc который если открыть то VC пишет что нельзя редактировать ресурсы в версии експресс типо..



0



1664 / 1133 / 80

Регистрация: 21.08.2008

Сообщений: 4,726

Записей в блоге: 1

20.10.2009, 14:50

13

Цитата
Сообщение от kuklus
Посмотреть сообщение

VC пишет что нельзя редактировать ресурсы в версии експресс типо.

тады ой..



0



0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 14:52

 [ТС]

14

как же учиться то((((



0



8 / 8 / 0

Регистрация: 21.09.2009

Сообщений: 84

20.10.2009, 15:15

15

Попробуй запустить мастера создания нового проекта.
Через File-New-Project
И в ходе диалога выбери про Windows Form
Или почитай книгу «C/C++ и MS Visual C++ для начинающих»
А лучше и то и то



0



0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 15:22

 [ТС]

16

где тут форма?

я уже создал стандартный проект.
после компиля форма есть тоесть когда запускаешь прогу она работает.
где её редактировать?



0



1664 / 1133 / 80

Регистрация: 21.08.2008

Сообщений: 4,726

Записей в блоге: 1

20.10.2009, 15:27

17

боюсь что в экспресс студии возможностей визуального редактирования формы нет
в платной форма лежит в файле *.rc и ее можно открыть редактором ресурсов.



0



kuklus

0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 15:44

 [ТС]

18

а в DEV-C++ где визуальный редактор?

Добавлено через 13 минут
как в консольном приложении сделать паузу чтобы увидеть что там написано?

C++
1
2
3
4
5
6
7
#include "stdafx.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}



0



1664 / 1133 / 80

Регистрация: 21.08.2008

Сообщений: 4,726

Записей в блоге: 1

20.10.2009, 15:57

19

Цитата
Сообщение от kuklus
Посмотреть сообщение

как в консольном приложении сделать паузу чтобы увидеть что там написано?

getch()
или
std::cin
или если по виндой
system(«pause»)



1



0 / 0 / 0

Регистрация: 20.10.2009

Сообщений: 12

20.10.2009, 16:08

 [ТС]

20

Цитата
Сообщение от oxotnik
Посмотреть сообщение

PS: к стати, выведет кракозябры на консоль, для перевода в читабельный вид CharToOem/OemToChar

как этим пользоваться?
написал в int _tmain()
;int CharToOem() пишет ошибка error C4716: CharToOem: должна возвращать значение



0



I don’t know if I’m going crazy, or just that everything I’ve read on this error doesn’t apply to my situation. But I’m getting these errors when I compile my project:

1>f:program filestestenginetestenginetestenginegame.cpp(10) : error C2061: syntax error : identifier '{ctor}'
1>f:program filestestenginetestenginetestenginegame.cpp(11) : error C2143: syntax error : missing ';' before '{'
1>f:program filestestenginetestenginetestenginegame.cpp(11) : error C2447: '{' : missing function header (old-style formal list?)
1>f:program filestestenginetestenginetestenginegame.cpp(15) : error C2059: syntax error : 'public'
1>f:program filestestenginetestenginetestenginegame.cpp(16) : error C2143: syntax error : missing ';' before '{'
1>f:program filestestenginetestenginetestenginegame.cpp(16) : error C2447: '{' : missing function header (old-style formal list?)

So, I Google’d the error, and everyone said this is caused by things like extra and/or missing semicolons and brackets. But I’ve looked over my code a lot (there’s not very much!) and I don’t see any of that, unless of course, as I previously suggested, I’m going crazy…

Game.h

#ifndef _SBE_CGAME_
#define _SBE_CGAME_

class CGame
{
public:
    CGame();
    ~CGame();

    void DoLoop();
};
#endif //_SBE_CGAME_

Game.cpp

#include "base.h"

extern CGame* m_gGame;

CGame::CGame()
{
    //
}

~CGame::CGame()
{
    //
}

public void CGame::DoLoop()
{
    SwapBuffers(hDC);
}

Base.h

#include <windows.h>        // Header File For Windows ==NEEDS TO COME BEFORE GL.H AND GLU.H==
#include <glgl.h>
#include <glglu.h> 

#include "Properties.h"
#include "Game.h"
#include "Renderer.h"

#ifndef _SBE_BASE_
#define _SBE_BASE_

extern CGame* m_gGame;

#endif //_SBE_BASE_

Globals.cpp

#include "base.h"

//=================================================================================
// Here is where we define all the global variables
//=================================================================================
CGame* m_gGame = new CGame();

What am I overlooking? I will admit, its been a while since I’ve programmed C++, but I reread class definition articles and all sorts of things. I have this not-so-strange feeling that its going to be something very silly, that I should have seen.

Help me solve this error! Thank you very much!

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <stdio.h>
#include <math.h>
#include<iostream>
using namespace std;
#define N 2 // number of equations
#define dist 0.1 //step size
#define MIN 0.0   //minimum x
#define MAX 10.0  //maximum x
int main() {
    double x, y[N];
    //int j;
    void runge4(double x, double y[], double step);         //header
    double f(double x, double y[], int i);
    FILE *output; // save data in rk4.dat
    output= fopen("rk4.dat","w"); 
    y[0]= 1.0;//initial position
    y[1]= 0.0;///initial velocity
    fprintf(output, "%f/t%f/n",x,y[0]); 
    for (x= MIN; x<= MAX; x+= dist) {
        runge4(x, y,dist);
        fprintf(output,"%f/t%f/n", x, y[0]); //position vs time
    }
    printf("data stored in rk4.datn");
    fclose(output); 
} //end of main program
void runge4(double x, double y[], double step); 
 {  //rk4 subroutine
   double f(double x, double y[], int i);
   double h = step/2.0
   t1[N],t2[N],t3[N],k1[N],k2[N],k3[N],k4[N];
   int i;
   for (i = 0; i<N; i++) t1[i]=y[i]+0.5*(k1[i]=step*f(x,y,i));
   for (i = 0; i<N; i++) t2[i]=y[i]+0.5*(k2[i]=step*f(x+h,t1,i));
   for (i = 0; i<N; i++) t3[i]=y[i]+(k3[i]=step*f(x+h,t2,i));
   for (i = 0; i<N; i++) k4[i]=step*f(x+step,t3,i);
   for (i = 0; i<N; i++) y[i]+=(k1[i]+2*k2[i]+2*k3[i]+k4[i])/6.0;
 }
double f(double x, double y[], int i) 
{ //RHS equations
if (i==0) return(y[1]);           //RHS of first equation
if (i==1) return(-y[0]);          //RHS of second equation
}

It’s 4th order runger-kutta solution for harmonic oscillator, i got this from computational physics H.Landau.I don’t know how to fix this, please help me!

Help me solve this error! Thank you very much!

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <stdio.h>
#include <math.h>
#include<iostream>
using namespace std;
#define N 2 // number of equations
#define dist 0.1 //step size
#define MIN 0.0   //minimum x
#define MAX 10.0  //maximum x
int main() {
    double x, y[N];
    //int j;
    void runge4(double x, double y[], double step);         //header
    double f(double x, double y[], int i);
    FILE *output; // save data in rk4.dat
    output= fopen("rk4.dat","w"); 
    y[0]= 1.0;//initial position
    y[1]= 0.0;///initial velocity
    fprintf(output, "%f/t%f/n",x,y[0]); 
    for (x= MIN; x<= MAX; x+= dist) {
        runge4(x, y,dist);
        fprintf(output,"%f/t%f/n", x, y[0]); //position vs time
    }
    printf("data stored in rk4.datn");
    fclose(output); 
} //end of main program
void runge4(double x, double y[], double step); 
 {  //rk4 subroutine
   double f(double x, double y[], int i);
   double h = step/2.0
   t1[N],t2[N],t3[N],k1[N],k2[N],k3[N],k4[N];
   int i;
   for (i = 0; i<N; i++) t1[i]=y[i]+0.5*(k1[i]=step*f(x,y,i));
   for (i = 0; i<N; i++) t2[i]=y[i]+0.5*(k2[i]=step*f(x+h,t1,i));
   for (i = 0; i<N; i++) t3[i]=y[i]+(k3[i]=step*f(x+h,t2,i));
   for (i = 0; i<N; i++) k4[i]=step*f(x+step,t3,i);
   for (i = 0; i<N; i++) y[i]+=(k1[i]+2*k2[i]+2*k3[i]+k4[i])/6.0;
 }
double f(double x, double y[], int i) 
{ //RHS equations
if (i==0) return(y[1]);           //RHS of first equation
if (i==1) return(-y[0]);          //RHS of second equation
}

It’s 4th order runger-kutta solution for harmonic oscillator, i got this from computational physics H.Landau.I don’t know how to fix this, please help me!

Столкнулся с такой задачей, где нужно реализовать свой list. По примеру из источника я в шаблонный класс включил обычный класс.

template<class T>class List {
   class Node {
   public:
    T d;
    Node *next, *prev;
        Node(T dat = 0) { d = dat; next = 0; prev = 0; }
};
    Node *pbeg, *pend;
public:
    List() { pbeg = 0; pend = 0; }
   ~List();
   void add(T d);
   Node * find(T i);
   Node * insert(T key,T d);
   bool remove(T key);
   void print();
   void print_back();
};

Без методов


Node * find(T i);
Node * insert(T key,T d);

код компилируется, а с ними нет и выдает гору ошибок типа:

Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2447 {: отсутствует заголовок функции (возможно, используется формальный список старого типа) Шаблонный_класс_вариант2 c:usersсемёнdocumentsvisual studio 2015projectsшаблонный_класс_вариант2шаблонный_класс_вариант2list.h 101
Серьезность Код Описание Проект Файл Строка Состояние подавления

Ошибка C2988 неопознанное объявление или определение шаблона Шаблонный_класс_вариант2 c:usersсемёнdocumentsvisual studio 2015projectsшаблонный_класс_вариант2шаблонный_класс_вариант2list.h 99

сама реализация методов:

template<class T> Node* List<T>::find(T i) {
   Node *pv = pbeg;
   while (pv)
   {
       if (pv->d == i)
           break;
       pv = pv->next;
   }
   return pv;
 }

  template<class T> Node * List<T>::insert(T key, T d) {
      if (Node* pkey = find(key)) {
       Node* pv = new Node(d);
       pv->next = pkey->next;
        pv->prev = pkey;
       pkey->next = pv;
       if (pkey != pend)
           (pv->next)->prev = pv;
       else
           pend = pv;
      return pv;
    }
   return 0;
  }

В чем подвох? Спасибо.

Войти или зарегистрироваться

  1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Solved Не хочет компилировать

Тема в разделе ‘Кодинг/Собственные решения’, создана пользователем Sk1llz, 26 сен 2012.

  1. Sk1llz
    Ньюфаг

    Сообщения:
    12
    Спасибы:
    0
    Дата начала использования бота:
    1.11.2011

    Хотел поставить себе «правила» . Но после компиляции вылетают ошибки.
    вот то что хотел поставить , ставил его в команды game.ccp

    Код:

              //
        // !RULEZZZZ
        //
     
        if ( Command == "rules" )
        {
            SendChat( "1-е: не дрочить");
            SendChat("2-е: темболее с улыбкой на лице");
            SendChat("3-e: не кусатсо");
                    }

    Так же когда ставлю «Fake», куча ошибок вылета
    Ghostone 1.7.266

  2. Doterok
    Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011

    код, факе и прочее
    куда ставил (по 5 строчек снизу с верху)
    зы к кодингу это не относится все вопросы поднимались неоднократно

  3. Sk1llz
    Ньюфаг

    Сообщения:
    12
    Спасибы:
    0
    Дата начала использования бота:
    1.11.2011

    Не понял ответ «код, факе и прочее
    куда ставил (по 5 строчек снизу с верху)»
    Ps. Просто хочу розобратся

  4. ViperNight
    ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:

    Мой статус

    В файле game_base.cpp нарушен синтаксис, если там поправить, то останется 3 однотипных ошибки с методом, которые исправляются путём передачи в метод первым параметром слово player.

    Код:

    SendChat( player, "~~~~~~~~" );
  5. Synth (LM)
    Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:

    Мой статус

(Вы должны войти или зарегистрироваться, чтобы ответить.)

Показать игнорируемое содержимое

Ваше имя или e-mail:
У Вас уже есть учётная запись?

Забыли пароль?

  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:

Запомнить меня

  • Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:
  • Искать только в этой теме
  • Искать только в этом разделе
    • Отображать результаты в виде тем

Быстрый поиск

  • Последние темы

Больше…

description title ms.date f1_keywords helpviewer_keywords ms.assetid

Learn more about: Compiler Error C2447

Compiler Error C2447

11/04/2016

C2447

C2447

d1bd6e9a-ee42-4510-ae5e-6b0378f7b931

Compiler Error C2447

‘{‘ : missing function header (old-style formal list?)

The compiler encountered an unexpected open brace at global scope. In most cases, this is caused by a badly-formed function header, a misplaced declaration, or a stray semi-colon. To resolve this issue, verify that the open brace follows a correctly-formed function header, and is not preceded by a declaration or a stray semi-colon.

This error can also be caused by an old-style C-language formal argument list. To resolve this issue, refactor the argument list to use modern style—that is, enclosed in parentheses.

The following sample generates C2447:

// C2447.cpp
int c;
{}       // C2447

  • Remove From My Forums
  • Question

  • I got this error and I have no idea what’s causing it. I haven’t been able to find a clear solution online.

    Code:

    #include <iostream>
    using namespace std;

     int main()
    {

    int NUM1, NUM2;

    cout << «Enter your first number: «;
    cin >> NUM1;
    cout << endl;

    cout << «Enter your second number: «;
    cin >> NUM2;
    cout << endl; cout << endl;           //moves cursor two lines down

    int SUM = NUM1 + NUM2;                //Sum
    int DIFF = NUM1 — NUM2;               //Difference
    int PROD = NUM1 * NUM2;               //Product
    int INT_QUO = NUM1 / NUM2;            //Integer quotient
    float FLT_QUO = ((float)NUM1) / NUM2; //Float quotient

        cout << «Sum: » << SUM;                  cout << endl;
    cout << «Difference: » << DIFF;          cout << endl;
    cout << «Product: » << PROD;             cout << endl;
    cout << «Integer Quotient: » << INT_QUO; cout << endl;
    cout << «Float Quotient: » << FLT_QUO;   cout << endl;

    return 0;
    }

    Help would be appreciated!

Answers

  • I also tried a generic «Hello World» code to the program out and I got the exact same error messages.

    Code:

    #include <iostream>
    using namespace std;
    int main()
    {
    cout << «Hello world!n»;
    system(«pause»);
    return 0;
    }

    Here’s the full error message:

    1>—— Build started: Project: CS215Lab1_01092019, Configuration: Debug Win32 ——
    1>HelloWorld.cpp
    1>Lab1.cpp
    1>c:usersCgrunchsourcereposcs215lab1_01092019cs215lab1_01092019lab1.cpp(8): error C2447: ‘{‘: missing function header (old-style formal list?)
    1>c:usersCgrunchsourcereposcs215lab1_01092019cs215lab1_01092019lab1.cpp(10): fatal error C1004: unexpected end-of-file found

    The build output suggests that you have both HelloWorld.cpp and Lab1.cpp
    in the same project. The compile errors are from Lab1.cpp so remove that 
    program from the project and and do a Rebuild with just HelloWorld.cpp in
    the project.

    It would help if you described the steps you followed when creating this
    project. Did you start from an Empty Project? Or did you use one of the
    supplied templates such as Win32 Console Application?

    — Wayne

    • Marked as answer by

      Thursday, January 10, 2019 5:32 PM

  • I restarted VS2017 and reopened the Project. VS asked me if I wanted to «normalize line endings» and I clicked «Yes». I removed HelloWorld.cpp and the program works fine now.

    Thank you so much for your help! :)

    • Marked as answer by
      CGrunch
      Thursday, January 10, 2019 5:32 PM

Добрый день.

Решаю такую задачку:
«Написать программу с использованием функции, определяющей из двух введённых чисел то,
которое имеет максимальную сумму цифр. Реализовать рекурсивный вариант решения такой задачи.»

Я написал так:

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
#include <iostream>
#include <conio.h> 
using namespace std;
int numerals(int); //Прототип функции
int Sum=0;
int main() 
{       
    int x, y, Sum_x, Sum_y;
    cout<<"Vvedite dva chisla x u y"<<endl<<"x="; 
    cin>>x; 
    cout<<"y=";
    cin>>y;
    Sum_x=numerals(x); //Возвращает сумму цифр числа x
    Sum_y=numerals(y);
    if (Sum_x > Sum_y) cout<<x;
    if (Sum_x < Sum_y) cout<<y;
    if (Sum_x == Sum_y) cout<<"Summa chifr chisel x u y ravni";     
    cout<<endl; 
    getch();  //Задерживает экран. Всё работает и без него
    return 0; //Завершает программу
}
 
int numerals(int Number); //Описание функции
{
    Sum+=Number%10;
    Number=Number/10;
    if (Number==0) return Sum;
    numerals(Number);
}

При компиляции в окне Вывод сообщение:

«1>—— Построение начато: проект: 15_Max_summa_chifr, Конфигурация: Debug Win32 ——
1>Компиляция…
1>15_Max_summa_chifr.cpp
1>d:my documentsпрограммирование_информатикаc++15_max_ summa_chifr15_max_summa_chifr.cpp(41) : warning C4996: ‘getch’: The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1> c:program files (x86)microsoft visual studio 9.0vcincludeconio.h(145): см. объявление ‘getch’
1>d:my documentsпрограммирование_информатикаc++15_max_ summa_chifr15_max_summa_chifr.cpp(46) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>Журнал построения был сохранен в «file://d:My documentsПрограммирование_ИнформатикаC++15_Max_ summa_chifrDebugBuildLog.htm»
1>15_Max_summa_chifr — ошибок 1, предупреждений 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========»

Как я понимаю, сообщение об ошибке вот это:
«error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)»

Вообще не понял, что это значит. Подскажите, пожалуйста кто-нибудь.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Help me solve this error! Thank you very much!

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <stdio.h>
#include <math.h>
#include<iostream>
using namespace std;
#define N 2 // number of equations
#define dist 0.1 //step size
#define MIN 0.0   //minimum x
#define MAX 10.0  //maximum x
int main() {
    double x, y[N];
    //int j;
    void runge4(double x, double y[], double step);         //header
    double f(double x, double y[], int i);
    FILE *output; // save data in rk4.dat
    output= fopen("rk4.dat","w"); 
    y[0]= 1.0;//initial position
    y[1]= 0.0;///initial velocity
    fprintf(output, "%f/t%f/n",x,y[0]); 
    for (x= MIN; x<= MAX; x+= dist) {
        runge4(x, y,dist);
        fprintf(output,"%f/t%f/n", x, y[0]); //position vs time
    }
    printf("data stored in rk4.datn");
    fclose(output); 
} //end of main program
void runge4(double x, double y[], double step); 
 {  //rk4 subroutine
   double f(double x, double y[], int i);
   double h = step/2.0
   t1[N],t2[N],t3[N],k1[N],k2[N],k3[N],k4[N];
   int i;
   for (i = 0; i<N; i++) t1[i]=y[i]+0.5*(k1[i]=step*f(x,y,i));
   for (i = 0; i<N; i++) t2[i]=y[i]+0.5*(k2[i]=step*f(x+h,t1,i));
   for (i = 0; i<N; i++) t3[i]=y[i]+(k3[i]=step*f(x+h,t2,i));
   for (i = 0; i<N; i++) k4[i]=step*f(x+step,t3,i);
   for (i = 0; i<N; i++) y[i]+=(k1[i]+2*k2[i]+2*k3[i]+k4[i])/6.0;
 }
double f(double x, double y[], int i) 
{ //RHS equations
if (i==0) return(y[1]);           //RHS of first equation
if (i==1) return(-y[0]);          //RHS of second equation
}

It’s 4th order runger-kutta solution for harmonic oscillator, i got this from computational physics H.Landau.I don’t know how to fix this, please help me!

Help me solve this error! Thank you very much!

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <stdio.h>
#include <math.h>
#include<iostream>
using namespace std;
#define N 2 // number of equations
#define dist 0.1 //step size
#define MIN 0.0   //minimum x
#define MAX 10.0  //maximum x
int main() {
    double x, y[N];
    //int j;
    void runge4(double x, double y[], double step);         //header
    double f(double x, double y[], int i);
    FILE *output; // save data in rk4.dat
    output= fopen("rk4.dat","w"); 
    y[0]= 1.0;//initial position
    y[1]= 0.0;///initial velocity
    fprintf(output, "%f/t%f/n",x,y[0]); 
    for (x= MIN; x<= MAX; x+= dist) {
        runge4(x, y,dist);
        fprintf(output,"%f/t%f/n", x, y[0]); //position vs time
    }
    printf("data stored in rk4.datn");
    fclose(output); 
} //end of main program
void runge4(double x, double y[], double step); 
 {  //rk4 subroutine
   double f(double x, double y[], int i);
   double h = step/2.0
   t1[N],t2[N],t3[N],k1[N],k2[N],k3[N],k4[N];
   int i;
   for (i = 0; i<N; i++) t1[i]=y[i]+0.5*(k1[i]=step*f(x,y,i));
   for (i = 0; i<N; i++) t2[i]=y[i]+0.5*(k2[i]=step*f(x+h,t1,i));
   for (i = 0; i<N; i++) t3[i]=y[i]+(k3[i]=step*f(x+h,t2,i));
   for (i = 0; i<N; i++) k4[i]=step*f(x+step,t3,i);
   for (i = 0; i<N; i++) y[i]+=(k1[i]+2*k2[i]+2*k3[i]+k4[i])/6.0;
 }
double f(double x, double y[], int i) 
{ //RHS equations
if (i==0) return(y[1]);           //RHS of first equation
if (i==1) return(-y[0]);          //RHS of second equation
}

It’s 4th order runger-kutta solution for harmonic oscillator, i got this from computational physics H.Landau.I don’t know how to fix this, please help me!

Столкнулся с такой задачей, где нужно реализовать свой list. По примеру из источника я в шаблонный класс включил обычный класс.

template<class T>class List {
   class Node {
   public:
    T d;
    Node *next, *prev;
        Node(T dat = 0) { d = dat; next = 0; prev = 0; }
};
    Node *pbeg, *pend;
public:
    List() { pbeg = 0; pend = 0; }
   ~List();
   void add(T d);
   Node * find(T i);
   Node * insert(T key,T d);
   bool remove(T key);
   void print();
   void print_back();
};

Без методов


Node * find(T i);
Node * insert(T key,T d);

код компилируется, а с ними нет и выдает гору ошибок типа:

Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2447 {: отсутствует заголовок функции (возможно, используется формальный список старого типа) Шаблонный_класс_вариант2 c:usersсемёнdocumentsvisual studio 2015projectsшаблонный_класс_вариант2шаблонный_класс_вариант2list.h 101
Серьезность Код Описание Проект Файл Строка Состояние подавления

Ошибка C2988 неопознанное объявление или определение шаблона Шаблонный_класс_вариант2 c:usersсемёнdocumentsvisual studio 2015projectsшаблонный_класс_вариант2шаблонный_класс_вариант2list.h 99

сама реализация методов:

template<class T> Node* List<T>::find(T i) {
   Node *pv = pbeg;
   while (pv)
   {
       if (pv->d == i)
           break;
       pv = pv->next;
   }
   return pv;
 }

  template<class T> Node * List<T>::insert(T key, T d) {
      if (Node* pkey = find(key)) {
       Node* pv = new Node(d);
       pv->next = pkey->next;
        pv->prev = pkey;
       pkey->next = pv;
       if (pkey != pend)
           (pv->next)->prev = pv;
       else
           pend = pv;
      return pv;
    }
   return 0;
  }

В чем подвох? Спасибо.

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • C241301 ошибка киа
  • C2413 солярис ошибка
  • C2413 kia ошибка
  • C2412 ошибка kia

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии