Использование кода кодовых блоков в Visual Studio - PullRequest
0 голосов
/ 25 мая 2018

Я привык писать проект C ++ в CodeBlocks, но по некоторым глупым причинам я должен показать его своему учителю в VisualStudio.Я попытался создать консольное приложение или пустой проект и скопировал туда мой основной файл, но с первым я получаю кучу ошибок, а со вторым - «Система не может найти указанный путь».Чем отличается VisualStudio?Я совсем не понимаю, что не так.Вот мой код

#include <iostream>
#include <fstream>
#include <math.h>

using namespace std;

const int kroku = 1000;

const double aa = 0; //pocatecni bod intervalu
const double bb = 1; //konečný bod intervalu

double a; //parametr

const double h = (bb - aa) / kroku; //krok

double p(double t) {  //(py')' - qy = f
return exp(a*pow(t, 2));
}

double q(double t) {
return -exp(a*pow(t, 2))*pow(a, 2)*pow(t, 2);
}

double dp(double t) {
return 2 * t*a*exp(a*pow(t, 2));
}

double y[kroku + 1]; //řešení původní rce
double dydx[kroku + 1];
double z[kroku + 1]; //řešení dílčí rce
double dzdx[kroku + 1];
double x[kroku + 1]; //rozdělení intervalu (aa, bb) po krocích h

void generateX() { //generuje hodnoty x
for (int k = 0; k <= kroku; k++) {
    x[k] = aa + k*h;
}
}

 double partial(double pp1, double pp2, double w[kroku + 1], double dwdx[kroku + 1], double v)//řešení rce (pw')' - qw = g s pp
{
  w[v] = pp1; //inicializace - počáteční podmínka
  dwdx[v] = pp2; //inicialzace - počáteční podmínka

for (int i = 0; i <= kroku; i++) { //substituce dwdx proměnná -> dwdx = (w_(n+1) - w_n)/h) && dwdx =
    w[i + 1] = h*dwdx[i] + w[i];
    dwdx[i + 1] = (h / p(aa + h*i))*(q(aa + h*i)*w[i] - dp(aa + h*i)*dwdx[i]) + dwdx[i];
}
return 0;
}

double omega1, omega2; //nové počáteční podmínky omega1 = y(x0), omega2 = y'(x0)

void print(double N[kroku + 1])
{
fstream file;
file.open("data.dat", ios::out | ios::in | ios::trunc);//otevření/vytvoření(trunc) souboru
if (file.is_open()) //zápis do souboru
{
    cout << "Writing";
    file << "#" << "X" << " " << "Y" << endl;
    for (int j = 0; j <= kroku; j++) {
        file << x[j] << " " << N[j] << endl;
    }
    file << "#end";
}
else
{
    cout << "Somethinq went wrong!";
}
file.close();
}

int main()
{
double alpha; //pocatecni podminka y(aa) = alpha
double beta; //y(bb) = beta
cout << "Assign the value of beta " << endl;
cin >> beta;
cout << "Assign the value of alpha " << endl;
cin >> alpha;
cout << "Assign the value of parameter a" << endl;
cin >> a;
double alpha1 = 0; //alpha1*p(aa)*y'(aa) - beta1*y(aa) = gamma1
                   //double alpha2 = 0; //alpha2*p(bb)*y'(bb) + beta2*y(bb) = gamma2
double beta1 = -1;
double beta2 = 1;
double gamma1 = alpha;
double gamma2 = beta;
generateX();
partial(alpha1, beta1 / p(aa), z, dzdx, aa); //(pz')'-qz = 0
omega1 = gamma2 / beta2;
omega2 = 1 / (z[kroku] * p(bb))*(gamma1 + dzdx[kroku] * p(bb));
partial(omega1, omega2, y, dydx, aa);//(py')' - qy = f = 0
print(y);
return 0;
strong text}

, когда я добавляю

#include "stdafx.h"

Я получаю четыре ошибки 2x «Выражение должно иметь целочисленный или незаданный тип enum типа« 2x »индекс не целочисленный тип» дляэти строки

    w[v] = pp1;
dwdx[v] = pp2;

Может кто-нибудь помочь мне?Большое спасибо

1 Ответ

0 голосов
/ 25 мая 2018

индекс массива v в вашей строке

w[v]

не может быть двойным.Должен быть типа с интергером.

...